你如何把一个完整的asp.net网站放到一个dll中?

时间:2009-05-13 06:54:29

标签: asp.net dll httphandler resources

我正在使用C#为Asp.Net构建一个Web应用程序框架。该框架由dll文件,带有代码隐藏文件的aspx文件,App_Code中的代码文件,css文件和图像组成。

我查看了Visual Studio 2008中的“Web应用程序”项目。这有助于删除所有代码文件并将它们放入bin文件夹中的一个dll中。但是,所有其他文件仍然存在。

我认为必须可以将这些文件放在资源文件中并将其包含在dll文件中。我看到一些控制提供商会这样做,比如Telerik。

你是怎么做的?并且有一些自动化过程可以执行此操作,因为文件数量超过1000个。

任何帮助都非常有用!

3 个答案:

答案 0 :(得分:3)

您实际上可以将站点缩减为单个程序集,web.config文件和global.asax文件。

为此,请使用嵌入资源将所有静态内容(图像等)嵌入到程序集中。这就像Telerik那样的组件供应商为其控件提供单一程序集部署。 然后可以使用虚拟路径提供程序来提供嵌入式资源。在msdn上有一个good article可以使用虚拟路径提供程序。 在使用Web应用程序项目时,您甚至可以将页面(.aspx)和用户控件(.ascx)嵌入为资源。

使用路由模块,您可以实现几乎透明的URL转换到嵌入在程序集中的页面。

但是有一些限制。

  • 默认情况下,IIS6不会提供程序集中的静态内容。使用自定义处理程序(例如files.ashx / my / static / content.jpg)或配置IIS以使用通配符映射将所有请求路由到您的应用程序。
  • 在程序集中嵌入页面时,您将失去Visual Studio中的一些设计器支持。

答案 1 :(得分:2)

ASP.NET真的没有“编译到单个DLL”的方法(不幸的是 - 我多次希望它自己!)。

正如您所指出的,Web应用程序有助于减少混乱。

Web部署也有帮助,因为网页代码被编译成单个DLL,您实际上可以从安装中删除*.aspx/*.ascx文件(如果它不可更新),但是您仍然有很多其中包含*.compiled个文件。

所以不幸的是,我认为,在这个时间点,没有针对您的要求提供“开箱即用”的解决方案(据我所知,到目前为止,VS2010并没有计划这样的事情/ ASP.NET 4.0要么。)

马克

答案 2 :(得分:1)

ASP.Net有一种“使用Microsoft的插件编译到单个DLL”。看看“Web部署”添加。这将使您能够将几乎所有内容编译到单个DLL中,包括ASCX控件(这是一种轻松重新分发这些内容的好方法)。