.NET 4.0 GAC - 无法添加DLL

时间:2012-02-09 23:25:31

标签: .net-4.0 gac gacutil

我使用命名空间System.Windows.Forms.DataVisualization.Charting在表单上创建Chart对象。这个DLL不是基本Windows安装的一部分,所以当我分发我的应用程序时,我需要将它包含在我的包中。

我知道new version of GacUtil.exe以及Gacutil.exe is only for development purposes and should not be used to install production assemblies into the global assembly cache.让我们假设我没有选择,因为使用了专有的软件包分发系统,所以必须这样做。 =)

编辑/更新:在2.0运行时,即使某些PC没有在预期的安装PC上存在GacUtil.exe,我也可以在PC上删除GacUtil.exe(2.0版本)然后,我可以GAC我需要的任何额外组件。这似乎是4.0运行时中的问题。即使我已将GacUtil.exe(4.0)复制到目标PC,但在针对所需的程序集运行它时,我得不到任何反馈。 结束编辑/更新

现在,在我的PC(开发PC)上,我可以毫无问题地将DLL添加到GAC: Command Prompt On My PC

但是,在干净的Windows 7 PC上,使用相同的DLL和相同版本的GacUtil.exe,我得到了这个: Command Prompt On Clean PC

为什么会出现差异?新的GacUtil.exe是否依赖于这台PC没有的东西?

2 个答案:

答案 0 :(得分:3)

好吧,我最终遇到了两个问题,其中一个问题最终成了一个有争议的问题。

问题#1:GacUtil.exe(对于4.0 CLR)具有依赖性

当我复制GacUtil.exe所在的文件夹时,添加程序集的问题就会消失: Successful GAC on Clean PC

然而,这最终成为一个有争议的问题,因为即使文件在客户端计算机上的4.0 GAC中,我仍然遇到了崩溃。我当时意识到问题在于我不是定位 4.0 GAC - 我的目标是2.0 GAC。我试图一直添加到GAC的文件是该文件的4.0版本。这是我不理解的部分。

问题#2:“GACable”DLL有4.0和2.0版本,并且它们不向后兼容

我只是回到我的开发机器并抓住了有问题的DLL的3.5版本(System.Windows.Forms.DataVisualization),将其添加到客户端PC上的2.0 GAC,避免了危机。

答案 1 :(得分:0)

如果添加“ 1033 ”子文件夹并包含 gacutlrc.dll 文件,则可以在自己的文件夹中运行4.0 Gacutil,该文件位于标准位置中的相同子文件夹。