.NET 4.0构建服务器引用程序集警告MSB3644

我在构建服务器上遇到一堆错误:

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任务运行构建脚本(ver 0.86)和nant.contrib(0.85)。

更新我只是沿着这个角度而行。 我使用带有诊断日志记录的msbuild在我的开发机器上编译解决方案,然后再次在构建服务器上编译。 然后我比较了日志。

似乎有显着差异,缺少对 Program Files References Assemblies路径的任何引用。 特别是在FrameworkPathOverride中。

所以我尝试将FrameworkPathOverride作为命令行参数添加到msbuild。 不幸的是,这引起了我不幸的发现,即引用程序集目录似乎只有它们中的xml文件。 因为在那里只有mscorlib.xml。 没有mscorlib.dll

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


好吧,我找到了一个解决方案。 你需要做两件事:

  • 首先添加FrameworkPathOverride作为命令行参数并将其指向引用程序集目录。
  • 就像是

      msbuild -p:FrameworkPathOverride="C:Program FilesReference AssembliesMicrosoftFramework.NETFrameworkv4.0"
    
  • 您需要做的第二件事是找到引用程序集目录的完整版本。 由于Windows SDK安装的副本和Visual Studio安装的副本,我只是从我的开发机器上复制了我的副本。 工作正常。
  • 最后一个注意事项:这可能首先发生在我身上的原因是,我们的构建服务器是一个很好的旧的Windows Server 2003之一。 太旧的Windows SDK安装来应付?


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

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


    要添加到cixelsyd的答案:

    Windows SDK v7.1安装程序的默认设置是“智能感知和引用程序集”是“半检查” - 将其更改为完全检查并且警告消失:-)

    链接地址: http://www.djcxy.com/p/62031.html

    上一篇: .NET 4.0 build server reference assemblies warnings MSB3644

    下一篇: Resolving MSBuild 4.0 warnings