Skip to content

Add MSBuild app host design#12857

Merged
YuliiaKovalova merged 9 commits intomainfrom
dev/ykovalova/msbuild_app_host
Jan 30, 2026
Merged

Add MSBuild app host design#12857
YuliiaKovalova merged 9 commits intomainfrom
dev/ykovalova/msbuild_app_host

Conversation

@YuliiaKovalova
Copy link
Member

@YuliiaKovalova YuliiaKovalova commented Dec 2, 2025

The PR contains a spec to describe App host design for MSBuild in sdk.

Part of #12995.

Clarify COM interop support and manifest requirements for MSBuild app host.
Added important considerations regarding MSBuild invocation modes and their behavior with AppHost.
@YuliiaKovalova YuliiaKovalova self-assigned this Dec 3, 2025
@YuliiaKovalova YuliiaKovalova marked this pull request as ready for review December 4, 2025 14:23
Copilot AI review requested due to automatic review settings December 4, 2025 14:23
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a comprehensive design document for MSBuild app host support, which aims to enable MSBuild to be invoked as a native executable rather than through dotnet MSBuild.dll. This design supports better process identification, enables COM manifest embedding for registration-free COM support (particularly for ITaskHost interface), and aligns MSBuild with Roslyn compilers which already use app hosts.

Key Changes

  • Comprehensive specification for app host implementation covering purpose, technical details, and implementation requirements
  • Documentation of COM manifest requirements for registration-free COM support
  • Detailed backward compatibility strategy with fallback to existing dotnet MSBuild.dll invocation
  • Runtime discovery solution using DOTNET_ROOT environment variable

JanProvaznik added a commit that referenced this pull request Dec 5, 2025
### Context

Docs-only PRs fail the Code Coverage CI job because tests are skipped
(no coverage artifacts generated), but the job unconditionally attempts
to download and publish those artifacts.

### Changes Made

Modified `.vsts-dotnet-ci.yml` CodeCoverage job to respect the
`onlyDocChanged` flag:

- Added dependency on `IfOnlyDocumentionChanged` job to access the flag
- Added `onlyDocChanged` variable to job variables
- Conditioned all artifact downloads on `eq(variables.onlyDocChanged,
0)`
- Conditioned coverage processing and publishing on
`eq(variables.onlyDocChanged, 0)`

This aligns with how other jobs (BootstrapMSBuildOnFullFrameworkWindows,
CoreBootstrappedOnLinux, etc.) already handle docs-only PRs.

### Testing

Pipeline configuration change - will be validated on next PR run. When
`onlyDocChanged = 1`, all coverage tasks skip; when `onlyDocChanged =
0`, coverage runs normally.

### Notes

Pre-existing typos in job/variable names (`Documention`, `Varibale`)
intentionally preserved for consistency across the pipeline.

<!-- START COPILOT CODING AGENT SUFFIX -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>docs only PRs fail code coverage CI check</issue_title>
> <issue_description>#12805
> #12857
> 
> ```
> Code Coverage failed
> [3 errors / 0
warnings](https://dev.azure.com/dnceng-public/cbb18261-c48f-4abb-8651-8cdcb5474649/_build/results?buildId=1217301)
> 
> Annotations
> [Check failure on line 9 in Build
log](https://github.com/dotnet/msbuild/pull/12857/files#annotation_42398343450)
> 
> @azure-pipelines
> azure-pipelines
> / msbuild-pr (Code Coverage)
> Build log #L9
> 
> Publishing build artifacts failed with an error: Not found
PathtoPublish: D:\a\1\s\artifacts\CoverageResults\merged.coverage
> [Check failure on line 11 in Build
log](https://github.com/dotnet/msbuild/pull/12857/files#annotation_42398343487)
> 
> @azure-pipelines
> azure-pipelines
> / msbuild-pr (Code Coverage)
> Build log #L11
> 
> Artifact LinuxCoreCoverage was not found for build 1217301.
> [Check failure on line 9 in Build
log](https://github.com/dotnet/msbuild/pull/12857/files#annotation_42398343497)
> 
> @azure-pipelines
> azure-pipelines
> / msbuild-pr (Code Coverage)
> Build log #L9
> 
> Publishing build artifacts failed with an error: Not found
PathtoPublish: D:\a\1\s\artifacts\CoverageResults\merged.cobertura.xml
> ```
> 
> This is probably because testing is skipped on docs only PRs, in that
case code coverage should also be skipped</issue_description>
> 
> <agent_instructions>fix this issue, note that the CI pipeline
definition is called .vsts-dotnet-ci.yml</agent_instructions>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>

- Fixes #12878

<!-- START COPILOT CODING AGENT TIPS -->
---

✨ Let Copilot coding agent [set things up for
you](https://github.com/dotnet/msbuild/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JanProvaznik <[email protected]>
@YuliiaKovalova YuliiaKovalova merged commit ae4609e into main Jan 30, 2026
9 checks passed
@YuliiaKovalova YuliiaKovalova deleted the dev/ykovalova/msbuild_app_host branch January 30, 2026 14:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants