【问题标题】:What is the best way to share MasterPages across projects跨项目共享 MasterPages 的最佳方式是什么
【发布时间】:2010-09-07 01:11:56
【问题描述】:

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

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

【问题讨论】:

    标签: .net asp.net master-pages


    【解决方案1】:

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

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

    文章末尾附近的第三个项目符号告诉您还可以共享母版页的可能方式。

    【讨论】:

      【解决方案2】:

      来自 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”。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

            【解决方案5】:

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

            老实说,我认为这可能不是一个好主意.. 显然您想共享最低的通用代码,但是整个 MasterPage?.. 听起来您可能会自找麻烦,因为一个小的更改可能会有这样的对一个或多个应用程序的影响..

            我建议改为将好的功能部分分离到组件/控件中并部署它们。

            【讨论】:

              【解决方案6】:

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

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

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

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

              【讨论】:

                【解决方案7】:

                使用a symbolic link:

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2010-09-20
                  • 2016-02-12
                  • 2010-10-31
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多