fli*_*ubt 5 .net c# app-config assembly-binding-redirect
即使我的引用Specific Version设置为false,我也会收到程序集绑定错误,因为目标计算机的版本更高.当某些目标计算机可能具有版本1.61.0.0而其他目标计算机具有1.62.0.0或更高版本时,如何指定当前版本或更高版本以避免以下错误?
System.IO.FileLoadException: Could not load file or assembly 'ServerInterface.NET, Version=1.61.0.0, Culture=neutral, PublicKeyToken=151ae431f239ddf0' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'ServerInterface.NET, Version=1.61.0.0, Culture=neutral, PublicKeyToken=151ae431f239ddf0'
Run Code Online (Sandbox Code Playgroud)
Luk*_*ett 12
您需要为绑定重定向添加Web.config/App.config密钥(请将版本更改为您实际需要的版本):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="ServerInterface.NET" publicKeyToken="151ae431f239ddf0" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
该oldVersion属性设置要重定向的版本范围.该newVersion属性设置应重定向到的确切版本.
如果你正在使用NuGet,你可以自动完成Add-BindingRedirect. 这是一篇解释它的文章
有关绑定重定向的更多信息,请参见此处.
重定向代码中的绑定允许我使用任何版本。您可能需要进行比这更多的检查,因为这会将任何失败的尝试重定向到具有相同名称的任何程序集。
public static void Main()
{
AppDomain.CurrentDomain.AssemblyResolve += _HandleAssemblyResolve;
}
private Assembly _HandleAssemblyResolve(object sender, ResolveEventArgs args)
{
var firstOrDefault = args.Name.Split(',').FirstOrDefault();
return Assembly.Load(firstOrDefault);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11122 次 |
| 最近记录: |