2

第一次在这些板上提出问题,希望我能得到一些帮助,这里是:

我正在努力在我的客户上启动 .NET 实践。我们目前有 5 个小型 .NET 应用程序,其中一些已投入生产。它们大多是带有一些数据输入/业务逻辑功能的小型报告片段。这些应用程序中的每一个当前都使用相同的母版页。

我的意思是每个应用程序中都有相同母版页的副本。它们都是基本的网站->WCF->BL->DB 分层应用程序。所以我有 4 个相同母版页的副本,当我对其进行更改时,我必须更改它们。

客户不想将所有这些整合到一个解决方案中。他们喜欢跨站点的应用程序分离。我只是不想继续处理公共元素的多次更新的麻烦(在这些应用程序中会有更多更新)。

代码全部存储在团队基础服务器中。我们也不想将母版页编译成 .dll 并部署它。

任何人都可以就如何在我的多个应用程序中维护这些公共文件(主文件、.css 等)的单个副本提出一些建议。

提前致谢

4

6 回答 6

2

您可能想查看在 Visual Studio 中共享母版页

如果这没有帮助,那么您可以尝试在 Visual Studio 中使用构建事件。我会选择其中一个项目作为我的“主项目”,并且只编辑该项目的母版页。当您构建项目时,它会运行一个命令,将该母版页(如果已更改)复制到您设置的位置。

于 2009-01-23T21:47:28.963 回答
0

客户不想将所有这些整合到一个解决方案中。他们喜欢跨站点的应用程序分离。我只是不想继续处理公共元素的多次更新的麻烦(在这些应用程序中会有更多更新)。

代码全部存储在团队基础服务器中。我们也不想将母版页编译成 dll 并部署它。

你消除了那里仅有的两个真正的选择。母版页中的全部内容是什么?是否可以将 HTML UI 元素提取到单个模板或一系列模板 HTML 文件中,然后将它们动态导入到母版页中?然后,您可以将通用 HTML 重新定位到任意 URL,并让每个应用程序的母版页动态地将其拉入。

编辑:我撒谎了。您还可以使用像 Sharepoint 这样的 VirtualPathProvider 将母版页存储在数据库或其他目录中,但请注意 VirtualPathProviders 在 MediumTrust 环境中不起作用。

请参阅:http:
//msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx

于 2009-01-23T21:46:59.103 回答
0

如果您使用的是 Web 应用程序(编译成 dll)而不是网站,您可以执行以下操作:

右键单击要存储母版页的文件夹

选择“添加现有项目...”

浏览到文件系统上的母版页,然后选择 .master 和 .master.cs 文件。

然后,不要单击“添加”按钮,而是单击“添加”右侧的小向下箭头,这将弹出一个带有选项的小菜单:“添加”和“添加为链接”

选择“添加为链接”,这将引用您项目中的文件,同时将其保留在您的开发环境中的原始位置 - 这允许您在任一应用程序中对其进行编辑,同时在其他应用程序中使其保持最新。

显然,如果您编辑后面的代码,则需要在将更改部署到这些站点之前重新编译其他项目。

这在网站项目中不可用,因为它们依赖文件结构来计算项目中的内容。

于 2009-01-23T22:16:33.287 回答
0

编辑:错过了 css 部分。显然,您将无法提供这些文件,因此这只适用于母版页。

不知道你的情况,所以

如果您可以控制应用程序的 DNS / 虚拟目录,则可以使用如下格式:

c:\inetpub\wwwroot\Application1
c:\inetpub\wwwroot\Application2
c:\inetpub\wwwroot\Application3
c:\inetpub\wwwroot\Application4
c:\inetpub\wwwroot\Application5
并将您的母版页放在 c:\inetpub \wwwroot\master.Master,
c:\inetpub\wwwroot\master.Master.cs,
c:\inetpub\wwwroot\master.Master.cs.designer

然后,您可以从 /../master.Master 引用母版页的单个副本。我使用预编译的母版页快速进行了此操作,以确保我可以超越我的根目录。您可能需要试一试才能看到。

于 2009-01-23T22:29:23.450 回答
0

我们使用我们的源代码控制在我们需要的所有地方创建指向共享文件的链接。所以如果你在一个地方编辑,你只需要做一个获取最新的,它就会出现在你链接它的其他地方。

于 2009-02-27T08:37:36.243 回答
0

我最终选择了 VPP 路线。我创建了一个虚拟路径提供程序并将我的母版页构建到一个 DLL 中,这正在工作。现在我有一个巨大的问题,因为它的母版页通过代码隐藏延迟绑定的内容页面会抛出验证/格式化问题,因为它认为它应该是一个支持页面。我的 CNTRL + K、CNTRL + D 在我现在共享母版页的每个页面上都损坏了。这对我和团队来说非常令人沮丧

于 2010-02-17T21:30:39.180 回答