【问题标题】:dll used by CLR at runtimeCLR 在运行时使用的 dll
【发布时间】:2012-07-20 13:25:17
【问题描述】:

我有一个引用 .NET DLL 的 C# 应用程序。
如果这个 DLL 在我的应用程序的bin 目录和 GAC 中都存在,那么 CLR 在运行时会选择哪一个?如果 GAC 有最新版本,是否会使用该版本而不是 bin 中的版本?

我如何强制 CLR 始终使用我的 bin 中的那个而不是 GAC?

According to MSDN:

CLR 检查全局程序集缓存、配置文件中指定的代码库以及 然后检查应用程序的目录和子目录。

那么,这是否意味着它首先会调查 GAC?
谢谢。

【问题讨论】:

    标签: c# .net dll clr


    【解决方案1】:

    您强制 CLR使用 GAC 中的程序集副本,因为它不在 GAC 中。通过重命名 DLL 或在项目中引用它之前更改它的 [AssemblyVersion] 很简单。跳过它会调用讨厌的运行时异常,也就是所谓的 DLL Hell。

    【讨论】:

    • 谢谢。您能否回答我的另一个问题:如果 GAC 有最新版本,是否会使用该版本而不是 bin 中的版本?
    • 这与“最新”无关。您的程序要求提供从参考程序集中获得的特定程序集名称和 [AssemblyVersion]。仅考虑该版本的精确匹配。任何其他匹配策略都会调用 DLL Hell。
    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多