C# 应用程序将文件从 GAC 复制到执行文件夹

C# application copies files from GAC to execution folder

我对在 .NET 中使用全局程序集缓存有些陌生,并且对它的工作原理有疑问,因为我无法在网上找到任何东西。

我的 msi(使用 Visual Studio 安装程序扩展创建(使用 Visual Studio 2015))将许多程序集安装到 GAC 和我的应用程序中(这些程序集需要在 GAC 中,因为第 3 方应用程序也需要访问它们)。 运行 安装程序并启动应用程序后,我注意到当我启动我的应用程序时,来自 GAC 的 dll 的副本是在应用程序执行目录中创建的。

我的问题是,这是使用 GAC 程序集的正常方式吗?我假设程序集只是从 GAC 加载而不制作本地副本。或者这是我的一些错误以及我如何构建我的应用程序(CopyLocal 设置为 true 但据我了解,这仅对 Visual Studio 重要并且对部署后的实际执行没有影响)。

根据 Hans 的意见,问题出在我的 msi 上,与 GAC 无关。虽然 msi 将程序集安装到 GAC 而不是执行目录,但当应用程序 运行 时,msi "self-healing" 创建文件,它们不会从 GAC 复制。