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".
最初使用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更改?
答案 0 :(得分:2)
实际上抱歉,我不认为" assemblyBinding"有助于。 这似乎是known bug。它尚未得到解决。使用Unity 3.5,您可以使用.NET 4.5.1而不是4.5.2。 因此,一种选择是重新定位到.NET 4.5.1并查看问题是否消失,如果这是一个选项。
P.S。 您也可以尝试.NET Framework 4.5.2 Developer Pack。但有些人提到它不起作用。
答案 1 :(得分:2)
由于我的项目依赖于其他一些项目,我不得不将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由于某种原因没有考虑到.dll-s 位于4.5程序集的Facade目录下(C:\ Program 文件(x86)\参考 大会\微软\ Framework.NETFramework \ V4.5 \外立面)。它看起来 仅在C:\ Program Files(x86)\ Reference下 组件\微软\ 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,版本%3Dv4.5.1"
在这种情况下会发生的事情是aspnet_compiler没有 认识到所需框架的确切版本并尝试 尽可能使用GAC。如果4.5是安装的最高版本 在构建机器上我认为它应该可以工作。
答案 2 :(得分:0)
我们最近遇到了一个与升级到目标.NET 4.5的网站类似的问题,并且最初遵循了gbs's answer中的解决方案。
在我们的案例中,我们按照这种模式发出了几条警告:
<项目名称> .metaproj:警告MSB3268:无法解析主要参考“<项目参考> .dll”,因为它对框架程序集“System.Runtime,Version = 4.0.0.0具有间接依赖性” ,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“无法在当前目标框架中解析。 ” .NETFramework,版本= V4.5" 。要解决此问题,请删除引用“< project reference> .dll”或将应用程序重新定位到包含“System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”的框架版本。
我们随后发现,如果您创建一个面向4.5.x的新网站(文件>新建>网站...)并选择 ASP.NET空网站模板,包含 Microsoft.Net.Compilers 。将此软件包添加到我们的站点解决了该问题,而无需触及参考组件。
在最初的两个解决方案中,复制文件导致构建成功但存在维护问题,更改TargetFrameworkMoniker(4.5.3而不是4.5.1)会产生不同的构建错误,并且是一个脆弱的解决方案。