我在一个项目中使用Microsoft.Bcl.Async 套餐,这个项目是另一个不使用异步特性的项目引用的。
现在,当我编译解决方案(或者只编译第二个项目)时,我收到了这个错误警告:
无法解析主引用"XYZ.dll“,因为它间接依赖于框架程序集"System.Runtime、Version=1.5.11.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a”,而后者在当前目标框架中无法解决。".NETFramework,Version=v4.0“。要解决这个问题,要么删除引用"XYZ.dll“,要么将您的应用程序重定向到包含"System.Runtime,Version=1.5.11.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”的框架版本。
我在两个项目中都使用这个app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:bcl="urn:schemas-microsoft-com:bcl">
<dependentAssembly bcl:name="System.Runtime">
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.16.0" newVersion="2.5.16.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.16.0" newVersion="2.5.16.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>我做错什么了?
我不想引用异步包dll。
我不能使用.Net 4.5目标。一定是.Net 4。
所有项目的目标框架:.NET框架4
发布于 2013-03-21 21:42:37
摘要
有几种解决办法可供您使用:
Microsoft.CompilerServices.AsyncTargetingPack),备注:当您提供一个依赖于Microsoft.Bcl.Async的库(与旧的Microsoft.Bcl.Async一样,您必须将这些二进制文件(System.Runtime、System.Threading.Tasks、Microsoft.ThreadingT.*)与使用您的库的应用程序/包一起发送)时,您在上面选择的。
长篇小说
正如Peter所指出的,这是一个已知的问题,由于设计方式的关系,这个问题只发生在Microsoft.Bcl.Async而不是Microsoft.Bcl.Async。
Microsoft.Bcl.Async的部分设计是支持(通过NuGet包)一些新的.NET 4.5程序集(System.Runtime,System.Threading.Tasks),以便它们能够在4.0上运行。MSBuild不喜欢这种情况,它使它相信引用库从更新的框架版本中获取了对程序集的依赖。Microsoft.Bcl.Build包中的解决方案修复了这个问题。
发布于 2013-03-21 16:32:28
使用针对Visual 11的异步目标包代替。
Install-Package Microsoft.CompilerServices.AsyncTargetingPack
如果您喜欢使用Microsoft.Bcl.Async预发布,则必须将其添加到所有项目中。Bcl.Async的下一个版本应该对消息传递进行改进,以更好地说明这一点。
如果您正在使用VS 2010,我所知道的唯一能让您异步/等待的东西是AsyncCTP;因此,在VS 2010中使用Microsoft.Bcl.Async是没有意义的。
最新情况:
W.R.T到Microsoft.Bcl.Async: MSB警告周围的问题(“不能是resolved...indirect依赖项.”)。都是已知的和正在被解决的。在将来的一些更新中(对MSBuild和Microsoft.Bcl.Async),这将被修复,您将不必在两个项目中都包括Microsoft.Bcl.Async。
https://stackoverflow.com/questions/15551953
复制相似问题