.net - 您是否在 GAC 中安装域 DLL?

标签 .net

在我的 .NET 开发人员职业生涯的大部分时间里,我一直是 ASP.NET/WCF 开发人员,所以我非常习惯将所有 DLL 放在 IIS 目录的 bin 文件夹中的想法。

但是,在最近的一个项目中,我们必须在 WCF Web 服务和多个 .exe 程序之间共享多个 DLL(大约 50 个),因此我们的团队成员之一建议我们可以将这些 DLL 安装到 GAC 中。

我看不出这个想法有什么问题,但我只是觉得将域 DLL(例如特定产品的数据访问和业务逻辑)安装到 GAC 中是错误的,因为这些 DLL 不像 System.Data,后者可在许多环境中重用不同的产品。

您是否将产品的 DLL 安装到 GAC 中?

最佳答案

警告,这里是圣战区

我已经看到了两种方式,如果共享 DLL,我们通常会对其进行 GAC(这是我们的简单经验法则)。基本上我们不希望多次出现相同的 DLL。但是,如果库不稳定,即不断发生变化/新版本,我们会绕过此规则。

有些人认为最好将自己孤立起来(放在 bin 中),以防止有人重新安装可能使您的应用程序崩溃的 gac dll。一般来说,无论何时使用共享库,在进行更改时都需要小心。如果您要破坏其他人,您可能需要考虑增加版本。然后您可以将这两个版本部署到 GAC。

另一个反对放置 bin 的论点是,如果要安装新版本,则必须将其放置在 N 个不同的位置。

我的偏见通过我的回答显示出来(我更喜欢 gac 而不是重复)

关于.net - 您是否在 GAC 中安装域 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3936874/

相关文章:

c# - 如何在不定义路径的情况下读取现有文本文件

c# - 如何在 C# Windows 应用程序中增加标签框文本大小?

.net - 如何检测 SD 卡何时插入?

asp.net - 使用 asp.net mvc 和 Identity 的每个选项卡 session

c# - .NET Core 2 中间件解决方案中的 ClaimsIdentity 问题

c# - 我怎么知道 WPF 窗口在哪个监视器中

.net - NSubstitute的限制是什么,特别是MOQ?

c# - 从基类派生的类的 XmlSerializer 构造函数错误

.Net 相当于 VB6 记录集

.net - NGEN 和平台目标是同一个东西吗?