我试图将我们的构建服务器(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
答案 0 :(得分:66)
您似乎错过了“Web开发构建工具”的工作量:Microsoft.VisualStudio.Workload.WebBuildTools
。
您可以通过从here下载构建工具安装程序然后运行
来安装它vs_buildtools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools
或打开vs_buildtools.exe
并在GUI中选择“Web开发构建工具”组件:
答案 1 :(得分:64)
上面接受的答案在技术上是正确的,只是不完整,有点令人困惑,至少对我而言,需要一个额外的步骤才能让Visual Build Professional工作。
vs_buildtools.exe技术上不存在。我不得不create询问该文件的位置。 vs_buildtools.exe是vs_buildtools _ *******。exe并且是实际的安装程序并不明显。另外," -add ***"上面提到的只是一个简写。可以转到GUI并检查两个工作流任务。这也是一样的。我收到了vs_buildtools文件,但不需要它。
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安装了大量的东西。像往常一样暗示构建工具。不管。
我发布这个答案,希望它能帮助别人。我陷入了困境,因为我的项目没有建成而失去了相当多的时间。我希望这个答案可以澄清一些事情。
答案 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 ,即可解决问题。