跨项目共享MasterPages的最佳方式是什么?

时间:2008-08-27 18:57:18

标签: .net asp.net master-pages

假设您有两个单独的ASP.NET Web应用程序项目,它们都需要使用通用的MasterPage。

在不重复代码的情况下跨项目共享MasterPage的最佳方法是什么?最好不必诉诸源控制或文件系统黑客。

7 个答案:

答案 0 :(得分:11)

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

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

文章末尾的第三颗子弹告诉你可以分享Masterpages的方法。

答案 1 :(得分:4)

来自K. Scott Allen的ASP.Net Master Pages: Tips, Tricks, and Traps文章,关于“分享母版页”:

  

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

     

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

     

最后,ASP.NET 2.0中的VirtualPathProvider可以提供文件   在文件系统上不存在。使用VirtualPathProvider,一套   主页面可以存在于所有应用程序的数据库表中   使用。有关VirutalPathProvider的优秀文章,请参阅“Virtualizing Access to Content: Serving Your Web Site from a ZIP File”。

答案 2 :(得分:2)

将主要副本保留在源代码管理中,让源代码管理系统担心它。

答案 3 :(得分:0)

使用a symbolic link

  

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

答案 4 :(得分:0)

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

然而,IIRC,Visual Studio制作从外部路径添加的文件的本地副本。您可能需要对解决方案/项目文件进行文本编辑以添加链接文件。

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

答案 5 :(得分:0)

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

我认为老实说它可能不是一个好主意..显然你想分享最低的公共代码,但是整个MasterPage?...听起来你可能会遇到麻烦,因为一个小的改动可能会有这样的对一个或多个申请的影响..

我建议将功能好的部分分离到组件/控件中并进行部署。

答案 6 :(得分:0)

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

但是使用代码,显然你可以编写一个继承自

的代码文件
System.Web.UI.MasterPage

在那里的所有母版页中放入你想要的任何逻辑。将它构建为您的精彩dll,然后将其包含在您的项目中。