Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何构造ASP.NET项目以供重用_C#_Asp.net_Project Layout - Fatal编程技术网

C# 如何构造ASP.NET项目以供重用

C# 如何构造ASP.NET项目以供重用,c#,asp.net,project-layout,C#,Asp.net,Project Layout,我正在设计一个web应用程序,它将有多个可安装的模块,提供不同的功能。这里有很多常见的东西,我有3个C#类库,我知道它们很容易在不同的项目上使用 我所关注的是实际的网站本身。理想情况下,我希望制作一个可以在多个项目中重复使用的ASP.NET页面库,但我知道这是不可能的 你们如何组织你们的网站项目,使网页可以在多个项目中重复使用?到目前为止,我提出的唯一解决方案是在SVN中创建一个存储库,并在主项目的SVN:externals属性中引用它。这使我能够将所有网站共有的页面添加到该目录中,我知道我将能

我正在设计一个web应用程序,它将有多个可安装的模块,提供不同的功能。这里有很多常见的东西,我有3个C#类库,我知道它们很容易在不同的项目上使用

我所关注的是实际的网站本身。理想情况下,我希望制作一个可以在多个项目中重复使用的ASP.NET页面库,但我知道这是不可能的

你们如何组织你们的网站项目,使网页可以在多个项目中重复使用?到目前为止,我提出的唯一解决方案是在SVN中创建一个存储库,并在主项目的
SVN:externals
属性中引用它。这使我能够将所有网站共有的页面添加到该目录中,我知道我将能够使用该目录将它们签出到其他项目中。但是,我觉得这有点笨拙,在创建新项目时会造成问题(创建新解决方案需要很多步骤,以确保正确的外部设置到位)

有更好的解决办法吗?当您希望在多个客户端项目中共享通用ASPX文件时,最好的方法是什么?您如何针对它们管理更改

提前谢谢

编辑:

非常感谢大卫的回应。我对此有了更多的思考,我想我应该列出一些更具体的想法/关注点。首先,更多地了解项目。首先,它是一个CMS。然而,我们也有客户需要CRM,也有客户既不需要CRM,也希望从一开始就有一个完整的定制系统

在我上面的原始帖子中,我谈到了拥有主根目录的子目录(例如,
cms
),使用
svn:externals
允许跨多个项目轻松地重新共享网页。我开始认为这是唯一的办法。困扰我的一件事是,如果客户的url是:

http://www.shotgunanddribble.com/cms/content.aspx

但是,我认为我可以使用
应用程序_BeginRequest
通过根据客户端站点的配置重写可怕的URL来减轻这些URL。例如,如果客户只是一个CMS,我可以将他们的顶级域重写为
/CMS/
。如果他们是客户关系管理公司,情况也一样。如果两者都是:

http://www.shotgunanddribble.com/
->
/cms/

http://crm.shotgunanddribble.com/
->
/crm/


使用这种重写有什么缺点吗?我认为,除非其他人有任何神奇的想法,
svn:externals
是我唯一的希望。

实际的代码很容易放入其他程序集并从中继承,但ASPX文件肯定是另一回事。一个包含大多数显示内容的通用用户控件库如何,每个项目都有自己的页面,这些页面大多只是用户控件的框架?我从来没有尝试过,所以可能有一些我现在无法想象的“抓到”了。

你好,大卫,谢谢你的回复,很抱歉我花了一段时间才回来。是的,我在考虑广泛使用用户控件来处理许多常见的视觉内容。出于某种原因,将所有内容放入控件似乎很笨拙,但这不是批评,只是其中一种感觉:)除了使用
svn:externals
之外,我认为控件是实现这一点的唯一方法。@Moo Juice:我同意。在.NET的早期,我对一个项目的用户控制非常狂热,虽然它的设计似乎非常灵活,但维护却非常笨拙。我相信它可以很好地适应设计,但某些约定需要记录下来,并由项目中的其他开发人员遵守。我将接受这个答案,因为我认为
svn:externals
和用户控件是解决这个问题的唯一方法。前者负责处理普通页面的子目录,并控制尽可能以通用的方式制作新的客户特定的内容。