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