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