【问题标题】:Splitting ASP.NET application in two applications - handling of shared pages / user controls / scripts将 ASP.NET 应用程序拆分为两个应用程序 - 处理共享页面/用户控件/脚本
【发布时间】:2013-01-20 13:06:12
【问题描述】:

我有一个大型 ASP.NET 应用程序(旧版),它实际上(功能上)由两个门户组成。所以我需要将它拆分为两个单独的应用程序,以简化每个应用程序的开发。

当然,两者之间有共同的特点。其中一些位于 DAL 和 BL 中,这不是问题 - 所有这些代码都是独立的项目,它们组成了两个应用程序都将引用的程序集。

但问题在于一些页面、大量用户控件、一些 css 和 javascript 文件,它们在两个“门户”(应用程序)之间共享。

我想就如何处理它们征求一些建议。我主要关心的是避免重复,所以理想情况下它们应该放在一个地方,并被两个应用程序使用。

首先我尝试将文件从一个项目添加到另一个项目作为链接文件。虽然这适用于代码文件(它们被内置到它们链接到的项目中),但它不适用于 aspx / ascx 或 css / javascript / images。如果我首先发布(如果标记为内容,它们会在发布期间被复制),但我不能在开发期间一直这样做,并且在从源代码调试/运行应用程序时找不到此类文件(sincve,很明显,链接文件在应用程序文件树中实际上并不可用,当人们正在寻找其中任何一个时。

另一个想法是创建预构建事件,并从一个公共位置复制所有共享文件。 例如我创建了一个项目 Common 并将所有在应用程序之间共享的文件放在文件夹中,并在预构建时执行xcopy

另一个想法是让所有共享文件成为 SVN 存储库的一部分,我在这两个项目中都使用svn:external 引用。

但一切看起来我的小麻烦。有没有人有类似的情况?你是怎么处理的?

对我的任何建议有什么建议吗?

【问题讨论】:

    标签: asp.net svn split linked-list


    【解决方案1】:

    本周我遇到了同样的问题,css 和 javascript 文件在三个遗留项目中重复了三次。

    我从两个项目中删除了文件,并将它们替换为第一个项目的链接文件,但是当我运行网站时,我收到了 404 错误,因为属于这两个项目的页面中缺少 css 和 javascript 文件。

    所以我只是将 nuget 包 'MSBuild.WebApplication.CopyContentLinkedFiles' 添加到我的解决方案中,一切正常 - 这两个项目的 css 和 javascript 文件部署良好,我的 404 错误消失了。

    我没有任何共享的 .aspx / .ascx 文件,但我想这也适用于他们。

    另见question / answer

    【讨论】:

      【解决方案2】:

      你至少有两个选择:

      对于 css、js、图像等资源,虚拟目录方法似乎很简单。 我也倾向于喜欢它来共享用户控件。

      库方法需要更多的工作,但从长远来看会确保控件的更好的可重用性。

      【讨论】:

      • 第一个建议似乎最适合我的方案(因为我不需要用户控件可重用,它们不应该这样做)。但我有两个问题: 1. 它可以与 IIS Express 一起使用吗? 2. 看来我必须更改所有引用我的所有图像、CSS 和脚本的路径以指向虚拟目录;考虑到应用程序有几百页,这不是一件容易的事。
      • @bzamfir 对于问题 1,我必须说我不知道​​。对于问题 2,这取决于您的组织。如果您的资源位于少数位置,则可以将 /images 或 /css 设为虚拟,而无需更改页面中的路径。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      相关资源
      最近更新 更多