VS2017构建.NET Core 1.1.8项目时目标文件路径错误问题
嘿,这个问题我之前帮同事踩过坑,本质是MSBuild在解析Web项目目标文件时的路径冲突,我把原因和靠谱的解决办法整理给你:
为什么会出现这个问题?
主要有这几个常见原因:
- 项目文件硬编码了旧版本路径:你的
.csproj里可能直接写死了引用v10.0版本的Microsoft.WebApplication.targets,而不是用VS的动态变量来匹配当前安装的版本。 - 环境变量配置错误:
MSBuildExtensionsPath32这个关键环境变量指向了错误的路径,导致dotnet build时优先去旧路径找目标文件。 - SDK版本兼容性问题:.NET Core 1.1.8是比较老旧的版本,和VS2017的MSBuild集成时,没有正确识别当前VS的安装目录, fallback到了过时的默认路径。
怎么解决?
试试下面这几个方法,按顺序来大概率能搞定:
- 修正项目文件的Targets引用:
打开你的.csproj文件,找到类似这样的行:
把<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />v10.0改成v15.0,或者更灵活的是用$(VisualStudioVersion)变量,改成:
这样MSBuild会自动匹配当前VS的版本路径。<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" /> - 调整MSBuild环境变量:
右键“此电脑”→属性→高级系统设置→环境变量,找到MSBuildExtensionsPath32变量,把它的值改成VS2017的MSBuild路径:
改完后重启命令行或IDE,再重新构建试试。C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild - 直接指定VS2017的MSBuild进行构建:
如果不想改环境变量,可以跳过dotnet build,直接用VS2017自带的MSBuild命令:
这样会强制使用正确的MSBuild版本来处理项目。"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" YourProjectName.csproj - 升级.NET Core SDK(可选):
.NET Core 1.1.8已经停止维护了,升级到和VS2017兼容的LTS版本(比如2.1.x或更高),不仅能解决这个路径问题,还能获得更好的稳定性和安全性。
内容的提问来源于stack exchange,提问作者Shubh Rocks Goel
相关产品推荐
相关产品推荐

