您是否在GAC中安装域DLL?

osc*_*kuo 8 .net

我是.NET开发人员职业生涯中的大部分ASP.NET.WCF开发人员,因此我非常习惯于将所有DLL都放在IIS目录的bin文件夹中.

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

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

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

Nix*_*Nix 7

警告,这是一个圣战区

我已经看到了两种方式,如果共享DLL我们通常GAC它(这是我们简单的经验法则).基本上我们不希望多次出现相同的DLL.但是,如果库不稳定,我们会绕过此规则,也就是经常更改/新版本.

有些人认为最好自己封锁(置于垃圾箱中),以防止有人重新安装可能导致应用程序崩溃的gac'd dll.通常,无论何时使用共享库,都需要在进行更改时注意.如果你打算打破其他人,你可能想考虑增加版本.然后,您可以将两个版本部署到GAC.

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

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


Édg*_*dón 5

大多数情况下,我们不会将应用程序.DLL放在GAC上,这会导致一些重复,但是,超时会简化问题,因为版本控制(您拥有的应用程序越多,它们以不同的速度发展的越多)比浪费更难一些(便宜的)磁盘空间.