什么使ASP.NET项目成为应用程序vs库?

时间:2010-01-20 18:09:05

标签: asp.net visual-studio

我继承了一些ASP.NET代码(我是一个操作系统的人,而不是web dev(还有;-))。该解决方案已经重新考虑,其中有多个项目(库和asp.net站点)。除了库之外,还有两个asp.net项目(称为MAINSITE和SUBSITE)。只有MAINSITE被用作官方网站(作为asp.net网站),MAINSITE依赖于SUBSITE asp.net网站中的代码,但不使用该网站本身。我试图找出如何清理它并将SUBSITE转换为库。

我的快速问题是,每当我调试MAINSITE(设置为默认值)时,它都会运行两个asp.net进程:MAINSITE和SUBSITE。所以,至少,我怎么能避免这种情况呢?有没有快速/临时解决方案?

我的详细问题是:

是什么让asp.net网站成为asp.net网站?例如,在C中,dll和exe之间的差异可以定义(表面上无论如何)作为库的主要和潜在的导出信息的存在(当然,除其他之外)。如果我要将exe转换为dll,我可能会: 1.删​​除主要代码 2.确保公共接口正确(并正确导出) 3.转换makefile以构建一个dll而不是exe。

有人能指出我对asp.net到.net lib的一些类似步骤吗? 也许: 1.摆脱index.aspx 2.摆脱web.config 3.要删除的任何* .cs文件? 4.如何更改属性? 5.任何陷阱?

非常感谢你的帮助。 详细信息:Visual Studio 2008 / .NET 3.5

2 个答案:

答案 0 :(得分:3)

如果你去“文件”> “新”> “New Project ...”然后单击(假设您正在使用C#)左侧列表中的“Visual C#”,您可以创建“类库”项目。您可以将所有相关代码提取到其中一个,然后在“MAINSITE”中引用。

您需要在MAINSITE项目的“参考”部分中引用它,并且可能需要使用import关键字导入您的图书馆项目。

答案 1 :(得分:3)

有许多组件可以使应用程序作为ASP.Net应用程序运行。但是,就实际的Web应用程序项目而言,它与通用库代码之间并没有太大区别,除非您的大部分代码都依赖于HttpApplication运行时的存在。

任何使用System.Web(尤其是System.Web.UI)的代码都会受到这种依赖性的怀疑。例如,页面或webcontrol事件处理程序(Init,Load,PreRender等)中的所有代码都依赖于HttpHandler(在HttpApplication中运行)引发这些事件的事实。如果您从不在ASP.Net项目中的库中运行相同的WebControl,则不会发生这种情况,并且控件将无用。但是,如果在ASP.Net进程的上下文中执行,那么完全相同的库将非常有用。

它实际上归结为您正在运行库的过程。在大多数情况下,ASP.Net进程由IIS生成,尽管也可以在其他类型的程序中承载ASP.Net进程。

遗憾的是,没有一个简单的5步骤将Web项目转换为库。但根据经验,webcontrols,.aspx和.ascx代码隐藏不会转换。

有关将代码编入ASP.Net程序的更详细信息,请参阅Rick Strahl的“A Low level look at ASP.Net”。