MSBuild 15.3.409
This is the version of MSBuild packaged with Visual Studio 2017 version 15.3.0 and .NET Core 2.0.0.
What's new
Highlights of this release are:
- A new BinaryLogger, allowing capturing detailed build information at dramatically lower time and space cost.
- Support for the .NET Core SDK 2.0.0.
- API changes to improve the .NET Project System/CPS experience.
Detailed release notes
Added
- Introduce a new BinaryLogger logger (#1747) which can be replayed (#1793).
MSBuildTreatWarningsAsErrors
,MSBuildWarningsAsErrors
, andMSBuildWarningsAsMessages
can be set within a project to elevate or suppress warnings (#1928).- At high verbosity, log property reassignment during evaluation (#1841).
- Support for reference assemblies (#2039).
- Introduce support for SDK resolvers, used to find the .NET Core 2.0 SDK (#2002).
- Enabled calling
Clean;Build
on multitargeted projects (#1665). - The
XMLPeek
andXMLPoke
tasks are available on .NET Core (#1732). - Enabled task factories for .NET Core (#1742).
- Public APIs for glob logic (#1794).
- Documentation of the ProjectReference protocol for SDK implementers (#1892).
[MSBuild]::IsOSPlatform()
property function (#2137).Microsoft.Build.Localization
package contains satellite assemblies for MSBuild (#2106).ProjectEvaluationStartedEventArgs
,ProjectEvaluationFinishedEventArgs
, andProjectImportedEventArgs
(if the environment variableMSBUILDLOGIMPORTS=1
) are now raised to loggers (#2135, #2142).- Evaluation time for each project is included in the Performance Summary (#2157).
ProjectLoadSettings.IgnoreEmptyImports
can be set when building programmatically to suppress errors caused by missing imports (#2171).- MSBuild can be built on RHEL 7 (#1718). Thanks, @omajid!
- Additional tests enabled for .NET Core (#2013). Thanks, @patros!
Changed
- Add default values for AppDesignerFolder property (#1606).
- Improved IntelliSense for MSBuild in Visual Studio:
- Removed internal implementation details from autocomplete (#2130).
- Better description for VersionSuffix and VersionPrefix (#1687).
- Include Content->CopyToPublishDirectory (#1922). Thanks, @tannergooding!
- Autocompletion for
<Project Sdk="">
(#2048). - Autocompletion for the
Title
property (#2076). Thanks, @tannergooding!
Directory.Build.targets
is included in multitarget projects (#1722).- Multitargeted projects execute inner builds in parallel (#1809).
GetAllGlobs
includes more information (#1871).- The FileLogger will now create a directory when a nonexistent path is specified (#1970). Thanks, @patros!
- The
Import
element now supports a semicolon-delimited list of projects (#2014). - The logo printed for command-line builds now indicates the runtime MSBuild was compiled for (#2049).
- Code generated using
WriteCodeFragment
is now marked as auto-generated (#2207). Thanks, @dasMulli!
Fixed
- Evaluation-time item
Remove
now correctly removes what was specified (#2162). - Don't throw an exception when using String.TrimEnd as a property function (#1635). Thanks, @eerhardt!
- Prefer executables to directories on PATH in ToolTask (#1535).
- Improved dependencies for NuGet packages on full framework (#1682).
CoreCompileInputs.cache
will now be cleaned correctly (#1741).- Disambiguate
CoreCompileInputs.cache
in shared-output-directory situations (#1783). Thanks, @Nazgul07! - Don't emit ANSI color codes to the console when logging through the file logger (#1827).
- Several potential problems found via static analysis (#1829, #1891, #1918). Thanks, @skhrenov!
- Fix a crash when parsing Clang/GCC errrors with no text (#1811). Thanks, @chwarr!
- Correctly return failure in multiproc
/warnaserror
builds (#1864). - Expanding a property that refers to an item no longer produces the empty string (#1896).
- Do not add a Byte Order Mark to a project when saving it (#1904).
- Preprocessing certain project structures no longer results in a stack overflow (#1909).
- Reduce torn state when building using the API and specifying
ProjectInstance
s (#1955). - Projects in the root of a Unixlike filesystem can now be built (#1954). Thanks, @patros!
Directory.Build.props
and.targets
are now automatically added to$(MSBuildAllProjects)
(#2011). Thanks, @dasMulli!- Load XamlBuildTask from the correct location from 64-bit MSBuild (#2020).
- Correct slash direction in item metadata (#2025). Thanks, @radical!
- Allow programmatic builds of mutated ProjectInstances (#2018).
GenerateResource
no longer fails when given readonly.txt
resources (#2074).- Allow custom localization and packing satellite assemblies (#2084). Thanks, @AArnott!
- Find the .NET SDK from the correct registry location when using 64-bit MSBuild (#2092).
- Performance: speed up checking timestamps on files to determine up-to-dateness (#2087).
- Performance: cache environment variable and directory lookups (#2246).
- Stop emitting summary information to
ErrorsOnly
/WarningsOnly
log files (#2110). - Allow
ToolTask
arguments to contain quotes escaped with\"
without assuming it's a path separator (enables Visual Basic) (#2114). - Fixed a problem that could allow targets to execute in a project even after it fatally errored (#2133).
MSBuildThisFileDirectory
is preserved afterReloadFrom(XmlReader)
(#2173).WinMDExp
supports long commands by using a response file not subject to Win32 command-line length limits (#2177).- .NET Core MSBuild now correctly locates task satellite assemblies (#2229).
- .NET Core MSBuild on Windows no longer fails when a project is in a non-ASCII path (#2231)
- Avoid misconfiguring third-party crypto providers (#2263). Thanks, @Jinhuafei!
- Remove spurious errors in the IDE when referencing a .NET Standard 1.x project that hasn't yet been built (#2304). Thanks @dsplaisted!
- Performance: speed up operations of the form
<I Update="@(I)" />
(#2326). - Typo and spelling fixes (#1969, #2085, #2089, #2091, #2103). Thanks, @alexxn and @nschonni!
Removed
ProjectConfigurationsInferredFromUsage
is no longer defined for C#/VB projects (#1879). Thanks, @RaulPerez1!
Additional thanks
Thanks to everyone who filed bugs or provided other feedback to us in this timeframe!