VS 2019专业版编译Web应用报错MSB4226:目标文件未找到
VS 2019专业版编译时找不到Microsoft.WebApplication.targets的解决办法
我之前碰到过一模一样的问题,你的分析其实已经命中了核心——项目里的通配符导入语句触发了VS2019加载v15.0版本的props文件,导致VSToolsPath指向了不存在的目录。下面是具体的解决思路和步骤:
问题根源复盘
你的项目里的这行导入语句:
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.VisualStudioVersion.v*.Common.props" Condition="'$(VSToolsPath)' == ''" />
使用了通配符v*,而VS2019的MSBuild\Current目录下恰好存在Microsoft.VisualStudioVersion.v15.Common.props文件,加载它后会把VisualStudioVersion设为15.0,最终VSToolsPath指向了不存在的v15.0目录,而实际VS2019对应的是v16.0版本。
具体解决方案
1. 修改项目文件,明确指定v16版本
直接把导入语句里的通配符替换为v16,让项目加载正确版本的props文件:
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.VisualStudioVersion.v16.Common.props" Condition="'$(VSToolsPath)' == ''" />
修改后重新编译,VSToolsPath会自动指向C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0,这个目录里的WebApplications文件夹应该包含你需要的Microsoft.WebApplication.targets文件。
2. 确认ASP.NET和Web开发组件已安装
如果修改项目后还是找不到文件,大概率是你没安装VS2019的ASP.NET和Web开发工作负载:
- 打开VS2019的安装程序(可以在开始菜单里找到“Visual Studio Installer”)
- 找到你安装的VS2019专业版,点击“修改”
- 在工作负载列表里勾选“ASP.NET和Web开发”,然后点击“修改”完成安装
- 安装完成后,检查
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\WebApplications目录是否存在,里面应该有Microsoft.WebApplication.targets
3. 命令行编译时手动指定VSToolsPath(临时方案)
如果不想修改项目文件,可以在使用MSBuild命令编译时,手动指定正确的VSToolsPath:
msbuild YourSolution.sln /p:VSToolsPath="C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0"
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

