|
1 | 1 | # MSBuild Changelog
|
2 | 2 |
|
| 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 | + |
3 | 102 | ## MSBuild 16.11.0
|
4 | 103 |
|
5 | 104 | This version of MSBuild shipped with Visual Studio 2019 version 16.11.0 and .NET SDK 5.0.400.
|
|
0 commit comments