【问题标题】:How do you put an entire asp.net website into one dll?如何将整个 asp.net 网站放入一个 dll 中?
【发布时间】:2010-10-25 18:45:18
【问题描述】:

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

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

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

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

非常感谢任何帮助!

【问题讨论】:

  • 你考虑过安装工吗?
  • 这会帮助我将整个网站放入 dll 中吗?它当然会帮助部署,但是安装仍然会包含一堆文件,不是吗?
  • 是的,但是一旦安装了它,有多少文件真的很重要吗?
  • 感谢您的评论。是的,它在某种程度上确实如此,因为它是一个框架并在其他项目中使用。如果是一个 dll,框架更新的部署会更容易。此外,如果框架都在一个dll中,那么基于框架的项目编译速度会更快。

标签: asp.net dll httphandler resources


【解决方案1】:

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

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

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

所以很遗憾,我认为,目前还没有“开箱即用”的解决方案可以满足您的要求(据我目前所知,VS2010/ ASP.NET 4.0)。

马克

【讨论】:

  • 好的,太糟糕了:(。我想我必须制作一个自定义处理程序并重写很多网址并构建我自己的半自动化系统。这需要一些时间......谢谢你的回答
【解决方案2】:

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

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

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

虽然有一些限制。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-03
      • 2010-09-18
      • 1970-01-01
      • 2014-02-05
      • 2010-11-11
      • 1970-01-01
      • 2011-04-06
      相关资源
      最近更新 更多