使用MSBuild 15.0的BuildMaster

使用MSBuild 15.0的BuildMaster,msbuild,buildmaster,Msbuild,Buildmaster,如何在服务器上以MSBuild 15.0为目标?我在服务器上安装了15.0,但我的项目仍在使用14.0构建。我知道Microsoft对目录位置做了一些更改,不再使用15.0版本的注册表值 我发现15.0安装在以下位置: C:\ProgramFiles(x86)\MSBuild\15.0 C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild 我在这里安装了.Net framework 4.6.2: “C:\Wind

如何在服务器上以MSBuild 15.0为目标?我在服务器上安装了15.0,但我的项目仍在使用14.0构建。我知道Microsoft对目录位置做了一些更改,不再使用15.0版本的注册表值

我发现15.0安装在以下位置:
C:\ProgramFiles(x86)\MSBuild\15.0
C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild

我在这里安装了.Net framework 4.6.2: “C:\Windows\Microsoft.NET\Framework64\v4.0.30319”

谢谢

产品:BuildMaster
版本:5.7.2



更新1:

响应@emiel koning,我尝试在生成步骤中使用以下命令指定$MSBuildToolsPath:

set$MSBuildToolsPath=C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin

但是我得到了这个错误:
错误MSB4226:未找到导入的项目“C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets”。此外,尝试在$(VSToolsPath)-“C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v15.0”的回退搜索路径中查找“WebApplications\Microsoft.WebApplication.targets”。这些搜索路径在“C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe.Config”中定义。确认声明中的路径正确,并且文件存在于磁盘上的某个搜索路径中

更新2:

我的生成服务器上可能缺少安装的内容吗?我安装了,它提供了MSBuild 15.0,但没有提供上述错误中的WebApplication.targets文件



解决方案
我还通过安装“Web开发构建工具”组件来解决我的问题。我还在服务器级别设置$MSBuildToolsPath,直到可以全局推出新的MSBuild。

通常,这由项目文件的
ToolsVersion
属性处理。如果未指定以下配置,则应使用此选项


特别是在BuildMaster中,您可以在“管理”>“BuildMaster扩展”>“Windows SDK”>“配置”选项卡上覆盖每台服务器的此值。单击值为
C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin的

对更新#1和#2的响应: 首先,不要在计划本身中设置该变量(否则您必须在每个计划中设置它)。按照我上面描述的方式设置它。就我个人而言,我总是在服务器级别指定它的值,因为每个服务器可能安装在不同的位置


至于Microsoft.WebApplication.targets,我认为构建web应用程序项目唯一受支持的方法是在构建服务器上安装Visual Studio;虽然在过去,我只是将本地安装(C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications)中的目标复制到MSBuild期望的路径中。

一般来说,这是由项目文件的
ToolsVersion
属性处理的。如果未指定以下配置,则应使用此选项


特别是在BuildMaster中,您可以在“管理”>“BuildMaster扩展”>“Windows SDK”>“配置”选项卡上覆盖每台服务器的此值。单击值为
C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin的

对更新#1和#2的响应: 首先,不要在计划本身中设置该变量(否则您必须在每个计划中设置它)。按照我上面描述的方式设置它。就我个人而言,我总是在服务器级别指定它的值,因为每个服务器可能安装在不同的位置


至于Microsoft.WebApplication.targets,我认为构建web应用程序项目唯一受支持的方法是在构建服务器上安装Visual Studio;尽管过去我只是从本地安装(C:\Program Files(x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications)复制了目标请注意,
ToolsVersion
属性仅帮助查找已安装的工具集,而不是MSBuild版本本身。这对于依赖新文件语法和功能的msbuild 15+项目至关重要,例如.NET Core项目。有趣的是,这可以解释为什么它很少对我起作用(并且我总是指定使用哪一个)。来自:“当在项目文件中定义ToolsVersion值时,MSBuild使用该值确定项目可用的工具集属性的值。一个工具集属性是$(MSBuildToolsPath),它指定.NET Framework工具的路径。”
$(MSBuildToolsPath)
如果使用“sdk样式”项目由msbuild 14甚至msbuild 4加载,因为它甚至无法分析项目文件(
)。另外,
ToolsVersion
属性现在在MSBuild 15中的项目上是可选的。尽管它可能只适用于OP,但如果项目仍然与MSBuild 14I兼容,我在项目文件中将ToolsVersion设置为15.0。以下是摘录:
请注意,
ToolsVersion
属性仅帮助查找已安装的工具集,而不是MSBuild版本本身。这对于依赖新文件语法和功能的msbuild 15+项目至关重要,例如.NET Core项目。有趣的是,这可以解释为什么它很少对我起作用(并且我总是指定使用哪一个)。来自:“在项目文件中定义ToolsVersion值时,MSBuild将使用该值