oli*_*oli 5 .net plugins f# assembly-resolution assembly-binding-redirect
我有一个plugin P扩展和application A(.NET40),我无法控制。
P 程序集 (.NET40) 有一个shared dependency D(.NET35)。
P 和 D 都依赖于 FSharp.Core,但版本不同:
P编译针对FSharp.Core, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
D编译针对FSharp.Core, Version=2.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
只部署了 FSharp.Core, Version=4.4.0.0 并且我订阅了 AppDomain.AssemblyResolve 来加载部署的程序集。
当我在 GAC 中安装了两个 FSharp.Core 版本的机器上进行测试时,它们最终都加载了插件。
我的理解是绑定重定向将是这里的解决方案,但如何在不访问 app.config 的情况下完成它?
您可以将 D 部署为发布者策略程序集。
\n\n这种方法的好处是客户端目录不需要包含 *.config 文件来重定向到较新的版本。发布者策略允许程序集的发布者将 *.config 文件的二进制版本安装到 GAC(以及程序集)中。这样,CLR 将能够在 GAC 级别执行请求的重定向。
\n\n如果要绕过某个应用程序的发布者策略,可以使用 元素在 app\xe2\x80\x99s *.config 文件中指定<publisherPolicy>。
<?xml version="1.0" encoding="utf-8" ?>\n<configuration> \n <runtime>\n <assemblyBinding xmlns=\xe2\x80\x9curn:schemas-microsoft-com:asm.v1\xe2\x80\x9d> \n <publisherPolicy apply="no" />\n </assemblyBinding>\n </runtime> \n</configuration>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |