Skip to content

Instantly share code, notes, and snippets.

@rainersigwald rainersigwald/relnotes-16.0.md Secret
Last active Apr 2, 2019

Embed
What would you like to do?

MSBuild 16.0

This version of MSBuild shipped with Visual Studio 2019 version 16.0.

What's new

Highlights of this release are:

  • MSBuild now targets .NET 4.7.2.
  • TBD Graph + Experimental namespace
  • Current

Detailed release notes

Added

  • Graph
  • Interactive mode (#3697).
  • CopyDocumentationFileToOutputDirectory is now respected (#3664). Thanks @jflepp!
  • ToolLocationHelper.GetFoldersInVSInstalls, GetFoldersInVSInstallsAsString and FindRootFolderWhereAllFilesExist enable using toolsets from another Visual Studio install for C++ (#3824). Thanks, @olgaark!
  • Metadata may be specified as attributes in ItemDefinitionGroups (#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 and VerifyFileHash 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 ToolTasks 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).
  • Command-line builds ignore XML comments in projects and imports for improved performance (#3584).
  • Workflow build task binding redirects updated to 16.0 (#3737). Thanks @XinxingLiu!
  • $(MSBuildToolsVersion) is now Current. Select a different ToolsVersion by changing the entry-point MSBuild.exe or MSBuild DLL 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!

Deprecated

Removed

  • MSBuild packages no longer include netcoreapp2.0--only netcoreapp2.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), 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 ToolTasks 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 evaluation BuildEventContexts (#4048). Thanks @KirillOsenkov!
  • Disambiguate directories and files in existence checks (#4059).
  • Improved error message for MSB4189 (#3772). Thanks, @msschl!

Security

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), @kelewis (#3910),

966cdf2ac <Svet Bonev> Add appx-related properties to the CommonTypes schema (#4093)
65bdb3ba2 <Rainer Sigwald> Expect Roslyn tasks in Current (#4138)
845d3e479 <Rainer Sigwald> Leave ProjectExtensionsElement if namespace is only diff (#4148)
ed518058b <Rainer Sigwald> VSIX dependency on NuGet.BuildTools (#4159)
391585f37 <Rainer Sigwald> Pack ref assemblies with all TFs (#3944)
5af22c22e <Rainer Sigwald> Allow numeric comparison of $(MSBuildToolsVersion) (#4158)
* f36bc5f94 - Remove ibc merge package version from versions.props. (#4171) (7 weeks ago) <Livar>
* 0da7e4832 - LOC CHECKIN | Microsoft/msbuild vs16.0 | 20190213 (#4170) (7 weeks ago) <Zbyněk Sailer>
* 5775d0d6b - Release package versioning for 16.0 (#4187) (6 weeks ago) <Rainer Sigwald>
|/  
| * 424bea34a - Switching OptProf tests to the same we used in OptProf v1 (5 weeks ago) <Livar>
| * 2a7e24549 - Adding a couple more test. (5 weeks ago) <Livar>
| * f0f0a1a26 - Removing the extra tests (5 weeks ago) <Livar>
|\  
*   b7a500dc8 - Merge pull request #4204 from Microsoft/update_opt_prof_scenarios (4 weeks ago) <Livar>
* 86ff63b5d - Change to VSPE.OptProfTests (#4211) (4 weeks ago) <Livar>
|/  
| * acc72e1dd - (ssh/bump-version-for-optprof, origin/bump-version-for-optprof) Bump version to rebuild with updated optprof data (4 weeks ago) <Rainer Sigwald>
|/|   
| |/  
|\ \  
* |   a8dc7f1d3 - Merge pull request #4214 from rainersigwald/bump-version-for-optprof (4 weeks ago) <Livar>
| * ecbeb8182 - Capture output in Exec tests (4 weeks ago) <Rainer Sigwald>
| * 6e4048e0e - Regression test for #4210 (4 weeks ago) <Rainer Sigwald>
| * 873c127e0 - Unconditionally use XmlTextReader (4 weeks ago) <Rainer Sigwald>
|\  
*   01bae6224 - Merge pull request #4213 from rainersigwald/newlines-in-task-arguments (4 weeks ago) <Rainer Sigwald>
|/  
| * 5a83718df - Updating the version of SignTool to one that properly strong name signs amd64 bits. (8 days ago) <Livar>
|/|   
| |/  
| | * 7a7a35ae5 - Disable tests with ActiveIssue attributes (#4099) (2 weeks ago) <Rainer Sigwald>
| | * 917b7a5f4 - Condition MAX_PATH-behavior tests (2 weeks ago) <Rainer Sigwald>
| | * 6cc9e010e - Diagnosability for MSBuildTask_Tests.ProjectItemSpecTooLong (2 weeks ago) <Rainer Sigwald>
| | * a9bd6b2ca - Disable failing ProjectItemSpecTooLong test (2 weeks ago) <Rainer Sigwald>
| | * 1b9c27df8 - Disable tests that fail due to GetFileAttributesEx+MAX_PATH behavior (2 weeks ago) <Rainer Sigwald>
| | * 77de18cdf - Tune DirectoryExistsNoThrowTooLongWithDotsRelative (2 weeks ago) <Rainer Sigwald>
| |\  
| *   60f185e69 - Merge long-path test fixes (8 days ago) <Rainer Sigwald>
| * 13ec5ff5a - Remove YAML variable definitions (#4253) (8 days ago) <Rainer Sigwald>
|\  
*   6ff56ef63 - (HEAD, tag: v16.0.461.62831, Microsoft/vs16.0) Merge pull request #4267 from livarcocc/update_signtool_version_160 (8 days ago) <Livar>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.