.net - GACUtil 与手动编辑 C :\Windows\assembly

标签 .net gac gacutil

我们在项目中使用 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/

相关文章:

c# - 使用 LINQ 的 SQL 表行总和?

c# - 点网核心 3.x PublishSingleFile : Temp files get deleted

c# - 使用 C# 提高大数据导入 SQLite 的性能

gac - 如何判断哪些应用程序在 GAC 中注册了给定的程序集?

c# - NGen 和 Gacutil 最佳实践

visual-studio-2010 - 在每个构建上安装 GAC - 如何可靠地安装

c# - 引用的库未被复制

c# - 从 GAC 列出所有实现特定接口(interface)的 DLL

c# - 如何在 GAC 中注册 .NET DLL 文件?

asp.net - 无法加载文件或程序集 'System.Management.Automation'