假设您有两个独立的 ASP.NET Web 应用程序项目,它们都需要使用公共母版页。

在项目之间共享 MasterPage 而无需重复代码的最佳方式是什么?最好不必诉诸源代码控制或文件系统黑客。

有帮助吗?

解决方案

我一直在努力完成同样的事情。我研究了几个解决方案,但我认为使用虚拟目录可能是共享母版页的最佳方式。

您可以查看以下几个来源。

文章末尾的第三个要点告诉您共享母版页的可能方法。

其他提示

来自 K.斯科特·艾伦的 ASP.Net 母版页:提示、技巧和陷阱 关于“共享母版页”的文章:

第一种替代方法是将共享母版页文件复制到 IIS Web 服务器上的单个位置。然后,每个应用程序都可以创建 一个虚拟目录作为子目录,并将虚拟目录指向 添加到母版页的实际目录。然后,应用程序可以设置 将页面的 MasterPageFile 属性设置为虚拟名称 目录,以及母版页文件的名称。当我们放下一个 将母版页文件更新到实际目录中,即新的母版页 将立即出现在所有应用程序中。

第二种方法是使用版本控制系统来共享一组 跨多个项目的母版页文件。大多数源代码控制 / 版本控制系统支持某种程度的“共享”功能, 文件或文件夹可以出现在多个项目中。当 开发人员签入更新的母版页文件,签入其他项目 将立即看到更改(尽管此行为通常是 可配置)。在生产和测试中,每个应用程序都需要 重新部署以显示更新母版页。

最后,ASP.NET 2.0 中的 VirtualPathProvider 可以提供以下文件 文件系统上不存在。使用 VirtualPathProvider,将 的母版页可以位于所有应用程序的数据库表中 用。有关 VirutalPathProvider 的优秀文章,请参阅“虚拟化内容访问:通过 ZIP 文件为您的网站提供服务”.

在源代码管理中保留一个主副本,并让您的源代码管理系统来处理它。

假设您可以为所有项目创建一个公共存储库(例如,源代码控制树中的公共文件夹),则可以使用相对路径将母版页添加为链接。

但是,IIRC、Visual Studio 会制作从外部路径添加的文件的本地副本。您可能必须对解决方案/项目文件进行文本编辑才能添加链接文件。

当然,这是假设您使用“Web 应用程序”格式。旧版 VS“网站”没有项目文件,并且依赖于网站文件夹中的所有文件。

AFAIK 没有优雅的方式来做你想要的事情..VS最终总是会复制它。

老实说,我认为这可能不是一个好主意。显然您想共享最低的通用代码,但是整个 MasterPage?..听起来您可能会遇到麻烦,因为一项微小的更改可能会对一个或多个应用程序产生如此大的影响。

我建议将好的功能分成组件/控件并部署它们。

我不明白为什么你会想在不同的项目中使用相同的标记,如果你这样做,我不知道一个简单的方法。

但是,对于代码,显然您可以编写一个继承自的代码文件

System.Web.UI.MasterPage

在所有母版页中放入您想要的任何逻辑。将其构建为您出色的 dll,然后将其包含在您的项目中。

使用 符号链接:

符号链接是指向另一个文件的文件系统对象 系统对象。所指向的对象称为目标。符号链接对用户是透明的;链接正常显示 文件或目录,并可由用户或应用程序执行操作 以完全相同的方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top