Releases: dotnet/msbuild
Releases · dotnet/msbuild
MSBuild 17.2.0
This version of MSBuild shipped in .NET SDK 6.0.300.
Auto-generated release notes:
What's Changed
- 17.2 branding by @Forgind in #7224
- Enable nullable reference types by default by @drewnoakes in #7130
- Remove all checks regarding $(MSBuildAssemblyVersion) being set or not by @dfederm in #7165
- CA1050: Declare types in namespaces by @elachlan in #7227
- Add link to VS2022 ProjectSystemTools extension by @drewnoakes in #7222
- Adds recently added ETW events to event-source.md by @Forgind in #7191
- Validate binding redirects by @Forgind in #7153
- Share read for text resource files by @rainersigwald in #7230
- Fix NU1701 warning Fixes #7212 by @Forgind in #7226
- Convert CodeAnalysis.ruleset to .globalconfig by @elachlan in #7192
- SA1023 Dereference symbol '*' should not be preceded by a space. by @elachlan in #7238
- SA1020 Increment symbol '++' should not be preceded by a space by @elachlan in #7237
- SA1015 Closing generic bracket should not be followed by a space by @elachlan in #7236
- SA1014 by @elachlan in #7235
- SA1006 A C# preprocessor-type keyword is preceded by space. by @elachlan in #7232
- SA1010 Opening square brackets should not be preceded by a space by @elachlan in #7205
- SA1004 Documentation line should begin with a space by @elachlan in #7204
- CA1827 Count() is used where Any() could be used instead to improve p… by @elachlan in #7207
- SA1125 use shorthand for Nullable types by @elachlan in #7201
- SA1520 consistent use of opening and closing braces on if statements by @elachlan in #7198
- CA1835 Prefer the 'Memory'-based overloads for 'ReadAsync' and 'Write… by @elachlan in #7184
- CA2016 Forward the 'CancellationToken' parameter to methods that take… by @elachlan in #7188
- CA1834 Consider using 'StringBuilder.Append(char)' when applicable by @elachlan in #7183
- CA1829 Use Length/Count property instead of Count() when available by @elachlan in #7182
- CA1825 Avoid zero-length array allocations by @elachlan in #7181
- Set CA1507 to Warning and fix instances of errors by @elachlan in #7176
- CA1802 Fixes and Severity to Warning by @elachlan in #7177
- SA1132 Do not combine fields by @elachlan in #7240
- Set CA1070 to Warning by @elachlan in #7231
- SA1643: Finalizer appropriate summary text by @elachlan in #7196
- Fix enum member name in resource string by @drewnoakes in #7105
- Embed EmbedInBinlog items added within targets by @KirillOsenkov in #7220
- Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 5609446 by @dotnet-bot in #7243
- Bring changewaves.md up to date by @Forgind in #7156
- Use Stack instead of Stack by @elachlan in #7253
- Disable CA1805 by @elachlan in #7251
- Enable warning on CA1050 by @elachlan in #7248
- Enable warning on SA1125 by @elachlan in #7247
- Enable warning on SA1520 by @elachlan in #7246
- Emit the BuildStop ETW event at the right time by @ladipro in #7228
- SA1002 The spacing around a semicolon is incorrect by @elachlan in #7199
- CA1836 Prefer IsEmpty over Count by @elachlan in #7185
- Random cleanup by @Forgind in #7173
- [main] Update dependencies from dotnet/roslyn by @dotnet-maestro in #7242
- Remove redundant copy of BuildRequestData.TargetNames by @dfederm in #7252
- CA5350 Do Not Use Weak Cryptographic Algorithms by @elachlan in #7233
- Disable SA1122 (Use string.Empty for empty strings) by @elachlan in #7239
- SA1519 Braces should not be omitted from multi-line child statement by @elachlan in #7276
- Enable SA1510 to Warning by @elachlan in #7275
- SA1508 A closing brace should not be preceded by a blank line by @elachlan in #7273
- SA1506 Element documentation headers should not be followed by blank … by @elachlan in #7271
- SA1408 Conditional expressions should declare precedence by @elachlan in #7269
- SA1024 Colon should be followed by a space by @elachlan in #7266
- SA1135 A using directive is not qualified by @elachlan in #7264
- SA1216 Using static directives should be placed at the correct location by @elachlan in #7265
- Remove CultureName and CultureInfo from LazyFormattedBuildEventArgs by @ladipro in #7254
- SA1136 place each enum value on its own line by @elachlan in #7203
- SA1133 Each attribute should be placed in its own set of square brackets by @elachlan in #7262
- SA1134 Each attribute should be placed on its own line of code by @elachlan in #7263
- SA1005 Single line comment should begin with a space by @elachlan in #7259
- Remove xmlns from props/targets and UTs by @dfederm in #7169
- Remove unnecessary allocations in Hash task. by @AR-May in #7162
- ItemDictionary.Enumerator has an unnecessary finalizer by @elachlan in #7211
- SA1102 Query clause should follow previous clause by @elachlan in #7261
- SA1504 All accessors should be single-line or multi-line by @elachlan in #7270
- Add targetpath metadata to file getting added to ContentWithTargetPath group by @sujitnayak in #7303
- SA1626 single-line comment which begins with three forward slashes in… by @elachlan in #7197
- SA1302 Interface names should begin with I by @elachlan in #7268
- SA1509 Opening braces should not be preceded by blank line by @elachlan in #7274
- Remove MSBuild.Engine.Corext by @rainersigwald in #7278
- Remove long-unused VS build things
by @rainersigwald in #7279 - Start windowless process for the KillTree test by @MichalPavlik in #7283
- Remove extra usings by @Forgind in #7193
- MissingRestorePropertyError by @jrdodds in #7280
- Apply source-build patches by @crummel in #7289
- [automated] Merge branch 'vs17.1' => 'main' by @dotnet-maestro-bot in #7290
- Add NuGet package READMEs by @rainersigwald in #7291
- Doc-commentify StringBuilderCache by @rainersigwald in #7295
- Reuse StringBuilders in EventArgsFormatting by @rainersigwald in #7296
- Improve the Project Cache log strings by @dfederm in #7305
- Explain perf keywords by @rainersigwald in #7307
- CA2241 Provide correct arguments to formatting methods by @elachlan in #7190
- [main] Update dependencies from nuget/nuget.client by @dotnet-maestro in #7223
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #7284
- Account for ARM64 in ProcessorArchitecture Tests by @benvillalobos in #7294
- Refactoring: use C# pattern matching for type checking & type casting. by @AR-May in #7302
- CA1823 Avoid unused private fields by @elachlan in #7180
- [main] Update dependencies from dotnet/roslyn by @dotnet-maestro in #7301
- Require VS 2022 to build this repo by @rainersigwald in #7304
- Bump Microsoft.VisualStudio.Setup.Configura...
MSBuild 17.1.0
This version of MSBuild shipped with Visual Studio 2022 17.1.0 and .NET SDK 6.0.200.
What's Changed (auto-generated)
- 17.1 branding by @benvillalobos in #6903
- Remove NoWarn for NU5125 by @rainersigwald in #6900
- Clean up minimum Windows version checks by @ladipro in #6877
- Fix EngineServices version bump check by @ladipro in #6939
- Fix EngineServices version bump check follow-up by @ladipro in #6942
- Events for SDK resolution by @rainersigwald in #6876
- [RAR] Stop removing from file cache just because an assembly is cached in process by @Forgind in #6891
- ProjectReference protocol documentation updates by @drewnoakes in #6892
- Enable NuGet static-graph restore by @rainersigwald in #6905
- Rework the only .doc file into .md by @lfmundim in #6910
- Update a namespace name in consuming-nuget-package.md by @tony-xia in #6914
- Fixed a minor typo by @tony-xia in #6915
- Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 5308962 by @dotnet-bot in #6929
- Fix typo: defailt -> default by @KirillOsenkov in #6938
- Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 5325719 by @dotnet-bot in #6951
- [automated] Merge branch 'vs17.0' => 'main' by @dotnet-maestro-bot in #6922
- Add Microsoft.IO.Redist for directory enumeration. by @AR-May in #6771
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6886
- Expander shortcut for string.LastIndexOfAny() by @KirillOsenkov in #6963
- [automated] Merge branch 'vs17.0' => 'main' by @dotnet-maestro-bot in #6965
- [main] Update dependencies from nuget/nuget.client by @dotnet-maestro in #6868
- [main] Update dependencies from dotnet/roslyn by @dotnet-maestro in #6893
- Introduce public interfaces for per-project and per-evaluation disk I/O callbacks by @ladipro in #6728
- Spurious Windows test failure in FindOnPathSucceeds by @Adityanr in #6975
- [automated] Merge branch 'vs17.0' => 'main' by @dotnet-maestro-bot in #6978
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6973
- double dash validation fix by @stanciuadrian in #6930
- Remove jnm2.ReferenceAssemblies.net35 to remove it as a prebuilt dependency for source-build by @dagood in #6966
- Eval cond perf by @Forgind in #6859
- Properly report HasLoggedErrors when converting errors into warnings by @benvillalobos in #6912
- RemoveDir returns !HasLoggedErrors by @benvillalobos in #6933
- Disable BannedApiAnalyzers during source-build to avoid a prebuilt dependency by @dagood in #6967
- ToolTasks Don't Log MSB4181 When Terminated by @benvillalobos in #6968
- Add missing match on metadata location translation by @cdmihai in #6972
- Check if Documentis null before creating elementlocation object by @yuehuang010 in #6998
- Minor allocation optimizations / cleanup by @ladipro in #6983
- Update Microsoft.Build.CommonTypes.xsd for
AnalysisLevel
andAnalysisMode
values by @mavasani in #6996 - Remove pinned .NET Framework ref assembly package: let SDK provide it by @dagood in #6986
- Simplify property/item type requirements Fixes #6985 by @Forgind in #6995
- Stop loading Microsoft.DevDiv files as read-only by @ladipro in #7007
- Simplify verify throw and remove unnecessary usings by @Forgind in #6999
- CurrentHost was not properly set when DisableInProcNode = false by @xen2 in #7013
- Use cached StringBuilder in CreateManifestResourceName by @ladipro in #7012
- Preventing warning in bootstrapper package self contained scenario by @MSLukeWest in #7009
- Attempt to prevent node explosions with parallel node creation by @Forgind in #7004
- Remove reference to .NET Core 2.1 by @rainersigwald in #7030
- MSBuild 17.0 release notes by @rainersigwald in #6971
- Enable TaskHostFactory for .NET (Core) MSBuild by @rainersigwald in #6994
- Add VS Code tasks.json by @rainersigwald in #7036
- Switch to VS 2022 pools by @rainersigwald in #6908
- Add enumeration values for CopyToOutputDirectory in XSD by @drewnoakes in #7024
- Improve globbing performance by @drewnoakes in #7040
- Update mac version for CI by @Forgind in #7039
- Update some dependencies to 6.0 versions by @rainersigwald in #7050
- [main] Update dependencies from nuget/nuget.client by @dotnet-maestro in #6988
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #6981
- RAR: Log full path of bad-image failures by @rainersigwald in #6895
- Switch to PublicApiAnalyzers by @rainersigwald in #7018
- Code cleanup: Remove references to FxCop by @ladipro in #7038
- Ship System.ValueTuple.dll to VS by @rainersigwald in #7045
- Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 5474402 by @dotnet-bot in #7060
- Disable RestoreUseStaticGraphEvaluation for source-build by @MichaelSimons in #7059
- Document MSBuildDebugEngine and other debugging doc improvements by @cdmihai in #7003
- Disable ValidateExecutableReferences by @rainersigwald in #7065
- Optimize diag level for file logger and console logger by @rokonec in #7026
- Loosen version comparisons in loading assemblies by @Forgind in #7042
- Remove closure allocation in CompositeGlob.IsMatch by @drewnoakes in #7052
- Get Microsoft SDK paths from 32-bit registry by @rainersigwald in #7048
- [main] Update dependencies from dotnet/roslyn by @dotnet-maestro in #6989
- Remove locker object from LazyFormattedBuildEventArgs by @ladipro in #7010
- Introduce Dependabot by @rainersigwald in #7046
- Fix binding redirect for System.Threading.Tasks.Dataflow by @rainersigwald in #7072
- Permit individually settable search paths by @Forgind in #7008
- Move NativeMethods and Traits to Framework by @rainersigwald in #7016
- Update System.Text.Encodings.Web binding redirect by @rainersigwald in #7077
- Drop remaining jnm2.ReferenceAssemblies.net35 references by @rainersigwald in #7076
- Revert "Disable ValidateExecutableReferences" by @rainersigwald in #7073
- Fixing bug detected by DDRIT by @rokonec in #7082
- Static graph doc clarifications by @cdmihai in #6812
- Optimized immutable files up to date checks by @rokonec in #6974
- Al.exe finds the correct tool based on platform by @benvillalobos in #7051
- Evaluator allocation optimization by @MichalPavlik in #7056
- Remove unused 'capacity' parameter for COW dictionaries by @drewnoakes in #7080
- Fix github URLs microsoft/msbuild -> dotnet/msbuild by @ladipro in #7083
- [main] Update dependencies from nuget/nuget.client by @dotnet-maestro in #7091
- Fixed test that is dependent on current regional settings by @MichalPavlik in #7087
- [main] Update dependencies from dotnet/arcade by @dotnet-maestro in #7081
- Add NoWarn t...
.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).