.NET 4.0生成服务器引用程序集警告MSB3644

Jer*_*ero 34 .net msbuild .net-4.0

我的构建服务器上出现了一堆错误:

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 Assemblies路径的任何引用的显着差异.特别是在FrameworkPathOverride中.

所以我尝试将FrameworkPathOverride作为命令行参数添加到msbuild.不幸的是,这只是让我不幸发现参考程序集目录似乎只有xml文件.因为只有mscorlib.xml.没有mscorlib.dll

到底他妈发生了什么?!?

Jer*_*ero 33

好的我找到了一个有效的解决方案.你需要做两件事:

  1. 首先将FrameworkPathOverride添加为命令行参数,并将其指向引用程序集目录.

就像是

  msbuild -p:FrameworkPathOverride="C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
Run Code Online (Sandbox Code Playgroud)
  1. 您需要做的第二件事是找到引用程序集目录的完整版本.由于Windows SDK安装的副本和visual studio安装的副本,我只是从我的开发机器中复制了我的副本.工作良好.

最后一点说明:首先可能发生在我身上的原因是我们的构建服务器是一个很好的旧的Windows Server 2003.太旧的Windows SDK安装应对?

  • 我发现这对.NET Framework v4和v4.5非常有用,因为"Program Files\Reference Assemblies"路径中的子文件夹没有填充在64位系统上(只有"Program Files(x86)\ Reference Assemblies"子文件夹是填充).谢谢. (3认同)
  • 在WS 2008 R2中运行.NET 4.5 Build时遇到了同样的问题.跟着你的意见并且工作了!我唯一不需要的是添加命令行参数.所以只需创建带有参考程序集的4.5文件夹就可以了.非常感谢! (2认同)

cix*_*syd 12

这看起来像是一个问题:.NET 4.0在CI服务器上构建问题,无论如何应该按照那里规定的方式解决.

确保Windows 7 SDK安装(至少).NET开发"智能感知和参考组件"和"工具".如果他们说已经安装了,但磁盘上不存在引用程序集,则卸载并重新安装.我已在我的构建服务器上确认了修复程序.