Skip to content

MSBuild 15.3.409

Compare
Choose a tag to compare
@rainersigwald rainersigwald released this 14 Aug 16:23

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, and MSBuildWarningsAsMessages 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 and XMLPoke 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, and ProjectImportedEventArgs (if the environment variable MSBUILDLOGIMPORTS=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 ProjectInstances (#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 after ReloadFrom(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!