我正在尝试将我们的构建服务器(jenkins)从Visual Studio 2015升级到2017。我们正在通过MS-Build进行构建。我已经下载并安装了MS-Buld工具,如answer中所述。如果我编译我的项目,我会收到一个错误,即找不到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
下)的符号链接。
谢谢
9条答案
按热度按时间suzh9iv81#
看起来您缺少“Web开发构建工具”的工作负载:
Microsoft.VisualStudio.Workload.WebBuildTools
.您可以从here(VS2017)或here(VS2019)下载构建工具安装程序,然后运行
或者打开
vs_buildtools.exe
并在GUI中选择“Web开发构建工具”组件:ergxz8rk2#
上面的公认答案在技术上是正确的,只是不完整,有点混乱,至少对我来说是这样,需要一个额外的步骤来让Visual Build Professional工作。
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文件放在了预期的位置。为什么微软不能做到这一点是我无法理解的。还有,为什么单独安装。VS 17安装了大量的东西。构建工具是隐含的,像往常一样。无论如何。
我贴出这个答案,希望它能帮助其他人。我掉进了陷阱,失去了相当多的时间与我的项目没有建设。我希望这个答案澄清了一些事情。
ttygqcqt3#
从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文件包含以下行:
在
VSToolPath
标记中将v14.0
替换为v$(VisualStudioVersion)
后,可以加载项目。我还将
VisualStudioVersion
标签中的v14.0
替换为v10.0
,如上面链接中的解决方案所示。下面是这些行的最终外观:
如果您的.csproj中根本没有这些行,则必须在该行之前手动添加它们:
在我的例子中(错误消息略有不同,但问题相同),它是这样一行:
似乎使用Visual Studio 2011年以后的版本创建的项目包含带有
VSToolsPath
重定义的行,而较旧的文件则没有。Visual Studio在升级到较新的VS版本时从不自动添加它们,这就是为什么如果它们不存在,您应该添加它们。信息来源:https://developercommunity.visualstudio.com/content/problem/27735/project-fails-to-load-with-error-regarding-microso.html?childToView=123664#comment-123664(单击 * 显示更多评论 * 查看完整的讨论线索-遗憾的是,我无法直接链接到“更多”部分中的评论。)
rqdpfwrv4#
使用chocolatey可以轻松安装2017构建工具,其中包含
WebBuildTools
选项。安装installed后,在管理命令提示符下输入以下命令:对于VS 2019,情况类似:
dxpyg8gm5#
对于VS 2019,我通过复制修复了此问题:
C:\程序文件(x86)\Microsoft Visual Studio \2019\企业版\微软内部版本\Microsoft\Visual Studio \v16.0
至
C:\程式档(x86)\MSBuild\Microsoft\Visual Studio
bqjvbblv6#
复制
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
请确保使用提升的权限运行它
dsekswqp7#
如何创建VS 2017 pro,asp.net MVC应用程序并使用Jenkins构建它?
在开发计算机和构建服务器中使用vs 2017 pro
检查VisualStudio是否设置为15
导入项目="$(MSBuildExtensionsPath 32)\Microsoft\Visual Studio\v15.0\Web应用程序\Microsoft. Web应用程序.目标”条件=“假”
设置msbuild工具
安装到Jenkins全局配置管理器中的C:\Program Files(x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe中
使用jenkins,执行Windows命令批处理:
还原金块:“C:\程序文件(x86)\Jenkins\工具\nuget\NuGet.exe”还原“C:\程序文件(x86)\Jenkins\工作区\应用程序构建\应用程序.sln”
使用jenkins执行Windows命令批处理:
MSBuild生成文件:theapp.sln
命令行参数:/nologo /t:还原/t:重新生成/p:配置=“调试”/p:VisualStudio版本=15.0
a8jjtwal8#
可能有多个问题导致此错误,但它通常是由于缺少文件(我的错误示例如下)。
对于我自己,我正在使用
dotnet
命令通过powershell构建一个.NET 4.8解决方案,运行在VS 2019上。失败的项目在VS2010/15/17中创建。因此,为了解决丢失的文件,我只是在它要查找的文件和它期望的位置之间创建了一个符号链接。
这解决了这个问题,现在我可以通过编程方式构建解决方案(如果使用正确的文件路径创建符号链接,这也适用于其他示例)。
fzsnzjdm9#
我只是使用Visual Studio安装程序更新了Visual Studio社区2017,问题就解决了。