c# – 错误:无法加载文件或程序集“Microsoft.Practices.ServiceLocation,Version = 1.0.0.0

前端之家收集整理的这篇文章主要介绍了c# – 错误:无法加载文件或程序集“Microsoft.Practices.ServiceLocation,Version = 1.0.0.0前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我得到这个错误

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 SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\sn.exe" -T  C:\svn\lib\TargetDll.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,它是一样的.

猜你在找的C#相关文章