C# 使用绑定重定向升级两个项目之一
我找不到针对这种情况的信息,因为所有信息都是关于升级整个解决方案的,而不是一次升级一个项目 实际情况是,我想在log4net中使用udp appender,为此我正在将log4net版本从1.2.10.0升级到1.2.15.0。但我也有一个旧版本的nHibernate引用并使用版本1.2.10.0的API 我想通过只升级大型系统的一小部分来降低新版本在生产使用中出现问题的风险。因此,我将仅在特定服务中引用新版本,而共享组件将引用旧版本 例子 库项目A(nhiberate)以强名称引用v1 库项目B通过弱名称引用v1(即仅“log4net”) 应用项目C:C# 使用绑定重定向升级两个项目之一,c#,assembly-binding-redirect,C#,Assembly Binding Redirect,我找不到针对这种情况的信息,因为所有信息都是关于升级整个解决方案的,而不是一次升级一个项目 实际情况是,我想在log4net中使用udp appender,为此我正在将log4net版本从1.2.10.0升级到1.2.15.0。但我也有一个旧版本的nHibernate引用并使用版本1.2.10.0的API 我想通过只升级大型系统的一小部分来降低新版本在生产使用中出现问题的风险。因此,我将仅在特定服务中引用新版本,而共享组件将引用旧版本 例子 库项目A(nhiberate)以强名称引用v1 库项目
- 引用项目B的程序集
- 引用项目A的程序集
- 参考文献v2
- 将强名称v1重定向到v1.dll
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" />
<codeBase version="1.2.10.0" href="log4net-1.2.10.0.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
ildasm.exe
向我显示程序集在清单中包含特定的版本信息。创建示例解决方案并显示问题也很容易
说明
除非配置文件中的显式版本策略覆盖了应用程序,否则应用程序只能使用其生成和测试时使用的版本运行
我希望元数据可以在项目C使用的dll副本中编辑,而不能在项目D使用的副本中编辑
然而,这变得有点复杂
出于我的目的,从头开始编写一个udp appender可能非常容易,它没有log4net 1.2.10.0中的ip v4/v6地址错误
我选择的方法是升级整个系统以使用较新的版本,并在低风险的生产环境中进行更改