无法在全新Windows Server 2016机器上构建VS2017项目求解决
解决MSBuild找不到.NET Framework 4.5引用程序集的问题
嘿,我之前碰到过一模一样的情况,给你几个靠谱的解决方案:
1. 补装VS2017构建工具里的.NET 4.5目标包
Windows Server 2016本身预装了更高版本的.NET Framework(比如4.6.2),但MSBuild编译针对4.5的项目时,需要的是目标引用程序集(用来保证编译输出符合特定框架规范),不是系统自带的运行时。你之前装了.NET 4.5.2开发包,但可能没勾选VS构建工具里的4.5目标组件:
- 找到VS2017构建工具的安装程序(如果桌面没有,去
C:\Program Files (x86)\Microsoft Visual Studio\Installer里找vs_installer.exe) - 点击「修改」,切换到「单个组件」标签
- 在「SDK、库和框架」分类下,找到「.NET Framework 4.5 目标包」,勾选后完成安装
2. 手动复制引用程序集(如果第一种方法行不通)
如果安装目标包遇到异常,可以从其他装有VS2017或.NET 4.5目标包的机器上,复制以下路径的文件夹到你的Server 2016对应位置:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5
复制完成后,MSBuild应该就能识别到需要的引用程序集了。
3. 调整项目的目标框架版本
如果你的项目不需要严格绑定.NET 4.5,可以直接把项目的目标框架改成已安装的版本(比如4.5.2或者Server 2016自带的4.6.2):
- 右键项目 → 属性 → 应用程序 → 目标框架,选择已有的高版本框架
- 重新编译项目,MSBuild会自动使用对应版本的引用程序集,不会再报错
为啥会出现这个问题?
Windows Server 2016预装的是高版本.NET运行时,但运行时和编译用的引用程序集是完全不同的东西。MSBuild编译特定版本的项目时,必须依赖对应版本的引用程序集来约束编译逻辑,而这些引用程序集不会随系统预装,得通过VS构建工具的组件或者专门的目标包单独安装。
内容的提问来源于stack exchange,提问作者abenci
相关产品推荐
相关产品推荐

