MSBuild 15 中的新增功能

MSBuild 现已推出,属于 .NET Core SDK,且可在 Windows、macOS 和 Linux 上生成 .NET Core 项目。

更改的路径

MSBuild 现安装于每版 Visual Studio 下的文件夹中。 例如,C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild。 也可使用下面的 PowerShell 模块查找 MSBuild:vssetup.powershell

全局程序集缓存中不再安装 MSBuild。 若要以编程方式引用 MSBuild,请使用 NuGet 包。 有关详细信息,请参阅更新 MSBuild 15.0 的现有应用程序

更改的属性

下列 MSBuild 属性已因新版本号而更新。

  • 此版工具的 MSBuildToolsVersion 为 15.0。 程序集版本为 15.1.0.0。

  • MSBuildToolsPath 不再具有固定位置。 默认情况下,该文件位于与 Visual Studio 安装位置相对的 MSBuild\15.0\Bin 文件夹中,但 Visual Studio 安装位置可在安装时进行更改。

  • 注册表中不再设置 ToolsVersion 值。

  • SDK35ToolsPathSDK40ToolsPath 属性指向与此版 Visual Studio 一起打包的 .NET Framework SDK(例如,对于 4.X 工具,则指向 10.0A)。

更新

  • 项目元素具有新的 SDK 属性。 此外,Xmlns 属性现也是可选项。 有关 SDK 属性的详细信息,请参阅如何:使用 MSBuild 项目 SDK包、元包和框架;以及 .NET Core 的 csproj 格式的新增内容
  • 目标外的项元素具有新的 Update 属性。 此外,已放弃对 Remove 属性的限制。
  • Directory.Build.props 和 Directory.Build.targets 是用户定义的文件,它们为目录下的项目提供自定义项。 除非属性 ImportDirectoryBuildProps 设为 false,否则 Directory.Build.props 将从 Microsoft.Common.props 自动导入。 除非属性 ImportDirectoryBuildTargets 设为 false,否则 Directory.Build.target 将由 Microsoft.Common.targets 自动导入。
  • 名称不与当前属性列表冲突的元数据可选择性地表示为属性。 有关详细信息,请参阅项元素

新的属性函数

  • 如果 EnsureTrailingSlash 尚不存在,它将向路径添加尾部斜杠。
  • NormalizePath 组合路径元素,并确保输出字符串具有当前操作系统的正确目录分隔符字符。
  • NormalizeDirectory 组合路径元素、确保尾部斜杠,并确保输出字符串具有当前操作系统的正确目录分隔符字符。
  • GetPathOfFileAbove 返回此文件前紧邻的文件的路径。 它在功能上等效于调用 <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />