1

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

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

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

你怎么做呢?由于文件数量超过 1000 个,是否有一些自动化过程可以做到这一点。

非常感谢任何帮助!

4

3 回答 3

3

您实际上可以将站点简化为一个程序集、一个 web.config 文件和一个 global.asax 文件。

为此,请使用嵌入式资源将所有静态内容(图像等)嵌入到程序集中。这就是 Telerik 等组件供应商为他们的控件提供单一组件部署所做的工作。然后可以使用虚拟路径提供程序提供嵌入式资源。在 msdn 上有一篇很好的文章介绍了虚拟路径提供程序。使用 Web 应用程序项目时,您甚至可以将页面 (.aspx) 和用户控件 (.ascx) 作为资源嵌入。

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

但是有一些限制。

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

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

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

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

所以不幸的是,我认为,在这个时间点上,没有“开箱即用”的解决方案可以满足您的要求(据我目前所知,VS2010 / ASP.NET 没有类似的计划4.0)。

马克

于 2009-05-13T08:04:44.647 回答
1

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

于 2010-05-09T21:29:10.037 回答