【问题标题】:Is it possible to apply a publisher policy to a strongly named, privately published assembly?是否可以将发布者策略应用于强命名的私有发布程序集?
【发布时间】:2010-11-09 10:13:38
【问题描述】:

我在工作中创建了一个通用库,但与this question 不同,它没有发布到 GAC。相反,它会私下发布到公司特定的安装文件夹。 编辑:所有内部应用程序都进入同一个文件夹。

是否仍然可以应用发布者策略,允许旧应用程序使用新版本的 DLL? This article 听起来我可以,但我并不完全清楚。

如果是这样,我应该将什么分发到我公司特定的安装文件夹中?

  1. 公共库的配置文件? (policy.1.0.MyLibrary.config)(这将是最简单的。)
  2. 公共库的策略 DLL? (policy.1.0.MyLibrary.dll -- #1 的编译版本。)
  3. 或者为每个使用公共库的应用程序提供一组配置文件? (MyApp1.exe.config、MyApp2.exe.config 等)(YUCK!)

【问题讨论】:

    标签: .net publisher-policy


    【解决方案1】:
    1. 将是您所需要的 IMO。或者准确地说,在您的 app.config 设置 bindingRedirect 元素中,您就完成了。

    抱歉。 bindingRedirect 要求该文件夹位于您的应用程序文件夹下。

    对于 GAC 而言,不在 app 文件夹下的“公司特定安装文件夹”有什么好处?如果他们希望共享程序集,IMO GAC 会更好。

    如果他们坚持您可以“手动”加载程序集。看AppDomain.AssemblyResolve事件。

    【讨论】:

    • 应用程序安装在与库相同的文件夹中,这样就可以了。但听起来你在谈论应用程序的 app.config 文件,这是我的 #1。是否可以改为编写 policy.1.0.mydll.config 文件?
    • 抱歉,从未使用过策略配置文件。但我怀疑你不需要一个。只需在 XYZ.exe.config 中使用 bindingRedirect
    • 有多个应用程序使用该库。所以我必须为它们中的每一个创建和维护配置文件,并且我还需要知道新应用程序的编写。就像我在问题中对 #3 所说的那样......太糟糕了!
    • 据我了解,您有一些文件夹,在该文件夹中复制了库 .dll 以及应用程序 .exe 和 .dll。部署新库 .dll 意味着覆盖旧库 .dll(同名),但新文件具有不同的 AssemblyVersion。对吗?
    • 已查找策略 dll。似乎它们已部署到 GAC 并且仅适用于 GAC 中的绑定程序集。但最好测试一下这种情况。另一种可能性是 machine.config 文件中的程序集绑定。问题的根源是糟糕的部署方案 IMO。看这里:ondotnet.com/pub/a/dotnet/2003/03/17/bindingpolicy.html
    猜你喜欢
    • 2010-12-19
    • 2011-10-27
    • 2010-10-08
    • 2021-11-12
    • 2017-09-09
    • 1970-01-01
    • 2018-06-28
    • 2021-05-31
    • 2010-09-16
    相关资源
    最近更新 更多