BuildMaster 使用 MSBuild 15.0
BuildMaster using MSBuild 15.0
如何在我的服务器上定位 MSBuild 15.0?我在服务器上安装了 15.0,但我的项目仍在使用 14.0 构建。我知道 Microsoft 对目录位置进行了一些更改,不再使用 15.0.
的注册表值
我发现 15.0 安装在以下位置:
C:\Program Files (x86)\MSBuild.0
C:\Program Files (x86)\Microsoft Visual Studio17\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:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\Bin;
但是我得到这个错误:
错误 MSB4226:找不到导入的项目 "C:\Program Files (x86)\Microsoft Visual Studio17\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 Studio17\BuildTools\MSBuild.0\Bin\msbuild.exe.Config" 中定义。确认声明中的路径是正确的,并且该文件存在于搜索路径之一的磁盘上。
更新 2:
我的构建服务器上可能缺少安装的东西吗?我安装了 Visual Studio Build Tools,它给了我 MSBuild 15.0,但没有从上面的错误中得到 WebApplication.targets 文件
解决方案
我还通过安装 "Web development build tools" 组件来解决我的问题。我还在服务器级别设置了 $MSBuildToolsPath,直到我可以在全球推出新的 MSBuild。
通常,这是由项目文件的 ToolsVersion
属性处理的。如果未指定以下配置,这应该是使用的内容。
具体来说,在 BuildMaster 中,您可以在“管理”>“BuildMaster 扩展”>“Windows SDK”>“配置”选项卡上为每个服务器覆盖此值。单击值为 C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\Bin
的 $MSBuildToolsPath
(并可选择在特定范围覆盖)
对更新 #1 和 #2 的回应:
首先,不要在计划本身中设置该变量(否则您必须在每个计划中都设置它)。按照我上面描述的方式设置它。就个人而言,我总是在服务器级别指定它的值,因为每个服务器可能将它安装在不同的位置。
至于Microsoft.WebApplication.targets,我认为唯一支持的构建Web应用程序项目的方法是在构建服务器上安装Visual Studio;尽管过去我只是将目标从本地安装 (C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications) 复制到 MSBuild 期望的路径中。
您可以使用 $MSBuildToolsPath
指定 MSBuild 的正确路径吗?
如何在我的服务器上定位 MSBuild 15.0?我在服务器上安装了 15.0,但我的项目仍在使用 14.0 构建。我知道 Microsoft 对目录位置进行了一些更改,不再使用 15.0.
的注册表值我发现 15.0 安装在以下位置:
C:\Program Files (x86)\MSBuild.0
C:\Program Files (x86)\Microsoft Visual Studio17\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:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\Bin;
但是我得到这个错误:
错误 MSB4226:找不到导入的项目 "C:\Program Files (x86)\Microsoft Visual Studio17\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 Studio17\BuildTools\MSBuild.0\Bin\msbuild.exe.Config" 中定义。确认声明中的路径是正确的,并且该文件存在于搜索路径之一的磁盘上。
更新 2:
我的构建服务器上可能缺少安装的东西吗?我安装了 Visual Studio Build Tools,它给了我 MSBuild 15.0,但没有从上面的错误中得到 WebApplication.targets 文件
解决方案
我还通过安装 "Web development build tools" 组件来解决我的问题。我还在服务器级别设置了 $MSBuildToolsPath,直到我可以在全球推出新的 MSBuild。
通常,这是由项目文件的 ToolsVersion
属性处理的。如果未指定以下配置,这应该是使用的内容。
具体来说,在 BuildMaster 中,您可以在“管理”>“BuildMaster 扩展”>“Windows SDK”>“配置”选项卡上为每个服务器覆盖此值。单击值为 C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\MSBuild.0\Bin
$MSBuildToolsPath
(并可选择在特定范围覆盖)
对更新 #1 和 #2 的回应:
首先,不要在计划本身中设置该变量(否则您必须在每个计划中都设置它)。按照我上面描述的方式设置它。就个人而言,我总是在服务器级别指定它的值,因为每个服务器可能将它安装在不同的位置。
至于Microsoft.WebApplication.targets,我认为唯一支持的构建Web应用程序项目的方法是在构建服务器上安装Visual Studio;尽管过去我只是将目标从本地安装 (C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications) 复制到 MSBuild 期望的路径中。
您可以使用 $MSBuildToolsPath
指定 MSBuild 的正确路径吗?