2017-05-19 271 views
13

我试图将我们的buildserver(jenkins)从Visual Studio 2015升级到2017.我们正在通过MS-Build进行构建。我已经下载并安装了这个answer中描述的MS-Buld工具。如果我编译我的项目,我得到一个错误,找不到Microsoft.WebApplication.targetsMS-Build 2017“Microsoft.WebApplication.targets”缺失

详细的错误:

error MSB4226: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" 

我在MS-build目录进行查找:

PS C:\Program Files (x86)\MSBuild> dir -Recurse -Filter "Microsoft.WebApplication.targets" 
 

 

 
    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications 
 

 

 
Mode    LastWriteTime   Length Name                                                    
 
----    -------------   ------ ----                                                    
 
-a----  11.01.2012  00:23   19654 Microsoft.WebApplication.targets                                             
 

 

 
    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications 
 

 

 
Mode    LastWriteTime   Length Name                                                    
 
----    -------------   ------ ----                                                    
 
-a----  22.07.2013  01:25   19995 Microsoft.WebApplication.targets                                             
 

 

 
    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications 
 

 

 
Mode    LastWriteTime   Length Name                                                    
 
----    -------------   ------ ----                                                    
 
-a----  06.07.2015  21:55   20118 Microsoft.WebApplication.targets                                             
 

 

 
    Directory: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\WebApplications 
 

 

 
Mode    LastWriteTime   Length Name                                                    
 
----    -------------   ------ ----                                                    
 
-a----  22.07.2013  01:25   19995 Microsoft.WebApplication.targets

可以看到该文件存在于旧版本的编译器,但是对于v15.0,它缺失。

我也在生成服务器上安装了Visual Studio 2017。如果我使用Visual Studio 2017进行编译,该项目将成功构建。

任何提示如何解决此问题?一种可能的解决方案是生成从C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications指向旧版本v14.0文件(位于C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications下)的符号链接。

THX

+0

你是如何构建项目与MSBuild?由于您已经在构建服务器上安装了Visual Studio 2017,为什么仍然要安装MS-Build工具?从Visual Studio 2013开始,MSBuild将作为Visual Studio的一部分而不是.NET Framework提供。 –

回答

17

看起来你缺少Microsoft.VisualStudio.Workload.WebBuildTools工作量。

可以使用

vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools 
+0

解决了这个问题,thx。 – Moerwald

+2

我如何运行这个命令它的'vs_buildtools.exe'在开发人员工具中不被识别为内部或外部命令错误2017 – Developerzzz

+5

如果您已经下载了“Visual Studio 2017构建工具”安装程序(https:// www .visualstudio.com/thank-downloading-visual-studio /?sku = BuildTools&rel = 15),那么你可以启动该安装程序,点击修改并勾选“Web开发构建任务”工作负载模块复选框。然后点击修改按钮,让安装程序完成。 – Spiralis

17

安装在它上面接受的答案是技术上是正确的只是不完整的,有点混乱,至少对我来说,和需要一个额外的步骤来获得视觉构建专业的工作。

  1. vs_buildtools.exe在技术上并不存在。我不得不create问一个问题,该文件是在哪里。这并不明显,vs_buildtools.exe是vs_buildtools _ *******。exe,并且是实际的安装程序。另外上面提到的“-add ***”只是一个简写。可以转到GUI并检查两个工作流程任务。这也是一样的。我结束了vs_buildtools文件,但不需要它。

  2. VSB Pro仍然没有建立我的项目。我上面抛出了同样的错误。秘密调味汁只是将C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0中的WebApplications文件夹复制到C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0。然后我重建了这个项目,一切都很好。我将WebApplication.targets文件放在预期位置。

为什么微软无法做到这一点超出了我的想象。另外,为什么单独安装。 VS17安装了大量的东西。像往常一样,构建工具是隐含的。随你。

我发布了这个答案,希望它可以帮助别人。我陷入陷阱,失去了一段时间,我的项目没有建立。我希望这个答案能澄清一些事情。

+1

确认“构建Visual Studio 2017工具”实际上将目标复制到C:\ Program Files文件(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0,而msbuild实际上会尝试在C:\ Program Files文件(x86)\ MSBuild \ Microsoft \ VisualStudio \ v15.0,所以我必须复制文件夹。显然第一个被IDE使用,第二个被独立msbuild使用。奇怪。 – ZZZ

+0

复制文件夹为我做了诀窍。谢谢 – rodrigorf

+0

你不应该手动复制任何东西。 vs_buildtools.exe只是Visual Studio安装程序。它可以帮助您安装构建工具或Visual Studio。对于这两者,您可以安装不同的工作负载和组件。如果您想为Visual Studio安装工作负载,则需要单击“修改”按钮。这样你就可以安装所需的组件。 –

1

如何创建VS 2017 pro,asp.net MVC应用程序并与Jenkins一起构建?

使用VS在这两个开发机2017年的亲和构建服务器

检查VisualStudio的设置为15
进口项目=“$(MSBuildExtensionsPath32)\微软\ VisualStudio的\ V15.0 \ web应用\微软.WebApplication.targets”条件= “假”

设置的MSBuild工具
到C:\ Program Files文件(x86)的\微软的Visual Studio \ 2017年\专业\的MSBuild \ 15.0 \斌\ MSBuild.exe在jenkins全球配置经理

随着詹金斯,执行Windows命令批处理:
retore nugets: “C:\ Program Files文件(x86)的\詹金斯\工具\的NuGet \ NuGet.exe” 还原“C:\ Program Files文件(x86)的\詹金斯\工作区\ theapp_build \ theapp.sln”

随着詹金斯,执行Windows命令批处理:
的MSBuild build文件:theapp.sln
命令行参数:/ NOLOGO /吨:恢复/吨:重建/ p:配置=“调试”/p:VisualStudioVersion=15.0

1

使用chocolaty可轻松安装2017版本工具,并且已包含WebBuildTools选件。一旦choco is installed类型在管理员命令提示符下输入:

choco install microsoft-build-tools --version 15.0.26228.0 -y 
4

复制WebApplications文件夹从

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0

或者在生成脚本中添加以下行然后编译

Copy-Item "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications" "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications" -Recurse -Force

一定要以提升的权限

0

我不得不从Visual Studio 2015年已经升级到了2017年后,类似的问题。当我尝试加载Web应用程序项目运行它,它扔我的错误消息:

The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" was not found. Also, tried to find "WebApplications\Microsoft.WebApplication.targets" in the fallback search path(s) for $(VSToolsPath) - "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0" . These search paths are defined in "C:\Users\xxx\AppData\Local\Microsoft\VisualStudio\15.0_558e146f\devenv.exe.config". Confirm that the path in the declaration is correct, and that the file exists on disk in one of the search paths.

该错误的解决方案我找到了here

在我的情况下,.csproj的文件包含以下行:

<PropertyGroup> 
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion> 
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0</VSToolsPath> 
</PropertyGroup> 

VSToolPath标签由v$(VisualStudioVersion)更换v14.0后,该项目可能会被加载。

我还通过v10.0取代v14.0VisualStudioVersion标签,如在上述链路示出了解决方案。但对于我来说,它也是以14.0的速度运行。

下面是这些线路应该如何看到底:

<PropertyGroup> 
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> 
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 
</PropertyGroup> 

如果你没有在你的.csproj有这些线的话,那么你必须手动添加他们的权利,在此之前行:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" /> 

在我的情况(略有不同的错误信息,但同样的问题),这是该行:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 

似乎自2011年以来使用Visual Studio版本创建的项目包含VSToolsPath重新定义的行,而较旧的文件没有。升级到较新的VS版本时,Visual Studio从不自动添加它们,这就是为什么你应该添加它们,如果它们不在那里。

来源的信息:https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (点击显示更多评论看到完整的话题 - 不幸的是,我不能直接链接到评论这个“多”一节)。