我的构建服务器上出现了一堆错误:
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\mercury\AdisFeeds\cache\Adis.Feeds.Cache.ConsoleManager\Adis.Feeds.Cache.ConsoleManager.csproj]
问题是我已经安装了Windows SDK 7.1的.NET部分。 ...我特别小心地选中了 .net 4.0 参考程序集旁边的框。
有人对出了什么问题有什么建议吗?
根据记录,我使用 Nant 运行构建脚本(版本 0.86)和 nant.contrib(0.85)来执行 msbuild nant 任务。
Update我只是顺着那个角度跑。我在我的开发计算机上使用带有诊断日志记录的 msbuild 编译了解决方案,然后在构建服务器上再次编译。然后我比较了日志。
似乎显着的区别是缺少对 \Program Files\References Assemblies 路径的任何引用。特别是在 FrameworkPathOverride 中。
所以我尝试将 FrameworkPathOverride 作为命令行参数添加到 msbuild 中。不幸的是,这让我不幸地发现参考程序集目录中似乎只有 xml 文件。因为只有 mscorlib.xml。没有 mscorlib.dll
到底他妈发生了什么?!?
好的,我找到了一个有效的解决方案。你需要做两件事:
- 首先添加 FrameworkPathOverride 作为命令行参数并将其指向引用程序集目录。
就像是
msbuild -p:FrameworkPathOverride="C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
- 您需要做的第二件事是找到参考程序集目录的完整版本。由于Windows SDK安装的副本和Visual Studio安装的副本,我只是从我的开发机器上复制了我的。工作正常。
最后一点:我之所以会遇到这种情况,首先是因为我们的构建服务器是一台不错的旧 Windows Server 2003 服务器。 Windows SDK 安装太旧而无法应对?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)