VS2019编译.sln项目报MSB4226找不到Microsoft.DotNet.Props错误
VS2019编译sln报MSB4226找不到Microsoft.DotNet.Props的具体原因
核心触发根源是要编译的项目使用了已经被微软废弃多年的旧项目格式,和当前安装的工具链完全不兼容,具体拆解如下:
- 报错指向的项目文件后缀为
.xproj,这是2016年.NET Core 1.0正式版发布前,预览阶段(对应project.json、DNX工具链时期)专用的项目格式,.NET Core 1.0 RTM之后微软就彻底废弃了这套格式,全面切换为现在通用的SDK风格.csproj格式。 - 你当前安装的是.NET 6.0.301 SDK,属于正式发布的.NET Core后续版本,这套SDK根本不包含为旧.xproj提供构建支持的
Microsoft.DotNet.Props文件,该文件仅存在于2015-2016年发布的早期.NET Core预览版工具链(对应VS2015的DotNetCore.1.0.0-VS2015Tools.Preview2这类旧安装包)中,VS2019默认已经完全移除了这套旧预览工具链的相关组件,不会在C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VisualStudio\v16.0\DotNet\路径下存放任何相关文件。 - 可以直接打开报错的
Microsoft.Legal.ProjectCenter.UpdateProjectName.xproj文件查看第8行,该行一定存在<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" />的导入声明,这个路径规则是旧预览版工具链专属的,和.NET Core 1.0正式版之后所有版本(包括你装的.NET 6)的构建目标文件路径规则完全不匹配,MSBuild按照配置的两个搜索路径遍历后找不到对应文件,就会抛出MSB4226错误。 - 额外说明:安装高版本.NET SDK不会自动补全旧预览版的构建文件,不同大版本的.NET SDK构建组件是互相独立存放的,高版本不会兼容适配早已废弃的xproj格式导入规则。
内容的提问来源于stack exchange,提问作者John John
相关产品推荐
相关产品推荐

