MS-Build 2017“ Microsoft.WebApplication.targets”丢失


85

我正在尝试将我们的构建服务器(jenkins)从Visual Studio 2015升级到2017。我们正在通过MS-Build进行构建。我已经按照此答案中的说明下载并安装了MS-Buld工具。如果我编译项目,则会收到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)的符号链接。

谢谢



1
我在使用VS 2019的项目中遇到了这个问题。如何修复它是通过打开csproj文件,标识行<Import Project =“ $(MSBuildExtensionsPath32)\ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets “ />并替换为<Import Project =” $(MSBuildExtensionsPath32)\ Microsoft \ VisualStudio \ v $(VisualStudioVersion)\ WebApplications \ Microsoft.WebApplication.targets“ />
tmutton

Answers:


124

似乎您缺少“ Web开发构建工具”的工作量:Microsoft.VisualStudio.Workload.WebBuildTools

您可以通过从此处(VS2017)或此处(VS2019)下载构建工具安装程序进行安装,然后运行

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

或开幕 vs_buildtools.exe在GUI中并选择“ Web开发构建工具”组件:

GUI的屏幕截图


3
我如何运行此命令,其给出的“ vs_buildtools.exe”在开发人员工具2017中未被识别为内部或外部命令错误
Developerzzz

26
如果您已经下载了“ Visual Studio 2017的构建工具”安装程序(visualstudio.com/thank-you-downloading-visual-studio/…),则可以启动该安装程序,单击“修改”并勾选“ Web开发构建任务” “工作负载模块”复选框。然后单击“修改”按钮,并让安装程序完成。
Spiralis

是的,您需要使用上面的命令行进行安装。您无法在GUI上找到它。
sky91

4
Build Tools for Visual Studio 2017通过Web development build tasks提供的链接进行安装,但是仍然无法创建文件C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications夹。.我也没有看到vs_buildtools.exe..i搜索了整个`c:`
LP13

1
谢谢..看起来像从VS 2017的值$(MSBuildExtensionsPath)已更改为C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild stackoverflow.com/questions/47077150/…
LP13

88

上面接受的答案在技术上是正确的,只是不完整,至少对我来说有点令人困惑,并且还需要一个额外的步骤来使Visual Build Professional正常工作。

  1. vs_buildtools.exe在技术上不存在。我不得不创建一个问题,询问该文件在哪里。尚不清楚vs_buildtools.exe是vs_buildtools _ *******。exe,并且不是实际的安装程序。另外,上面提到的“-加***”只是一个简写。可以转到GUI并检查两个工作流程任务。那做同样的事情。我最终有了vs_buildtools文件,尽管不需要它。

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

为什么微软不能做到这一点超出了我。另外,为什么要单独安装。VS17安装了大量的东西。像往常一样暗示着构建工具。随你。

我发布此答案是希望对其他人有所帮助。我掉进了陷阱,由于我的项目没有建立而浪费了很多时间。我希望这个答案可以使事情有所澄清。


4
确认“ 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

1
您不应该手动复制任何内容。vs_buildtools.exe仅仅是Visual Studio安装程序。它可以帮助您安装构建工具或Visual Studio。两者都可以安装不同的工作负载和组件。如果您想为Visual Studio安装工作负载,则需要为其单击“修改”按钮。通过这种方式,您可以安装所需的组件。
弗拉基米尔·塞里克(Fladimir Serykh),

2
可以,但是问题是Visual Studio安装程序似乎无法可靠地将WebApplications文件夹放在所需的两个位置。正如Sarah所建议的那样,手动复制是我设法在开发机器上可靠地进行构建的唯一方法。
巴特阅读

21

从Visual Studio 2015升级到2017后,我遇到了类似的问题。当我尝试加载Web应用程序项目时,它抛出了错误消息:

找不到导入的项目“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets”。此外,尝试在$(VSToolsPath)-“ C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v15.0”的后备搜索路径中找到“ WebApplications \ Microsoft.WebApplication.targets”。这些搜索路径在“ C:\ Users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 15.0_558e146f \ devenv.exe.config”中定义。确认声明中的路径正确,并且文件在搜索路径之一中的磁盘上存在。

我发现此错误的解决方案 这里

就我而言,.csproj文件包含以下几行:

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

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

我也更换了 v14.0通过v10.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 (单击“显示”)更多评论以查看完整的讨论主题-不幸的是,我无法直接链接到“更多”部分中的评论。)


11

WebBuildTools使用Chocolatey可以轻松安装2017年构建工具(已包含选件)。一旦你已经安装了它,请在管理员命令提示符下输入:

choco install visualstudio2017buildtools -y

对于VS 2019,它类似于:

choco install visualstudio2019buildtools -y

2
您不必安装特定版本,可以使用Chocolatey以这种方式安装并合并接受的答案:cinst visualstudio2017buildtools -params '--add Microsoft.VisualStudio.Workload.WebBuildTools' -y ; cinst microsoft-build-tools -y
brianary

8

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

确保以提升的权限运行它


3

如何创建VS 2017 pro,asp.net MVC应用程序并使用Jenkins进行构建?

在开发机器和构建服务器中使用vs 2017 pro

检查VisualStudio是否设置为15
Import Project =“ $(MSBuildExtensionsPath32)\ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets” Condition =“ false”


在jenkins全局配置管理器中将msbuild工具设置为C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ MSBuild.exe

使用jenkins,执行Windows命令批处理:
还原nuget:“ C:\ Program Files(x86)\ Jenkins \ tools \ nuget \ NuGet.exe”恢复“ C:\ Program Files(x86)\ Jenkins \ workspace \ theapp_build \ theapp。 sln”

使用jenkins,执行Windows命令批处理:
MSBuild构建文件:theapp.sln
命令行参数:/ nologo / t:restore / t:rebuild / p:Configuration =“ Debug” /p:VisualStudioVersion=15.0


2

对于VS 2019,我通过复制来解决此问题:

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v16.0

C:\ Program档案(x86)\ MSBuild \ Microsoft \ VisualStudio


如何获取VS2019的C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0
Somegeek

-1

我只是使用Visual Studio安装程序来更新Visual Studio Community 2017,然后问题得以解决。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.