在 GAC 中安装依赖于私有程序集的强命名程序集时会发生什么

What happens when a strong named assembly that depends on private assemblies is installed in GAC

如果强命名程序集 'A' 依赖于私有程序集 'B' 和 'C'。当我使用 'gacutil.exe' 在 GAC 中安装 A 时,B 和 C 会发生什么情况?我在 GAC 目录的文件夹中看不到它们。它是否仍会引用 B 和 C 的位置,即如果 B 和 C 在部署之前位于 Debug 文件夹中(在 A 的同一目录中),那么在 GAC 中安装 'A' 后 A 是否会绝对引用 B 和 C?

文件夹调试:-

    A.dll
    B.dll
    C.dll
    main.exe

说,main.exe 现在运行完美,我将它安装在另一台机器上,如果 A 不存在,main.exe 将无法工作,所以我也在目标机器的 GAC 中安装了 A。但我该怎么做呢?当我使用 gacutil 时,它不会将 B 和 C 复制到 GAC 中 A 的目录中?

以这种方式安装依赖于其他一些程序集的程序集是完全有效的(在 GAC 中,依赖项要么由应用程序加载,要么根本不存在)。 IE。如果无法加载引用的程序集,A 可以提供某种方式(或自动)来禁用功能。

如果您知道所有 3 个程序集都应安装在 GAC 中,则您有责任通过设置来安装。

请注意,GacUtil 不是可重新分发的工具 - 即使它不能帮助您进行本地安装(因为它不会自动安装依赖项),它也不能真正帮助您在其他机器上安装(假设您关心规则)。参见 What's the 'correct' way of registering/installing an Assembly to the GAC?