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
值。SDK35ToolsPath
和SDK40ToolsPath
属性指向与此版 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" />