2013-02-05 23 views
5

我有一个很大的ASP.NET应用程序(遗留),实际上(功能上)由两个门户组成。所以我需要将它分成两个独立的应用程序,以减轻每个应用程序的开发。在两个应用程序中分割ASP.NET应用程序 - 处理共享页面/用户控件/脚本

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

但问题是有一些页面,很多用户控件,一些CSS和JavaScript文件,这两个“门户”(应用程序)之间共享。

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

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

另一个想法是创建预构建事件,并且要从共同位置复制所有共享文件。 例如,我创建了一个项目常见,并把那里的文件夹组织正在应用程序之间共享的所有文件,并在预编译我执行xcopy

而另一个想法是做一个SVN仓库的所有共享文件的一部分我参考svn:external,在这两个项目中。

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

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

回答

0

你,至少,有两个选项:

的虚拟目录的方法似乎像CSS ressources简单,js,图片。 我也倾向于喜欢它共享用户控件。

库方法应该需要更多的工作,但会确保更好地控制长期的可重用性。

+0

感谢您的建议 – bzamfir

+0

第一个建议似乎是最适合我的方案(因为我不需要用户控件是可重用的,它们并不意味着)。但是我有两个问题:1.是否可以使用IIS Express? 2.似乎我必须改变所有的路径,把我所有的图像,CSS和脚本指向虚拟目录;这不是一件容易的事情,因为应用程序有几百页。 – bzamfir

+0

@bzamfir问题1,我必须说我不知道​​。对于问题2,这取决于你的组织。如果您的资源位于少量位置,则可以将/ images或/ css变为虚拟,而无需更改页面中的路径。 – jbl

0

本周,我有一个相同的问题,在三个传统项目中重复css和javascript文件。

我从两个项目中删除了文件,并用链接文件替换为第一个项目,但是当我运行该网站时,我在属于这两个项目的页面中缺少了css & javascript文件的404错误。

因此,我只是将nuget包'MSBuild.WebApplication.CopyContentLinkedFiles'添加到我的解决方案中,并且一切正常 - 对两个项目配置了css和javascript文件,我的404错误消失了。

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

另请参阅此question/answer

相关问题