Releases: dotnet/msbuild
Releases · dotnet/msbuild
MSBuild 16.11.0
MSBuild 16.11.0
This version of MSBuild shipped with Visual Studio 2019 version 16.11.0 and .NET SDK 5.0.400.
What's new
- MSBuild now supports long paths in the 64-bit
amd64\MSBuild.exe
executable. - New version properties
MSBuildFileVersion
(4-part, matches file version) andMSBuildSemanticVersion
(matches package versions) are now available for use (#6534).
Detailed release notes
Added
- Additional properties documented and available for completion in Visual Studio (#6500, #6530).
- The
SignFile
task is now available in MSBuild on .NET 5.0 (#6509). Thanks, @Zastai! - New version properties
MSBuildFileVersion
(4-part, matches file version) andMSBuildSemanticVersion
(matches package versions) are now available for use (#6534).
Changed
- When using the experimental cache API, schedule proxy builds to the in-proc node for performance (#6386).
- Experimental cache queries are now executed in parallel (#6468).
- The ETW events generated in
ResolveAssemblyReference
now include an approximation of the "size" of the RAR request (#6410).
Fixed
- Fixed memory leak in
ProjectRootElement.Reload
(#6457). - Added locking to avoid race conditions in
BuildManager
(#6412). - Allow
ResolveAssemblyReferences
precomputed cache files to be in read-only locations (#6393). - 64-bit
al.exe
is used when targeting 64-bit architectures (for real this time) (#6484). - Builds with
ProduceOnlyReferenceAssembly
no longer expect debug symbols to be produced (#6511). Thanks, @Zastai! - 64-bit
MSBuild.exe
supports long paths (and other .NET default behaviors) (#6562). - Non-graph builds no longer crash in the experimental project cache (#6568).
- The experimental project cache is initialized only once (#6569).
- The experimental project cache no longer tries to schedule proxy builds to the in-proc node (#6635).
Infrastructure
- Use a packaged C# compiler to avoid changes in reference assembly generation caused by compiler changes (#6431).
- Use more resilient test-result upload patterns (#6489).
- Conditional compilation for .NET Core within our repo now includes new .NET 5.0+ runtimes (#6538).
- Switched to OneLocBuild for localization PRs (#6561).
- Moved to latest Ubuntu image for PR test legs (#6573).
.NET 6.0 Preview 6
MSBuild 16.10.2
MSBuild 16.10.2
This version of MSBuild shipped with Visual Studio 2019 version 16.10.2 and will ship with .NET SDK 5.0.302.
Fixed
- Fixed a regression in the
MakeRelative
property function that dropped trailing slashes (#6513). Thanks, @dsparkplug and @pmisik! - Fixed a regression in glob matching where files without extension were erroneously not matched (#6531).
- Fixed a change in logging that caused crashes in Azure DevOps loggers (#6520).
.NET 6.0 Preview 5
MSBuild 16.10.1
MSBuild 16.10.1
This version of MSBuild shipped with Visual Studio 2019 version 16.10.1 and .NET SDK 5.0.301.
Fixed
- Restore support for building individual project(s) within solutions by specifying
-t:Project
(#6465).
MSBuild 16.10.0
MSBuild 16.10.0
This version of MSBuild shipped with Visual Studio 2019 version 16.10.0 and .NET SDK 5.0.300.
What's new
- MSBuild now targets .NET 5.0 and .NET Framework 4.7.2.
- MSBuild is faster and uses less memory.
- Binary logs are smaller and have less performance overhead.
- Tasks can now opt into resource management to improve parallelism in large builds.
- It's now possible to optionally embed arbitrary files in a binary log.
Known Issues ⚠
- When specifying a single project in a solution as a target, MSBuild instead tries to build that target name within all projects in the solution, leading to
MSB4057
(#6465).
Detailed release notes
Added
- Projects can now specify
AdditionalTargetFrameworkInfoProperty
items to indicate that referencing projects should get those properties exposed asAdditionalPropertiesFromProject
metadata on resolved reference items. (#5994). - The
Unzip
task now acceptsInclude
andExclude
arguments to filter what is extracted from the zip file (#6018). Thanks, @IvanLieckens! - The
-graph:noBuild
command line argument can be used to validate that a graph is buildable without actually building it (#6016). TaskParameterEventArgs
allow logging task parameters and values in a compact, structured way (#6155). Thanks, @KirillOsenkov!- ClickOnce publish now supports Ready To Run (#6244).
- .NET 5.0 applications may now specify a toolset configuration file (#6220).
ResolveAssemblyReferences
can now consume information about assemblies distributed as part of the SDK (#6017).- Allow constructing a
ProjectInstance
from aProjectLink
(#6262). - Introduce cross-process resource management for tasks (#5859).
ProjectEvaluationFinished
now has fields for properties and items (#6287). Thanks, @KirillOsenkov!WriteCodeFragment
can now write assembly attributes of specified types, and infers some common types (#6285). Thanks, @reduckted!- The
-detailedSummary
option now accepts a boolean argument, preventing dumping details to the console logger when building with-bl -ds:false
(#6338). Thanks, @KirillOsenkov! - Binary logs now include files listed in the item
EmbedInBinlog
as well as MSBuild projects (#6339). Thanks, @KirillOsenkov! - The
FindInvalidProjectReferences
task is now available in .NET Core/5.0+ scenarios (#6365).
Changed
- String deduplication is now much more sophisticated, reducing memory usage (#5663).
- Refactoring and performance improvements in
ResolveAssemblyReferences
(#5929, #6094). - Binary logs now store strings only once, dramatically reducing log size (#6017, #6326). Thanks, @KirillOsenkov!
- Refactoring and code cleanup (#6120, #6159, #6158, #6282). Thanks, @Nirmal4G!
Span<T>
-based methods are used on .NET Framework MSBuild as well as .NET 5.0 (#6130).- Improved
MSB4064
error to include information about the loaded task that didn't have the argument (#5945). Thanks, @BartoszKlonowski! - Performance improvements in inter-node communication (#6023). Thanks, @KirillOsenkov!
- Performance improvements in matching items based on metadata (#6035), property expansion (#6128), glob evaluation (#6151), enumerating files (#6227).
- When evaluated with
IgnoreInvalidImports
, empty imports are also allowed (#6222). Log.HasLoggedError
now respectsMSBuildWarningsAsErrors
(#6174).TargetPath
metadata is now respected on items that copy to output directories, and takes precedence overLink
(#6237).- The
Restore
operation now fails when SDKs are unresolvable (#6312). MSBuild.exe.config
now has explicit binding redirects for all assemblies in the MSBuild VSIX (#6334).
Fixed
- Inconsistencies between
XamlPreCompile
and theCoreCompile
C## compiler invocation (#6093). Thanks, @huoyaoyuan! - Wait for child nodes to exit before exiting the entry-point node in VSTest scenarios (#6053). Thanks, @tmds!
- Fix bad plugin EndBuild exception handling during graph builds (#6110).
- Allow specifying
UseUtf8Encoding
inToolTask
s (#6188). - Failures on big-endian systems (#6204). Thanks, @uweigand!
- 64-bit
al.exe
is used when targeting 64-bit architectures (#6207). - Improved error messages when encountering a
BadImageReferenceException
inResolveAssemblyReferences
(#6240, #6270). Thanks, @FiniteReality! - Escape special characters in
Exec
’s generated batch files, allowing builds as users with some special characters in their Windows username (#6233). - Permit comments and trailing commas in solution filter files (#6346).
- Exceptions thrown from experimental cache plugins are now handled and logged better (#6345, #6368).
- Source generators with configuration files can now be used in XamlPreCompile (#6438).
- Large builds no longer crash with an exception in
LogProjectStarted
(#6437).
Infrastructure
- Update to Arcade 5.0 and .NET 5.0 (#5836).
- The primary development branch is now named
main
. - Test robustness improvements (#6055, #6336, #6337, #6332). Thanks, @tmds and @KirillOsenkov!
- Remove unnecessary NuGet package references (#6036). Thanks, @teo-tsirpanis!
- Correctly mark .NET Framework 3.5 reference assembly package dependency as private (#6214).
- Our own builds opt into text-based performance logging (#6274).
- Update to Arcade publishing v3 (#6349).
- Use OneLocBuild localization process (#6378).
Documentation
- Updates to static graph documentation (#6043).
- Short doc on the threading model (#6042).
- Update help text to indicate that
--
is a valid argument prefix (#6205). Thanks, @BartoszKlonowski! - API documentation improvements (#6246, #6284).
- Details about interactions with the Global Assembly Cache (#6173).
MSBuild 16.9.2
MSBuild 16.9.2
This version of MSBuild shipped with Visual Studio 2019 version 16.9.7.
Fixed
- Fixed MSB0001 error when building large solutions (#6437).
.NET 6.0 Preview 4
.NET 6.0 Preview 3
MSBuild 16.9.0.2116703
MSBuild 16.9.0
⚠ This release should have been versioned 16.9.1
but was erroneously released as 16.9.0.
This version of MSBuild shipped with Visual Studio 2019 version 16.9.3.
Fixed
- Restore support for building solutions with web site projects (#6238).