c# – 错误:无法加载文件或程序集“Microsoft.Practices.Servic
我得到这个错误:
如果我的项目中已经有另一个现有版本的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,它是一样的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |