【问题标题】:How to bypass GAC for strong name assemblies?如何绕过 GAC 进行强名称程序集?
【发布时间】:2013-10-31 16:04:37
【问题描述】:

我有一个具有强名称的程序集的调试版本。我想将程序集安装在 Web 应用程序的 bin 文件夹中。

但是,CLR 会先检查 GAC 中是否存在强命名程序集,然后再继续进行其余的探测。对于我的 Web 应用程序,我希望 CLR 绕过对 GAC 的调查。相反,我希望 CLR 首先查看我的 bin 文件夹,如果它不可用,请查看 GAC。我该怎么做?

【问题讨论】:

  • 您不能覆盖 CLR 查找程序集的基本方式,GAC 始终是第一位的。更改 [AssemblyVersion] 或从 GAC 卸载它。后者在 Web 服务器上绝不应该是问题。
  • GAC 并不总是第一个。见codeproject.com/Articles/12215/…
  • 补充:文章没有说明的是,您不仅可以将 developmentMode-Tag 添加到 machine.config 中,还可以添加到 app.config 中。定义一个环境变量“DEVPATH”,其中包括 CLR 应该查找程序集的文件夹,这对我来说可以绕过 GAC(两个程序集具有相同的强名称)。

标签: .net


【解决方案1】:

汉斯是正确的。

不要这样做 - 只是为了利益;

---交流禁区---

根据经验,我确实相信,如果您安装程序集的另一个副本(即您的调试版本,具有相同的版本号),GAC 中将有 2 个副本,并且将使用最新安装的副本。

---结束通讯禁区---

正如 Hans 所说,为您的调试版本提供一个新版本号,并使用发布者策略(您也将其放入 gac)或程序集重定向指向它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    相关资源
    最近更新 更多