【发布时间】:2013-11-22 10:03:53
【问题描述】:
使用 Microsoft.Bcl.Async 的 .NET 4.0 程序集的 RegAsm 失败,并显示以下消息:
'System.Threading.Tasks,Version=1.5.11.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。
找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)
我的程序集(MyAssembly.dll)使用最新的Microsoft.Bcl.Async NuGet 包,这是项目的packages.config:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl" version="1.1.6" targetFramework="net40" />
<package id="Microsoft.Bcl.Async" version="1.0.165" targetFramework="net40" />
<package id="Microsoft.Bcl.Build" version="1.0.13" targetFramework="net40" />
</packages>
它捆绑了System.Threading.Tasks.dll 版本:2.6.6.0,它是 NuGet 包的一部分。目标系统(带有 .NET 4.0 但没有 .NET 4.5 的 Win7)上没有其他 System.Threading.Tasks.dll,在 GAC 和其他任何地方都没有。
这里是MyAssembly.dll.config,它有正确的bindingRedirect元素System.Threading.Tasks:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.IO" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.6.0" newVersion="2.6.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.6.0" newVersion="2.6.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.6.0" newVersion="2.6.6.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
我的问题:RegAsm 不使用MyAssembly.dll.config 吗?如何使它工作以解决 bindingRedirect 指令?
【问题讨论】:
标签: c# .net nuget async-await regasm