GAC行为

时间:2009-02-18 21:26:50

标签: .net dll gac

我将签名的dll放入GAC。我从其他应用程序可以访问它的文件夹中删除此dll。我尝试运行使用该DLL的客户端应用程序。 Dll会被立即放回到原始文件夹中。它是如何发生的?

我猜GAC正在监控文件夹,当它检测到dll丢失时,它会将最新版本放回到其他应用程序可以访问的文件夹中。如果我是正确的,请告诉我GAC是否会在重建时自动备份dll。

4 个答案:

答案 0 :(得分:2)

GAC并未意识到汇编的来源。最可能的解释是您只需通过IDE重建DLL。

答案 1 :(得分:1)

我不知道为什么会这样,但这些信息可能对您有帮助,

您无需从复制到GAC的位置删除文件。如果应用程序依赖于程序集,则GAC是查找的主要位置。

答案 2 :(得分:0)

此外,如果您将使用不同版本并使用重定向,请务必在参考属性中标记“特定版本”。

回答您的问题:不,GAC不会监控任何其他文件夹以查找对dll所做的更新。 您必须使用gacutil安装每个版本的dll。

答案 3 :(得分:0)

要成功部署.NET Framework应用程序,您必须了解公共语言运行库如何定位和绑定到组成应用程序的程序集。默认情况下,运行时尝试使用构建应用程序的程序集的确切版本进行绑定。配置文件设置可以覆盖此默认行为。

公共语言运行库在尝试查找程序集并解析程序集引用时执行许多步骤。以下各节将介绍每个步骤。在描述运行时如何定位程序集时经常使用术语探测;它指的是用于根据组件的名称和文化定位组件的启发式集。

您可以使用Windows软件开发工具包(SDK)中包含的Assembly Binding Log Viewer (Fuslogvw.exe)在日志文件中查看绑定信息。

...问候

取值