在没有询问的情况下,应用程序在GAC中安装第三方程序集是不好的做法?

Dan*_*plo 2 .net asp.net assemblies gac ajaxcontroltoolkit

场景:我们有一个服务器,其上托管有多个ASP.NET网站.几天前,这些网站中有相当一部分"破产",出现以下错误:

警告44无法解析此参考.无法找到程序集"AjaxControlToolkit,Version = 1.0.10920.32880,Culture = neutral,PublicKeyToken = 28f01b0e84b6d53e,processorArchitecture = MSIL".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.

经过一些调查后,似乎已在服务器上安装了(商业)CMS系统,并且已将第三方AjaxControlTookit添加到全局程序集缓存中.它没有问,它只是添加了它(事实上,它添加了两个版本:1.0.10618.0和3.0.20229.0).这导致解决冲突,因为有问题的网站在其本地/ Bin目录中引用了不同版本的Toolkit.

所以,我想我的问题是:你认为这个CMS在GAC中安装这些程序集是否可以接受(特别是考虑到程序集是开源库而不是它们自己的)?或者是因为他们如何在/ Bin文件夹中引用程序集更明确地"破坏"错误的网站?谢谢.

cod*_*ape 7

不,我不认为这是可以接受的.

程序集应该放在应用程序的bin文件夹中.

安装程序应尽可能在本地进行更改.

在许多情况下,最好的安装程序根本就没有安装程序.至少对于服务器端应用程序.我宁愿有一个zip文件+ INSTALL.txt说:

  1. 系统要求:IIS,ASP.NET 2.0,SQL Server 2005
  2. 创建新的空目录
  3. 将内容解压缩到目录中
  4. 创建指向目录的IIS虚拟目录
  5. 执行该foo.sql文件以创建数据库
  6. 在中配置数据库连接字符串 web.config

我曾经看过Windows Installer描述为:"Windows注册表的激进右翼".发现很有趣......