依赖于框架程序集"System.Runtime,Version = 4.0.10.0",这在目前的目标框架中无法解决

gbs*_*gbs 7 .net asp.net unity-container tfsbuild .net-4.5

TFS 2013 - Build:ASP.Net 4.5.1网站我收到此错误:

warning MSB3268: The primary reference "C:\Builds\2\MyProj\Web1_Main\bin\MyProj1.dll"
 could not be resolved because it has an indirect dependency on the framework assembly 
"System.Runtime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which
 could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5.1". To resolve this problem, either remove the reference 
"C:\Builds\2\MyProj\Web1_Main\bin\MyProj1.dll" or retarget your application to a framework 
version which contains "System.Runtime, Version=4.0.10.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a".
Run Code Online (Sandbox Code Playgroud)

最初使用Unity 1.0.0.0的所有项目和站点都是4.0.我将其升级到4.5.2.此外,上述错误中的MyProj1引用了Unity,我也将其升级到3.5.1.

阅读本文:https://unity.codeplex.com/workitem/12756 构建服务器已在变通方法中指向更新的4.5.2.

所以我降级到4.5.1,但仍然得到错误.

  • 解决方案通过Visual Studio 2013在本地构建良好.

  • 该独立的类库项目建设TFS正常,但当的Myproj被添加到我的网站的参考,当它失败的.

有任何想法吗?

在升级时,我是否需要除TragetFramework settign之外的任何web.config更改?

gbs*_*gbs 4

由于我的项目依赖于其他一些项目,我不得不将 Unity 升级到 3.5,并且这个错误再次出现。这次终于修好了。

这对我有帮助:http://devsilos.blogspot.com/2014/10/msb3268-while-targeting-aspnet-web-site.html

解决方案我复制了构建所抱怨的所有文件:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.2\Facades

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.2

以下是上面链接中的解释,以防将来因任何原因出现故障:

更深入的检查揭示了以下有趣的事实:aspnet_compiler 由于某种原因没有考虑驻留在 4.5 程序集的 Facade 目录下的 .dll-s (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework \v4.5\外墙)。它仅在 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5 下查找

结果整个事情失败了,因为 System.Threading.Tasks 和 System.Runtime .dll-s 都位于 Facades 目录下,而不是在 v4.5 内。

现在解决方案:

  • 只需将缺少的 .dll-s 从 Facade 复制到 v4.5 目录即可。
  • 在 .sln 文件中将 TargetFrameworkMoniker 设置为 4.5.1。具体语法如下:TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.5.1"。

在这种情况下,aspnet_compiler 无法识别所需框架的确切版本,并尝试尽可能使用 GAC。如果 4.5 是构建机器上安装的最高版本,我相信它应该可以工作。