.net 4.0 .NET 4.0 GAC-无法添加DLL

.net 4.0 .NET 4.0 GAC-无法添加DLL,.net-4.0,gac,gacutil,.net 4.0,Gac,Gacutil,我正在使用命名空间System.Windows.Forms.DataVisualization.Charting在表单上创建Chart对象。此DLL不是基本Windows安装的一部分,因此在分发应用程序时,我需要将其包含在包中 我知道,而且让我们假设我在这件事上没有选择,因为使用了专有的软件包分发系统,我不得不这样做 编辑/更新:在2.0运行时,即使某些电脑的预期安装电脑上没有GacUtil.exe,我也可以将GacUtil.exe(2.0版本)放在电脑上,然后我就可以添加任何我需要的额外程序集

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

我知道,而且让我们假设我在这件事上没有选择,因为使用了专有的软件包分发系统,我不得不这样做

编辑/更新:在2.0运行时,即使某些电脑的预期安装电脑上没有GacUtil.exe,我也可以将GacUtil.exe(2.0版本)放在电脑上,然后我就可以添加任何我需要的额外程序集。这似乎是4.0运行时的一个问题。尽管我已将GacUtil.exe(4.0)复制到目标PC,但在针对所需程序集运行它时,我没有收到任何反馈结束编辑/更新

现在,在我的PC(开发PC)上,我可以将DLL添加到GAC,而不会出现任何问题:

但是,在干净的Windows 7 PC上,使用相同的DLL和相同版本的GacUtil.exe,我得到以下结果:


为什么会有差异?新的GacUtil.exe依赖于这台电脑没有的东西吗?

好的,我最后遇到了两个问题,其中一个问题最终没有意义

问题#1:GacUtil.exe(用于4.0 CLR)具有依赖关系

当我复制GacUtil.exe所在的文件夹时,添加程序集的问题消失了:

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

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


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

如果添加“1033”子文件夹并包含文件gacutlrc.DLL,您可以从自己的文件夹运行4.0 Gacutil,它可以在标准位置的同一子文件夹中找到。

如果gacutil.exe可用,它就不能是干净的计算机。您通过的路径毫无意义,您要求gacutil将一个程序集从GAC安装到GAC中。@Hanpassant感谢您的关注-您可能暗示我对新的gacutil/GAC一无所知(您是对的)。=)我已经更新了我的问题(请参见编辑/更新),并更改了屏幕截图以反映当前情况。