Releases: dotnet/msbuild
MSBuild 16.0.461
MSBuild 16.0
This version of MSBuild shipped with Visual Studio 2019 version 16.0.
What's new
Highlights of this release are:
MSBuildToolsVersion
is nowCurrent
. Choose the version of tools and build logic you wish to use by selecting from different MSBuild instances, rather than specifyingToolsVersion
.- MSBuild now targets .NET 4.7.2.
- MSBuild now has options to treat a build as a directed acyclic graph of projects. This is an experimental feature. Its public interface may change before it is stabilized.
Detailed release notes
Added
- Static graph features are available in an experimental form.
- Interactive mode (#3697).
CopyDocumentationFileToOutputDirectory
is now respected (#3664). Thanks @jflepp!ToolLocationHelper.GetFoldersInVSInstalls
,GetFoldersInVSInstallsAsString
andFindRootFolderWhereAllFilesExist
enable using toolsets from another Visual Studio install for C++ (#3824). Thanks, @olgaark!- Metadata may be specified as attributes in
ItemDefinitionGroup
s (#3853). Thanks, @dasMulli! - Attempting to override a property that is immutable because it was set as a global property now emits an info message (#3958, #4154).
GetFileHash
andVerifyFileHash
tasks can be used to get (non-cryptographic) hashes of file contents during the build (#3398, #3999). Thanks, @natemcmaster and @iainnicol!
Changed
- The
Copy
task now logs absolute source and destination paths (#3506). - MSBuild.exe now supports long paths on Windows (but see caveats) (#3507, #3631, #3503).
- MSBuild NuGet packages now contain SemVer2 information (#3557).
- Uncaught exceptions thrown in
ToolTask
s now log the full stack trace (#3576). - The
MSBuildAllProjects
property now automatically lists the most-recently-modified imported project first (#3605). - MSBuild attempts to log errors that resulted in a diagnostic stack dump (#3632). Thanks @danmosemsft!
- MSBuild now targets .NET 4.7.2 (#3902).
- Workflow build task binding redirects updated to 16.0 (#3737). Thanks @XinxingLiu!
$(MSBuildToolsVersion)
is nowCurrent
. Select a different ToolsVersion by changing the entry-pointMSBuild.exe
or MSBuild assembly that is invoked (#3828).BuildEventArgsReader
is now public (#3814). Thanks @daveaglick!- Help text now consistently uses
-argument
instead of/argument
form. Both continue to be supported at runtime (#3785). Thanks, @dasMulli! WriteLinesToFile
will now create the target directory if necessary (#4067). Thanks, @CodeTherapist!- Appx-related properties are now available for autocompletion (#4093).
Removed
- MSBuild packages no longer include
netcoreapp2.0
--onlynetcoreapp2.1
(#3528).
Fixed
- Replaying a binary log file is now cancellable with
ctrl-c
(#3518). - MSBuild now treats unqualified metadata references case-insensitively like other metadata references (#3516). Thanks, @MeikTranel!
ToolLocationHelper.GetPathToReferenceAssemblies
is now thread-safe (#3537). Thanks, @AntonLapounov!- MSBuild on .NET Core now finds
AssemblyFiles
(#3578). - Performance improvements in
ResolveAssemblyReferences
(#3700, #3660, #3950, #3989, #3977), glob handling (#3652), item access (#3738, #3749), path handling (#3969), and needless allocations (#4079). - Better error in .NET Core MSBuild when attempting to resolve a reference from a zero-byte file (#3708).
- Avoid a race condition in parallel multi-app-domain build requests (#3713). Thanks, @jeromelaban!
- Improved handling of MSBuild DLL loading in .NET Core (#3900). Thanks @JoeRobich!
- CoreCompile will run when
DefineConstants
has changed as a result of a property input (#3978). Thanks, @dasMulli! - Fixed a crash in the evaluation profiler when evaluation is too fast (#3981). Thanks, @xoofx!
- The
ResolveCOMReference
task now emits an error when it is run from an unsupported environment (#3987). Thanks @AaronRobinsonMSFT! - Better errors from
ToolTask
s that have bad parameters (#3970). WriteCodeFragment
can now emit positional parameters with the same value (#3974). Thanks, @dasMulli!- The Visual Basic file containing the assembly target framework attribute is now marked as generated (#4011).
GenerateResource
no longer attempts to use the Windows registry on non-Windows platforms (#3831). Thanks, @mfilippov!Copy
can now overwrite outputs when used with hardlinks (#3997). Thanks, @marcin-krystianc!- Fixed false positive when caching glob enumerations (#4007).
- Explicitly specify default SHA-1 in manifest signing (#4042). Thanks, @sidiesen!
- Case is ignored when hashing compiler inputs (#4055).
- Log the correct
SubmissionId
for evaluationBuildEventContext
s (#4048). Thanks @KirillOsenkov! - Disambiguate directories and files in existence checks (#4059).
- Improved error message for
MSB4189
(#3772). Thanks, @msschl! .csproj.user
files are no longer always modified after save (#4148).- MSBuild's VSIX depends on NuGet, eliminating errors that arose from some Visual Studio installation configurations (#4159).
RoslynCodeTaskFactory
now works on .NET Core without manually copying additional files (#3944).
Infrastructure
- MSBuild now uses Azure Pipelines for CI and PR builds.
- MSBuild is now built using arcade.
- XLF localization files are now normalized (#3568). Thanks, @dasMulli!
- Better support for having the MSBuild repo in a path with spaces (#3830). Thanks @mfilippov!
- Improved testing of the
Copy
task (#3998). Thanks, @marcin-krystianc!
Documentation
Improvements from @xsoheilalizadeh (#3559), @davidchoy98 (#3565), @isiahto (#3692), @daveaglick (#3729), and @kelewis (#3910). Thank you!
MSBuild 15.9.20
This version of MSBuild shipped with Visual Studio 2017 15.9.0.
Detailed release notes
Added
- MSBuild now respects the global property
NuGetInteractive=true
, allowing private feeds for SDK resolution (#3621) - Added
AspNetCoreHostingModel
andAspNetCoreModuleName
to project IntelliSense (#3773, thanks @jkotalik)
Changed
- The evaluation context is now respected in some property functions (#3502)
- Updated culture list including Windows pseudo-locales (#3654, thanks @martincostello)
Fixed
- Performance of some property-function invocations was improved (#3509)
- Fixed race condition in ToolLocationHelper (#3537, thanks @AntonLapounov)
- Performance improvements in path operations on non-Windows OSes (#3547)
- Stop propagating
TargetFramework
to projects that were specified as solution build dependencies (#3628, thanks @dasMulli) - Removed assumption that
Enumerable.Empty
was anIList
, enabling running on .NET Core 3.0 runtimes (#3836, thanks @kacollins) - Fix some edge cases of COM references (#3826, thanks @sidiesen)
Additional thanks
Thanks to everyone who filed bugs or provided other feedback to us in this timeframe!
MSBuild 15.7.180
This version of MSBuild shipped with Visual Studio 2017 version 15.7.5.
MSBuild 15.1.550
This tag corresponds to the version of MSBuild packaged with Visual Studio 2017 15.0.15.
MSBuild 15.4.8
This is the version of MSBuild packaged with Visual Studio 2017 version 15.4.0 and .NET Core 2.0.2.
Notes
This release contains only very minor tweaks (#2542, #2494, and #2454) to support improvements in Visual Studio.
MSBuild 15.3.407
This is the version of MSBuild packaged with Visual Studio 2017 version 15.3.0 Preview 5.
MSBuild 15.3.402
This is the version of MSBuild packaged with Visual Studio 2017 version 15.3.0 Preview 4 (build 26621.2).
MSBuild 15.3.388
This is the version of MSBuild packaged with Visual Studio 2017 version 15.3.0 Preview 3 (build 26621.2) and .NET Core 2.0.0 Preview 2.
MSBuild 15.3.255
This is the version of MSBuild packaged with Visual Studio 2017 (version 15.3) Preview 2 (build 26606.0).
MSBuild 15.3.118
This is the version of MSBuild packaged with Visual Studio 2017 (version 15.3) Preview (build 26507.0).