RegAsm无法使用Microsoft.Bcl.Async进行.NET 4.0程序集
使用Microsoft.Bcl.Async
的.NET 4.0程序集的RegAsm失败,并显示以下消息:
RegAsm:错误RA0000:无法加载文件或程序集
'System.Threading.Tasks,Version = 1.5.11.0,Culture = neutral,
PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。
找到的程序集的清单定义不匹配
assembly参考。 (HRESULTexception:0x80131040)
我的程序集( MyAssembly.dll
)使用最新的Microsoft.Bcl.Async
NuGet包,这是项目的packages.config
:
它捆绑了System.Threading.Tasks.dll
版本:2.6.6.0,它是该NuGet包的一部分。 目标系统上没有其他System.Threading.Tasks.dll
(Win7 with .NET 4.0但没有.NET 4.5),GAC和其他任何地方都没有。
这是MyAssembly.dll.config
,它具有System.Threading.Tasks
正确bindingRedirect
元素:
我的问题: RegAsm不使用MyAssembly.dll.config
吗? 如何使其工作以解决bindingRedirect
指令?
我提出的解决方案是黑客攻击:
-
将
RegAsm.exe
和RegAsm.exe.config
从C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe
复制到MyAssembly.dll
所在的本地文件夹; -
编辑
RegAsm.exe.config
如下所示:
- 现在,运行
RegAsm.exe /codebase MyAssembly.dll
正常工作正常。
有趣的是, useLegacyV2RuntimeActivationPolicy="true"
已经存在于标准RegAsm.exe.config
,但仅凭它没有帮助。
我认为这是与此处报告的相同的错误: https : //connect.microsoft.com/VisualStudio/feedback/details/789318/asyncpack-system-io-fileloadexception-could-not-load-file-or-assembly-system- threading-tasks-version-1-5-11-0 。