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

标签 .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,我也可以将 GacUtil.exe(2.0 版本)放在 PC 上,然后然后我可以通过 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 是否依赖于这台电脑没有的东西?

最佳答案

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

问题 #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 中,危机就避免了。

关于.net-4.0 - .NET 4.0 GAC - 无法添加 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9220546/

相关文章:

c# - Entity Framework 4.0 - 版本控制

WCF 4 : Fileless Activation Fails On XP (IIS 5) that has SSL port enabled

.net - GAC 中程序集的配置文件

.net - 我应该使用什么 gacutil.exe?

c# - 自定义控件退出时光标未更改

c# - System.Lazy<T> 和 System.Threading.LazyThreadSafetyMode 枚举

visual-studio-2015 - gacutil.exe 在 Windows 10 中的什么位置?

visual-studio-2010 - gacutil postbuild事件存在,代码为1

c# - 如何将程序集 Oracle.DataAccess 的 app.config 从版本 '2.112.2.0' 重新映射到 '2.112.3.0'

.NET 程序集加载优先级