我的构建服务器上出现了一堆错误:
C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(847,9):警告MSB3644:找不到框架“.NETFramework,Version = v4.0”的引用程序集。要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本。请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集。因此,您的程序集可能无法正确定位到您想要的框架。 [d:\ ADIS \汞\ AdisFeeds \缓存\ Adis.Feeds.Cache.ConsoleManager \ Adis.Feeds.Cache.ConsoleManager.csproj]
问题是我已经安装了Windows SDK 7.1的.NET部分。 ...我特别小心地检查.net 4.0参考组件旁边的框。
有没有人对什么出错有任何建议?
对于记录,我使用Nant为msbuild nant任务运行构建脚本(版本0.86)和nant.contrib(0.85)。
更新 我刚刚跑下那个角度。我使用msbuild在我的开发机器上编译了解决方案,然后再在构建服务器上编译。然后我比较了日志。
似乎缺少对\ Program Files \ References程序集路径的任何引用的显着差异。特别是在FrameworkPathOverride中。
所以我尝试将FrameworkPathOverride作为命令行参数添加到msbuild。不幸的是,这只是让我不幸发现参考程序集目录似乎只有xml文件。因为只有mscorlib.xml。没有mscorlib.dll
到底发生了什么事???
答案 0 :(得分:33)
好的,我找到了一个有效的解决方案。你需要做两件事:
像
这样的东西 msbuild -p:FrameworkPathOverride="C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
最后一点说明:首先发生在我身上的原因是我们的构建服务器是一个很好的旧Windows Server 2003。 Windows SDK安装太老了以应对?
答案 1 :(得分:12)
这看起来像是这个问题的重复:.NET 4.0 build issues on CI server无论如何应该按照那里规定的方式解决。
确保Windows 7 SDK(至少)安装了.NET Development“Intellisense and Reference Assemblies”和“Tools”。如果他们说已经安装了,但磁盘上不存在引用程序集,则卸载并重新安装。我已在我的构建服务器上确认了修复程序。
答案 2 :(得分:2)
添加到cixelsyd的答案:
Windows SDK v7.1安装程序中的默认设置是“智能感知和参考程序集”被“半检查” - 将其更改为完全检查并且警告消失: - )
答案 3 :(得分:2)
这适用于我,在 powershell 中运行(不使用FrameworkPathOverride):
cp -r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
这是因为4.5(或4.5.1)是4.0的替代品
答案 4 :(得分:0)
安装SDK 8.1(也适用于Windows 7)也适用于.net 4.5请求https://msdn.microsoft.com/en-US/windows/desktop/bg162891
答案 5 :(得分:0)
经过几天搜索网络寻找答案后,通过提到的参考程序集广泛查看项目配置文件,上述使用Windows 8.1 SDK重新安装缺少的4.5.1参考程序集的建议最终成功了。< / p>
在我的情况下,我试图“在没有调试的情况下开始”创建一个新的ASP.Net核心Web应用程序(.NET Core),以跟随tutorial上的https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html
使用SDK时,我取消选中参考程序集的所有接受。这是我发现安装4.5.1的唯一方法,因为其他方法因为我已经安装了4.5.2及更高版本而失败。
感谢本页面上最终有效的答案!
警告MSB3644:框架的参考程序集 未找到“.NETFramework,Version = v4.5.1”。要解决此问题,请安装 此框架版本的SDK或Targeting Pack或重新定位您的 应用程序到您拥有SDK的框架版本 或安装了Targeting Pack。
答案 6 :(得分:0)
确保已安装 .NET Framework Developer Pack ,而不是安装了regular package。
如果您使用的是Visual Studio,Code或其他IDE,则还应该安装 .NET Targeting Pack 。
下载页面:https://www.microsoft.com/net/download
相关:
答案 7 :(得分:0)
在文件夹中:
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework
有一组文件夹,每个安装的框架一个。 文件夹“ v4.0”仅包含xml文件,文件夹“ v4.5”包含dll和xml文件。
我创建了一个指向该文件夹的符号链接。
1)以管理员身份运行命令提示符。
2)运行以下脚本:
cd C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework
ren v4.0 v4.0_old
mklink /d v4.0 v4.5
将创建一个名为“ v4.0”的符号文件夹,并指向v4.5的dll