我们为我们的各个公司/部门提供了几个不同的 Intranet 站点。它们之间的许多内容都是独一无二的,但它们确实有一些共享的组件。
我们当前的部署设置(很糟糕)涉及使用 Visual Studio 中的复制网站工具在项目目录和服务器上的部署位置之间复制/同步文件。然后在服务器上的 IIS 中,我们可以设置虚拟目录指向共享项(主要是 .aspx 页面)。这些页面在站点的根目录中查找标准母版页,因此可以在具有各自品牌的每个单独站点中正常工作。
几个例子:
- /假期日历
- /电话目录
- /控件(.ascx 文件)
虽然它在生产中运行良好,但由于多种原因它很糟糕:
- 复制网站工具很糟糕。
- 您无法在本地调试这些组件,因为它们实际上并不存在于站点中。
- 该站点没有预编译,这带来了明显的性能问题。
所以我想扔掉所有的废话,转而使用预编译的站点,通过一个 Web 部署项目将所有内容都放在服务器上。这就提出了如何处理共享组件的问题。我很确定在这种环境中我无法摆脱虚拟目录的伎俩,坦率地说,我真的不想这样做。
如何使 .aspx/.ascx 文件和关联的图像/脚本/CSS 资源的子目录有点像类库?假设我将 VacationCalendar 目录中的所有内容放入其自己的项目/解决方案中,然后让每个 Intranet 站点导入它并使所有这些文件在 /VacationCalendar 路径下可用。有没有什么方法可以做这样的事情而不会让人头疼?
我真的不想将所有这些站点合并到一个解决方案中,因为总是有可能需要在源代码控制中限制访问。