.net GAC行为

.net GAC行为,.net,dll,gac,.net,Dll,Gac,我将已签名的dll放入GAC。我从其他应用程序可以访问的文件夹中删除此dll。我尝试运行客户端应用程序,它使用了那个dll。Dll立即放回原始文件夹。这是怎么发生的 我猜GAC正在监视文件夹,当它检测到dll丢失时,会将最新版本放回其他应用程序可以访问的文件夹。如果我是正确的,请告诉我如果要重建dll,GAC是否会再次自动备份它。GAC不知道程序集的来源。最可能的解释是,您只是得到了由IDE重建的DLL。我不知道为什么会发生这种情况,但这些信息可能会帮助您 您不需要从复制到GAC的位置删除文件。

我将已签名的dll放入GAC。我从其他应用程序可以访问的文件夹中删除此dll。我尝试运行客户端应用程序,它使用了那个dll。Dll立即放回原始文件夹。这是怎么发生的


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

GAC不知道程序集的来源。最可能的解释是,您只是得到了由IDE重建的DLL。

我不知道为什么会发生这种情况,但这些信息可能会帮助您


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

此外,如果要使用不同版本并使用重定向,请确保在引用的属性中将“特定版本”标记为false

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

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

公共语言运行库在尝试查找程序集和解析程序集引用时执行许多步骤。以下各节将对每个步骤进行说明。术语探测通常用于描述运行时如何定位程序集;它是指用于根据程序集名称和区域性定位程序集的一组启发式方法

可以使用Windows软件开发工具包(SDK)中包含的查看日志文件中的绑定信息

问候


我终于发现了如何删除这个dll。客户端代码无论如何都可以运行这个库。我注意到该dll的副本被放入了Windows\assembly\GACmsil中-这是为什么。我希望客户端代码使用原始目录中的dll-而不是windows中的dll…这是GAC存储。CLR总是先搜索GAC,然后探测本地目录。请更新您的帖子并告诉我您是如何删除DLL的。