代码之家  ›  专栏  ›  技术社区  ›  Shawn Miller

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

  •  24
  • Shawn Miller  · 技术社区  · 17 年前

    假设你有两个单独的ASP。NET Web应用程序项目,两者都需要使用一个共同的母版页。

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

    7 回复  |  直到 17 年前
        1
  •  11
  •   Gyum Fox    8 年前

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

    这里有几个来源,你可以看看。

    文章结尾的第三个项目符号告诉你也可以分享母版页的可能方式。

        2
  •  4
  •   Gyum Fox    8 年前

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

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

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

    最后,介绍ASP.NET中的VirtualPathProvider。NET 2.0可以提供以下文件 文件系统上不存在。使用VirtualPathProvider,一组 母版页可以存在于所有应用程序的数据库表中 使用。有关VirutalPathProvider的精彩文章,请参阅 Virtualizing Access to Content: Serving Your Web Site from a ZIP File .

        3
  •  2
  •   Joel Coehoorn    17 年前

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

        4
  •  0
  •   Ishmaeel    17 年前

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

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

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

        5
  •  0
  •   Rob Cooper    17 年前

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

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

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

        6
  •  0
  •   Chris James    17 年前

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

    然而,对于代码,显然你可以编写一个继承自

    System.Web.UI.MasterPage
    

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

        7
  •  0
  •   Darbio    13 年前

    使用 a symbolic link :

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

    推荐文章