在我所在的地方,我们有大量可以运行的程序,它们都使用位于网络共享上的一组程序集的功能:例如写入公共系统日志、数据库连接字符串、一些常见的业务对象和函数,等等
我们喜欢这种设置,因为它可以轻松部署错误修复和新功能:只需更新共享驱动器上的程序集,并且使用它们的每个应用程序都是最新的。需要打破二进制兼容性?这不是轻而易举的事,但也不是什么大不了的事:只需添加一个带有新版本号的新文件夹。Subversion 知道每个版本的位置,因此仍然可以将错误修复部署到每个版本中重复的代码。可能还会首先进行一些讨论,以确保它确实有必要,因此我们可以将多个更改批处理到一个新集合中,但到目前为止,这样做的需求非常少。
为了支持这一点,我们有一些自定义项目模板,它们自动包含对公共库的引用,再说一遍:我们真的很喜欢这种设置。
现在终于到了问题的实质——我们所做的大部分工作是支持大量的小型遗留经典 ASP 页面。随着新的发展,这些也正在慢慢转移到.Net。我们真的希望能够为这些 Web 应用程序使用与我们的其他应用程序相同的支持框架。传统观点认为 ASP.Net 应用程序不能引用 GAC 之外的程序集或它自己的小虚拟目录。因此,要在我们的 ASP.Net 页面中使用我们的通用代码,我们可以做的最好的事情是将其安装到 Web 服务器和每台开发人员机器上的 GAC,并确保此代码的每次更新也传播到这些位置。我们觉得这很令人反感。
鉴于我们可以为 ASPNet 帐户授予从公共代码所在的网络共享读取所需的权限,并且无论如何我们将为这些应用程序构建一些自定义项目模板(因此可以自动在 web.xml 中包含一些设置。例如,将普通的 asp.net 页面类配置或子类化作为我们的起点)有没有人知道任何非常规的智慧,说我们可能能够从它们当前的位置引用这些程序集?