MS-Build 2017" Microsoft.WebApplication.targets"缺少

时间:2017-05-19 05:13:52

标签: visual-studio msbuild

我试图将我们的构建服务器(jenkins)从Visual Studio 2015升级到2017年。我们正在通过MS-Build构建。我按照此answer中的说明下载并安装了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下)的符号链接。

THX

8 个答案:

答案 0 :(得分:66)

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

您可以通过从here下载构建工具安装程序然后运行

来安装它
vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools

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

screenshot from GUI

答案 1 :(得分:64)

上面接受的答案在技术上是正确的,只是不完整,有点令人困惑,至少对我而言,需要一个额外的步骤才能让Visual Build Professional工作。

  1. vs_buildtools.exe技术上不存在。我不得不create询问该文件的位置。 vs_buildtools.exe是vs_buildtools _ *******。exe并且是实际的安装程序并不明显。另外," -add ***"上面提到的只是一个简写。可以转到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文件放在预期的位置。

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

    我发布这个答案,希望它能帮助别人。我陷入了困境,因为我的项目没有建成而失去了相当多的时间。我希望这个答案可以澄清一些事情。

答案 2 :(得分:8)

使用chocolatey可以轻松安装2017年版本工具,其中已包含WebBuildTools选项。获得installed后,在管理员命令提示符下键入以下内容:

choco install visualstudio2017buildtools -y

对于VS 2019,它类似:

choco install visualstudio2019buildtools -y

答案 3 :(得分:7)

复制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

请务必使用提升的权限运行

答案 4 :(得分:7)

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

  

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

我发现here找到了此错误的解决方案。

在我的例子中,.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.0,如上面链接中的解决方案所示。但对我而言,它的工作原理是14.0。

以下是这些行最终应该如何看待:

VisualStudioVersion

如果您在.csproj中根本没有这些行,那么您必须在此行之前手动添加这些行:

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

在我的情况下(稍有不同的错误信息,但同样的问题)就是这一行:

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

自2011年以来,使用Visual Studio版本创建的项目似乎包含具有<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 重定义的行,而旧文件则没有。升级到较新的VS版本时,Visual Studio从未自动添加它们,这就是为什么你应该添加它们的原因。

此信息的来源:https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664 (点击显示更多评论以查看完整的讨论主题 - 遗憾的是我无法直接链接到此&#34;更多&#34;部分中的评论。)

答案 5 :(得分:2)

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

在dev机器和构建服务器中使用vs pro pro

检查VisualStudio是否设置为15
导入项目=&#34; $(MSBuildExtensionsPath32)\ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets&#34;条件=&#34;假&#34;

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

使用jenkins,执行windows命令批处理:
retore nugets:&#34; C:\ Program Files(x86)\ Jenkins \ tools \ nuget \ NuGet.exe&#34;恢复&#34; C:\ Program Files(x86)\ Jenkins \ workspace \ theapp_build \ theapp.sln&#34;

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

答案 6 :(得分:2)

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

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

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

答案 7 :(得分:0)

我只需使用 Visual Studio安装程序来更新 Visual Studio Community 2017 ,即可解决问题。