Windows / .net是否在任何情况下都会自动将DLL放入GAC中

 2021-04-27 

Does Windows/.net put DLLs in the GAC automatically under any circumstances

我有一个引用DLL的程序。此DLL中的代码获取正在执行的DLL的目录,并使用该目录查找要加载的XSD文件(即,我希望代码从c:\\\\\\\\ foo \\\\\\\\\\ my.dll中执行,因此它查找c:\\\\\\\\ foo \\\\\\\\ validation.xsd)。

在成千上万的客户安装中,我的工作正常。但是,在一种情况下,DLL已安装在GAC中。这意味着,当它查找XSD文件时,找不到它作为执行目录,而该目录是GAC而不是c:\\\\\\\\ foo。

我的问题是:这是Windows / .net的功能,在某些情况下会导致将其安装在GAC中吗?当然,安装程序显然不会将DLL放入GAC中,否则我将在所有位置显示此问题。

我搜索过Stackoverflow和Google,尽管有很多关于从GAC安装和删除文件的信息,但我找不到任何可以自动发生的信息。我想知道客户站点上的管理员是否手动将这些DLL放入其中。他们似乎不太可能去打扰,但您永远不知道用户会做什么!

谢谢,

Xanthalas


有人可能会使用Gacutil在GAC中安装了该程序集。

程序集未将其自身安装在GAC中。


我不认为它会自动发生,但是如果使用相同依赖项的单独应用程序已经在GAC中注册了它,则可以解释您所看到的内容。在这种情况下,用户可能没有故意或有意对DLL做任何事情。