加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 错误:无法加载文件或程序集“Microsoft.Practices.Servic

发布时间:2020-12-15 06:35:43 所属栏目:百科 来源:网络整理
导读:我得到这个错误: Could not load file or assembly ‘Microsoft.Practices.ServiceLocation,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The located assembly’s manifest definition does not match
我得到这个错误:

Could not load file or assembly ‘Microsoft.Practices.ServiceLocation,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

如果我的项目中已经有另一个现有版本的Microsoft.Practices.ServiceLocation,那么如何解决这个问题?

解决方法

一种方法是重新编译所有NuGet软件包以使用相同版本的Microsoft.Practices.ServiceLocation.在务实的层面上,这是不实际的:我们需要一个更简单的方法.

更好的方法是使用装配绑定重定向.这个工作非常好,如果界面是一样的.该解决方案经过试用和测试,并在许多FTSE家公司生产.

这就是app.config的样子:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Practices.ServiceLocation" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.2.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

调整目标版本到任何版本,通常是1.2.0.0或1.3.0.0.

PublicKeyToken必须匹配目标程序集.您可以使用以下命令解压缩它:

sn.exe -T assembly.dll

例:

C:test>"C:Program Files (x86)Microsoft SDKsWindowsv8.0AbinNETFX 4.0 Toolsx64sn.exe" -T  C:svnlibTargetDll.dll

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.17929
Copyright (c) Microsoft Corporation.  All rights reserved.

Public key token is ac3efa7c033c2bd5
c:test>

有关获取PublicKeyToken的其他方法,请参阅Getting the PublicKeyToken of .Net assemblies.

PublicKeyToken不会随着装配版本而变化,例如如果程序集是v1.0.0.0或v2.0.0.0,它是一样的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读