我们在项目中使用 GAC,在开发过程中,我们经常需要在注册新的 DLL 之前取消注册以前版本的 DLL。虽然我们可以使用 GACutil.exe 来执行此操作,但我们也可以将我们的 DLL 拖放到 C:\Windows\assembly 以注册它们,然后右键单击 + 卸载以取消注册它们(或者有时我们在命令提示符下使用“del”和 DLL 的名称)。
我的问题:是否有任何迹象表明我们的行事方式不符合要求?它是否等同于“GACUtil -i”和“GACUtil -u”,还是会导致问题?
谢谢,
此功能由自定义外壳扩展 shfusion.dll 提供。它使 GAC 扁平化并使其看起来像一个文件夹。并在您操作资源管理器窗口时自动为您取消/注册程序集。所以你这样做很好。
请注意,这将不再适用于 .NET 4,它在不同的文件夹 (c:\windows\microsoft.net\assembly) 中使用 GAC,并且该文件夹没有相同类型的 shell 扩展,您会看到原始GAC 文件夹的内容。不要惹那个。
一般来说,你不应该像那样在你的开发机器上使用 GAC。一方面,使用它的目的是允许程序集的多个版本共存,因此不断地取消/注册是没有意义的。另一方面,在开发过程中不断更改 [AssemblyVersion] 没有多大意义。强烈支持 IDE 支持的 Copy Local 功能。将它放在 GAC 中对您的用户计算机很有用。我认为,这也是微软不再支持 shell 扩展的原因。它被使用得太频繁了:)