.NET 是否将您的库放入 GAC?

Does .NET put your libraries into the GAC?

刚刚调试了一段时间的问题,当我部署应用程序时,它无法在 DLL 文件中找到 class。

最终发现它正在使用的 GAC 中有一个较旧的副本。

由于我没有设置服务器,所以我不知道它是如何到达那里的。

我自己在 .NET 中创建和编译的库如何最终出现在 GAC 中?它是作为发布到 IIS 或类似程序的一部分的自动过程,还是意味着有人在那里手动安装了它?

我只是想减轻未来的部署问题,因为跟踪这个问题很痛苦。

不,这不会自动发生。

GAC documentation 开始,这通常是由于:

  • 使用专门为此设计的安装程序
  • 运行 gacutil

如果这是一个 ASP.NET 应用程序,如果有人为此创建了一个安装程序,我会感到有些惊讶 - 似乎更有可能有人 运行 服务器上的 gacutil。

(幸运的是,GAC 在 .NET Core 中已经消失,所以随着时间的推移,这可能不再是一个问题。并不是说 .NET Core 没有版本控制问题...)