Releases: dotnet/msbuild
Releases · dotnet/msbuild
.NET 7.0 Preview 3
.NET 7.0 Preview 2
MSBuild 17.1.1
This version of MSBuild shipped with .NET SDK 6.0.202 and includes a fix for dotnet/sdk#23498.
What's Changed
- Revert "Loosen version comparisons in loading assemblies (#7042)" by @rainersigwald in #7415
- Update official build references to tasks and pools that recently started failing by @rainersigwald in #7416
Full Changelog: v17.1.0...v17.1.1
.NET 7.0 Preview 1
.NET 6.0
MSBuild 17.0.0
This version of MSBuild shipped with Visual Studio 2022 version 17.0.0 and .NET SDK 6.0.100.
What's new
- MSBuild now reports its version as
17
and uses Visual Studio 2022 versions of tasks where appropriate. - MSBuild now targets .NET Framework 4.7.2 and .NET 6.0.
- 64-bit MSBuild is now used for builds from Visual Studio.
- Binary logs are smaller and have more information.
MSBuildCopyContentTransitively
is now on by default, ensuring consistency in output folders on incremental builds.- The method
GetType()
can no longer be called in property functions.
Detailed release notes
Added
- Intrinsic tasks now log their location (#6397). Thanks, @KirillOsenkov!
TargetSkippedEventArgs
now hasTargetSkipReason
andOriginalBuildEventContext
(#6402, #6577). Thanks, @KirillOsenkov!TaskStarted
events now log line and column (#6399). Thanks, @KirillOsenkov!- ETW trace events for PerformDependencyAnalysis (#6658), WriteLinesToFile (#6670), CopyUpToDate (#6661).
- If the environment variable
MSBuildDebugEngine
is set, MSBuild will create binary logs for all operations toMSBUILDDEBUGPATH
regardless of how it is called (#6639, #6792). ProjectReference
s can now negotiatePlatform
(#6655, #6724, #6889).- 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). - Support referencing assemblies with generic attributes (#6735). Thanks, @davidwrighton!
- XSD-based MSBuild IntelliSense now supports
ImplicitUsings
andUsing
items (#6755),InternalsVisibleTo
(#6778), Windows Forms properties (#6860),DebugType
(#6849), andSatelliteResourceLanguages
(#6861). Thanks, @pranavkm, @DamianEdwards, @RussKie, and @drewnoakes! - Tasks can now call
TaskLoggingHelper.IsTaskInputLoggingEnabled
and avoid redundant logging of inputs (#6803). - Support extracting resource namespace from C# source that uses file-scoped namespaces (#6881).
Changed
- The on-disk format of serialized caches has changed (#6350, #6324, #6490, #6674).
- MSBuild is now signed with a new certificate (#6448).
BuildParameters.DisableInprocNode
now applies to more processes (#6400).VCTargetsPath
now defaults tov170
(#6550).- MSBuild no longer logs
Building with tools version "Current"
(#6627). Thanks, @KirillOsenkov! - Text loggers now log properties and items at the end of evaluation (#6535).
MSBuildCopyContentTransitively
is now on by default, ensuring consistency in output folders on incremental builds (#6622, #6703).- MSBuild on .NET 6 has improved task-assembly-reference fallback behavior (#6558).
- MSBuild features gated on the 16.8 changewave are now nonconfigurable (#6634).
- The deprecated import of
$(CoreCrossTargetingTargetsPath)
was removed (#6668). Thanks, @Nirmal4G! - Improved error message for
MSB4213
(#6640). - The method
GetType()
can no longer be called in property functions (#6769). - MSBuild is now fully NGENed by Visual Studio setup (#6764).
- MSBuild (and Visual Studio) now reference
System.Text.Json
5.0.2 (#6784). Thanks, @JakeRadMSFT! - Default to SHA2 digest for ClickOnce manifest when certificate signing algorithm is sha256/384/512 (#6882).
Fixed
- Solution builds should work when using the secret environment variable
MSBUILDNOINPROCNODE
(#6385). - Solution extensions can now use
BeforeTargets="ValidateSolutionConfiguration"
(#6454). - Performance improvements (#6529, #6556, #6598, #6632, #6669, #6671, #6666, #6678, #6680, #6705, #6595, #6716, #6786, #6816, #6832, #6845).
- Single-file ClickOnce publish includes file association icons (#6578).
- Improved robustness in error handling of libraries without resources (#6546).
- Fixed missing information in
Project
'sDebuggerDisplay
(#6650). ResolveAssemblyReferences
output paths are now output in normalized form (#6533).- Improved handling of satellite assemblies in ClickOnce (#6665).
- Roslyn code analyzers are no longer run during XAML precompilation (#6676). Thanks, @jlaanstra!
- 64-bit API callers no longer need to set
MSBUILD_EXE_PATH
(#6683, #6746). EvaluateStop
ETW events are now automatically correlated withEvaluateStart
(#6725).- Evaluation time is included in text performance traces (#6725).
- Add PackageDescription to
Microsoft.NET.StringTools
(#6740). - Fixed deadlock between
ExecuteSubmission
andLoggingService
(#6717). - Narrowed conditions where MSBuild would blame NuGet for SDK resolution problems (#6742).
CombineTargetFrameworkInfoProperties
no longer fails on portable framework names (#6699).- Avoid needless builds of
GenerateBindingRedirects
(#6726). - The solution configuration is now passed to experimental cache plugins (#6738).
- Clearer errors when SDK resolvers throw exceptions (#6763).
- Improved errors from
InternableString.ExpensiveConvertToString
(#6798). - Binding redirects for all
System.*
assemblies updated (#6830). - Fixed deadlock between
BuildManager
andLoggingService
(#6837). - Log message arguments for warnings and errors (#6804). Thanks, @KirillOsenkov!
- Use static CoreClrAssemblyLoader for SDK resolvers (#6864). Thanks, @marcin-krystianc!
- Avoid break caused by fix and workaround for AL path colliding (#6884).
- Support private-use area Unicode characters in paths passed to
XslTransformation
(#6863, #6946). Thanks, @lanfeust69! - Use the correct .NET host when called from a .NET 6.0 application (#6890).
Infrastructure
- This repo now builds with Arcade 6.0 (#6143).
- Use newer Ubuntu versions for Linux CI builds (#6488).
- MSBuild now uses Arcade-powered source build (#6387).
- Improved repo issue templates and automation (#6557).
- Whitespace cleanup (#6565).
- This repo no longer needs to double-specify the SDK version (#6596).
- Simplify references to
TargetFramework
using new intrinsics (#5799). - Reference the
Microsoft.DotNet.XUnitExtensions
package from Arcade instead of our fork (#6638). - Use
BannedApiAnalyzers
(#6675). - Enable analyzers for the MSBuild repo with rules similar to
dotnet/runtime
(#5656). Thanks, @elachlan! - Improved internal OptProf training scenarios (#6758).
- Delete Unreachable code (#6805). Thanks, @KirillOsenkov!
- Upgrade System.Net.Http package version used in tests (#6879).
Documentation
.NET 5.0.11
.NET 6.0 RC 1
.NET 6.0 Preview 7
MSBuild 16.11.0
MSBuild 16.11.0
This version of MSBuild shipped with Visual Studio 2019 version 16.11.0 and .NET SDK 5.0.400.
What's new
- MSBuild now supports long paths in the 64-bit
amd64\MSBuild.exe
executable. - New version properties
MSBuildFileVersion
(4-part, matches file version) andMSBuildSemanticVersion
(matches package versions) are now available for use (#6534).
Detailed release notes
Added
- Additional properties documented and available for completion in Visual Studio (#6500, #6530).
- The
SignFile
task is now available in MSBuild on .NET 5.0 (#6509). Thanks, @Zastai! - New version properties
MSBuildFileVersion
(4-part, matches file version) andMSBuildSemanticVersion
(matches package versions) are now available for use (#6534).
Changed
- When using the experimental cache API, schedule proxy builds to the in-proc node for performance (#6386).
- Experimental cache queries are now executed in parallel (#6468).
- The ETW events generated in
ResolveAssemblyReference
now include an approximation of the "size" of the RAR request (#6410).
Fixed
- Fixed memory leak in
ProjectRootElement.Reload
(#6457). - Added locking to avoid race conditions in
BuildManager
(#6412). - Allow
ResolveAssemblyReferences
precomputed cache files to be in read-only locations (#6393). - 64-bit
al.exe
is used when targeting 64-bit architectures (for real this time) (#6484). - Builds with
ProduceOnlyReferenceAssembly
no longer expect debug symbols to be produced (#6511). Thanks, @Zastai! - 64-bit
MSBuild.exe
supports long paths (and other .NET default behaviors) (#6562). - Non-graph builds no longer crash in the experimental project cache (#6568).
- The experimental project cache is initialized only once (#6569).
- The experimental project cache no longer tries to schedule proxy builds to the in-proc node (#6635).
Infrastructure
- Use a packaged C# compiler to avoid changes in reference assembly generation caused by compiler changes (#6431).
- Use more resilient test-result upload patterns (#6489).
- Conditional compilation for .NET Core within our repo now includes new .NET 5.0+ runtimes (#6538).
- Switched to OneLocBuild for localization PRs (#6561).
- Moved to latest Ubuntu image for PR test legs (#6573).