Tru*_*ill 9 c# dll gac reference
我们在所有(许多)内部应用程序中使用log4net.我们通常会执行相当于xcopy部署的操作.为方便开发人员,我们将log4net源编译为一个核心库.
现在又回来咬我们了.其他开源库(如Topshelf)引用log4net.还有一些(例如NServiceBus)将log4net合并到它们的程序集中.通常版本不同.
这是一个普遍的问题; 特定的库只是例子.
有几个类似的问题:
在各种解决方案(GAC,assemblyBinding,bindingRedirect等)中,未来可能会给我们带来最小的痛苦?我们可以修改我们的核心库; 我们无法做任何会破坏现场部署版本的事情.更新我们所有的项目参考将是痛苦的,所以我们只想这样做一次.
更新: Topshelf的当前版本抽象了日志记录,因此这不再是该框架的问题.
对于您的情况,我将使用发布者程序集策略在 GAC 中部署我的 DLL
\n\n发布者策略程序集是配置 .NET 运行时绑定到程序集时要使用的策略的程序集。因此,您可以通过在发布者策略中指定必须使用哪个版本的 DLL 来轻松更新所有项目。
\n\n发布商集会政策示例:
\n\n<configuration> \n<runtime>\n <assemblyBinding xmlns=\xe2\x80\x9durn:schemas-microsoft-com:asm.v1\xe2\x80\xb3>\n <dependentAssembly> \n <assemblyIdentity name=\xe2\x80\x9dwebsite\xe2\x80\x9d publicKeyToken=\xe2\x80\x9d18517ea673f8584b\xe2\x80\x9d culture=\xe2\x80\x9dneutral\xe2\x80\x9d />\n <bindingRedirect oldVersion=\xe2\x80\x9d1.0.0.0\xe2\x80\xb3 newVersion=\xe2\x80\x9d2.0.0.0\xe2\x80\xb3/> </dependentAssembly> \n</assemblyBinding> \n</runtime> \n</configuration>\nRun Code Online (Sandbox Code Playgroud)\n