Skip to content

Commit 37c6111

Browse files
MSBuild 17.0 release notes (#6971)
A lot of work was condensed into "performance improvements"
1 parent 75fad11 commit 37c6111

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed

documentation/Changelog.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,104 @@
11
# MSBuild Changelog
22

3+
## MSBuild 17.0.0
4+
5+
This version of MSBuild shipped with Visual Studio 2022 version 17.0.0 and .NET SDK 6.0.100.
6+
7+
### What's new
8+
9+
* MSBuild now reports its version as `17` and uses Visual Studio 2022 versions of tasks where appropriate.
10+
* MSBuild now targets .NET Framework 4.7.2 and .NET 6.0.
11+
* 64-bit MSBuild is now used for builds from Visual Studio.
12+
* Binary logs are smaller and have more information.
13+
* `MSBuildCopyContentTransitively` is now on by default, ensuring consistency in output folders on incremental builds.
14+
* The method `GetType()` can no longer be called in property functions.
15+
16+
### Detailed release notes
17+
18+
#### Added
19+
20+
* Intrinsic tasks now log their location (#6397). Thanks, @KirillOsenkov!
21+
* `TargetSkippedEventArgs` now has `TargetSkipReason` and `OriginalBuildEventContext` (#6402, #6577). Thanks, @KirillOsenkov!
22+
* `TaskStarted` events now log line and column (#6399). Thanks, @KirillOsenkov!
23+
* ETW trace events for PerformDependencyAnalysis (#6658), WriteLinesToFile (#6670), CopyUpToDate (#6661).
24+
* If the environment variable `MSBuildDebugEngine` is set, MSBuild will create binary logs for all operations to `MSBUILDDEBUGPATH` regardless of how it is called (#6639, #6792).
25+
* `ProjectReference`s can now negotiate `Platform` (#6655, #6724, #6889).
26+
* Tasks can now call `TaskLoggingHelper.LogsMessagesOfImportance` to determine if any attached logger would preserve a log message before constructing it (to save time in the not-being-logged case) (#6381, #6737).
27+
* Support referencing assemblies with generic attributes (#6735). Thanks, @davidwrighton!
28+
* XSD-based MSBuild IntelliSense now supports `ImplicitUsings` and `Using` items (#6755), `InternalsVisibleTo` (#6778), Windows Forms properties (#6860), `DebugType` (#6849), and `SatelliteResourceLanguages` (#6861). Thanks, @pranavkm, @DamianEdwards, @RussKie, and @drewnoakes!
29+
* Tasks can now call `TaskLoggingHelper.IsTaskInputLoggingEnabled` and avoid redundant logging of inputs (#6803).
30+
* Support extracting resource namespace from C# source that uses file-scoped namespaces (#6881).
31+
32+
#### Changed
33+
34+
* The on-disk format of serialized caches has changed (#6350, #6324, #6490, #6674).
35+
* MSBuild is now [signed with a new certificate](https://github.com/dotnet/announcements/issues/184) (#6448).
36+
* `BuildParameters.DisableInprocNode` now applies to more processes (#6400).
37+
* `VCTargetsPath` now defaults to `v170` (#6550).
38+
* MSBuild no longer logs `Building with tools version "Current"` (#6627). Thanks, @KirillOsenkov!
39+
* Text loggers now log properties and items at the end of evaluation (#6535).
40+
* `MSBuildCopyContentTransitively` is now on by default, ensuring consistency in output folders on incremental builds (#6622, #6703).
41+
* MSBuild on .NET 6 has improved task-assembly-reference fallback behavior (#6558).
42+
* MSBuild features gated on the 16.8 changewave are now nonconfigurable (#6634).
43+
* The deprecated import of `$(CoreCrossTargetingTargetsPath)` was removed (#6668). Thanks, @Nirmal4G!
44+
* Improved error message for `MSB4213` (#6640).
45+
* The method `GetType()` can no longer be called in property functions (#6769).
46+
* MSBuild is now fully NGENed by Visual Studio setup (#6764).
47+
* MSBuild (and Visual Studio) now reference `System.Text.Json` 5.0.2 (#6784). Thanks, @JakeRadMSFT!
48+
* Default to SHA2 digest for ClickOnce manifest when certificate signing algorithm is sha256/384/512 (#6882).
49+
50+
#### Fixed
51+
52+
* Solution builds should work when using the secret environment variable `MSBUILDNOINPROCNODE` (#6385).
53+
* Solution extensions can now use `BeforeTargets="ValidateSolutionConfiguration"` (#6454).
54+
* Performance improvements (#6529, #6556, #6598, #6632, #6669, #6671, #6666, #6678, #6680, #6705, #6595, #6716, #6786, #6816, #6832, #6845).
55+
* Single-file ClickOnce publish includes file association icons (#6578).
56+
* Improved robustness in error handling of libraries without resources (#6546).
57+
* Fixed missing information in `Project`'s `DebuggerDisplay` (#6650).
58+
* `ResolveAssemblyReferences` output paths are now output in normalized form (#6533).
59+
* Improved handling of satellite assemblies in ClickOnce (#6665).
60+
* Roslyn code analyzers are no longer run during XAML precompilation (#6676). Thanks, @jlaanstra!
61+
* 64-bit API callers no longer need to set `MSBUILD_EXE_PATH` (#6683, #6746).
62+
* `EvaluateStop` ETW events are now automatically correlated with `EvaluateStart` (#6725).
63+
* Evaluation time is included in text performance traces (#6725).
64+
* Add PackageDescription to `Microsoft.NET.StringTools` (#6740).
65+
* Fixed deadlock between `ExecuteSubmission` and `LoggingService` (#6717).
66+
* Narrowed conditions where MSBuild would blame NuGet for SDK resolution problems (#6742).
67+
* `CombineTargetFrameworkInfoProperties` no longer fails on portable framework names (#6699).
68+
* Avoid needless builds of `GenerateBindingRedirects` (#6726).
69+
* The solution configuration is now passed to experimental cache plugins (#6738).
70+
* Clearer errors when SDK resolvers throw exceptions (#6763).
71+
* Improved errors from `InternableString.ExpensiveConvertToString` (#6798).
72+
* Binding redirects for all `System.*` assemblies updated (#6830).
73+
* Fixed deadlock between `BuildManager` and `LoggingService` (#6837).
74+
* Log message arguments for warnings and errors (#6804). Thanks, @KirillOsenkov!
75+
* Use static CoreClrAssemblyLoader for SDK resolvers (#6864). Thanks, @marcin-krystianc!
76+
* Avoid break caused by fix and workaround for AL path colliding (#6884).
77+
* Support private-use area Unicode characters in paths passed to `XslTransformation` (#6863, #6946). Thanks, @lanfeust69!
78+
* Use the correct .NET host when called from a .NET 6.0 application (#6890).
79+
80+
#### Infrastructure
81+
82+
* This repo now builds with Arcade 6.0 (#6143).
83+
* Use newer Ubuntu versions for Linux CI builds (#6488).
84+
* MSBuild now uses [Arcade-powered source build](https://github.com/dotnet/source-build/tree/ba0b33e9f96354b8d07317c3cdf406ce666921f8/Documentation/planning/arcade-powered-source-build) (#6387).
85+
* Improved repo issue templates and automation (#6557).
86+
* Whitespace cleanup (#6565).
87+
* This repo no longer needs to double-specify the SDK version (#6596).
88+
* Simplify references to `TargetFramework` using new intrinsics (#5799).
89+
* Reference the `Microsoft.DotNet.XUnitExtensions` package from Arcade instead of our fork (#6638).
90+
* Use [`BannedApiAnalyzers`](https://www.nuget.org/packages/Microsoft.CodeAnalysis.BannedApiAnalyzers/) (#6675).
91+
* Enable analyzers for the MSBuild repo with rules similar to `dotnet/runtime` (#5656). Thanks, @elachlan!
92+
* Improved internal OptProf training scenarios (#6758).
93+
* Delete Unreachable code (#6805). Thanks, @KirillOsenkov!
94+
* Upgrade System.Net.Http package version used in tests (#6879).
95+
96+
#### Documentation
97+
98+
* Use GitHub-generated Markdown tables of contents (#6760).
99+
* Fixed validation issues in docs build (#6744).
100+
* Descriptions of labels in use in this repo (#6873).
101+
3102
## MSBuild 16.11.0
4103

5104
This version of MSBuild shipped with Visual Studio 2019 version 16.11.0 and .NET SDK 5.0.400.

0 commit comments

Comments
 (0)