位于网络上的引用程序集在ASP.Net中共享

问题描述:

我在哪里我们有大量程序可以运行,它们都使用网络共享中的一组程序集中的功能:写入常见系统日志,数据库连接字符串,一些常见的业务对象和功能等。位于网络上的引用程序集在ASP.Net中共享

我们喜欢这种设置,因为它可以很容易地部署错误修复和新功能:只需更新共享驱动器和每个应用程序他们是最新的。需要打破二进制兼容性?它没有做得轻松,但仍然没有什么大不了的:只需添加一个新的文件夹和新的版本号。 Subversion知道每个版本的位置,所以错误修复仍然可以部署到每个版本中的代码中。首先可能会有一些讨论,以确保它确实是必要的,因此我们可以将一些更改分批到一个新的集合中,但是到目前为止,完成此操作的需求已非常罕见。

为了支持这一点,我们有一些自定义项目模板自动包括对公共库,引用并再次:我们真的很喜欢这个设定。

现在终于为这个问题—许多我们做什么的肉支持大量的小笔遗产经典的ASP页面。这些,以及新的发展,也慢慢转向.Net。我们真的希望能够为我们的其他应用程序使用的这些Web应用程序使用支持框架。传统观点认为,ASP.Net应用程序不能引用GAC之外的程序集或它自己的小型虚拟目录。因此,为了在我们的ASP.Net页面中使用我们的通用代码,我们最好做的就是将其安装到Web服务器和每台开发人员的GAC上,并确保此代码的每个更新都传播到这些位置。我们觉得这很讨厌。

鉴于我们可以为ASPNet帐户提供从共享代码所在的网络共享位置读取所需的权限,并且我们将为这些应用程序构建一些自定义项目模板(因此可以自动包含一些设置在web.config或子类中,以普通的asp.net页面类作为我们的出发点,例如)是否有人知道任何非常规的智慧,说我们可能能够从他们当前的位置引用这些程序集?

据我所知,在ASP.NET共享组件的唯一途径(无码)是GAC(或维护本地副本的每个站点,并确保每一个是最新的),像你说的。

可能更trobule比它的价值,但有书面可以加载到GAC你的Web服务器的单个组件的任何机会呢?

我的想法是,你可以在GAC写一个组件会,通过传统的引用或反射,马歇尔你为你的共享驱动器上从其他共享组件对象请求。

这样,你就必须在共享文件夹中的组件最少的维护头疼,真的只需要担心保持单个组件在GAC是最新的。

...编写该程序集的代码总是可能会变得比它的价值更麻烦。

Joel,难道你的应用程序的配置文件不可能有leverage the <codebase> element吗? AFAIK,它处理UNC共享,如果你已经将新的程序集版本放入命名文件夹中,那么当新版本推出时,似乎可以使用新的<codebase>元素更新相应的配置文件,可能是通过使用颠覆钩脚本。

如果您在不更改版本号的情况下进行更新,则会出现一个故障,因为机器已经下载了一个副本并且可能不知道更改。