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

时间:2011-05-03 23:37:27

标签: .net .net-4.0 msbuild

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

  

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

到底发生了什么事???

8 个答案:

答案 0 :(得分:33)

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

  1. 首先将FrameworkPathOverride添加为命令行参数,并将其指向引用程序集目录。
  2. 这样的东西
      msbuild -p:FrameworkPathOverride="C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
    
    1. 您需要做的第二件事是找到引用程序集目录的完整版本。由于Windows SDK安装的副本和visual studio安装的副本,我只是从我的开发机器中复制了我的副本。工作正常。
    2. 最后一点说明:首先发生在我身上的原因是我们的构建服务器是一个很好的旧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)

答案 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