将一个名为.dll的(类型)安装到GAC

时间:2013-05-10 11:27:21

标签: windows-server-2008 windows-server-2003 gac gacutil

我需要将一些程序从一台服务器迁移到另一台服务器。在这个过程中,我发现我们错过了一个.dll - 我在原始服务器上跟踪它。它既在文件系统上(在似乎是一个存储目录,没有链接到任何东西)和GAC。我将.dll从存储目录中取出到新服务器上,并尝试使用GACUtil安装它 - 但它失败并显示消息:

Failure adding assembly to cache: Attempt to install an assembly without a strong name

这对我来说很奇怪,因为它已经成功安装在以前的服务器上(两个.dll的版本#s是相同的)。但是,由于我没有此.dll的源代码,因此可能会将GAC中的版本重新编译为强名称,并且“存储”中的版本未更新。

一种可能的解决方法是手动安装.dll。在C:\ Windows \ Microsoft .NET \ assembly \中存在.NET 4.0分离的GAC目录结构,我可以使用相同的公共文件创建GAC_MSIL \ [.dllname] \ v ### __ [PublicKey] \文件夹key作为旧服务器上的GAC实现,并将.dll文件放在那里。但是,.dll绝对不是用.NET 4.0编译的(甚至不是.NET 3.5,我不认为) - 所以这甚至可以工作吗?或者我需要做些什么改变才能让它发挥作用?

我不知道如何手动将某些内容安装到“旧”GAC中,这是一个带有Windows资源管理器GUI的内容,因为目录结构没有向我公开。这个答案(https://stackoverflow.com/a/382318/1675729)似乎表明有一个基础结构可以尝试类似的手动安装方法 - 如果这样可行,有人可以给我一些关于如何访问该结构的更多信息吗? / p>

当然,如果有办法在GAC中安装名称较弱的.dll,那将是理想的选择。这个.dll不会导致任何.dll-hell问题,因为它有特定的目的(和名称),并且只会被一个程序使用。但是,我不知道如何做到这一点,因为它似乎完全反对GAC的目的,所以我对此缺乏信息并不感到惊讶。

我对所有建议持开放态度,并乐意提供更多我能提供的信息 - 我不确定这里需要注意什么。

非常感谢!

0 个答案:

没有答案