2

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

我知道GacUtil.exe 的新版本,而且Gacutil.exe 仅用于开发目的,不应用于将生产程序集安装到全局程序集缓存中。 让我们假设我在这件事上别无选择,并且由于使用了专有的包分发系统而不得不这样做。=)

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

现在,在我的 PC(开发 PC)上,我可以毫无问题地将 DLL 添加到 GAC: 我的电脑上的命令提示符

但是,在干净的 Windows 7 PC 上,使用相同的 DLL 和相同版本的 GacUtil.exe 我得到了这个: 干净电脑上的命令提示符

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

4

2 回答 2

3

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

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

当我复制 GacUtil.exe 所在的文件夹时,添加程序集的问题消失了: 清洁 PC 上的成功 GAC

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

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

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

于 2012-02-10T14:46:16.873 回答
0

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

于 2014-04-01T04:46:40.803 回答