Skip to content

Instantly share code, notes, and snippets.

@rainersigwald
Last active April 2, 2019 23:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rainersigwald/009627466f03964d0028e16fda633d9c to your computer and use it in GitHub Desktop.
Save rainersigwald/009627466f03964d0028e16fda633d9c to your computer and use it in GitHub Desktop.

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