ASP.NET预编译成单个程序集

时间:2011-05-09 15:34:06

标签: .net asp.net visual-studio-2010

我有一个ASP.NET 4.0 Web应用程序,需要预先编译成一个程序集。我玩过可用的选项,我得到了以下内容:

1。当我编译时,我会为每个页面获得一个单独的程序集,如下所示: Multiple assemblies

  1. 当我编译时,我获得了Web应用程序的单个程序集,但在实时服务器上,每个页面都是动态编译的,并生成临时文件。
  2. Dynamic compiling

    1. 我需要一种方法将我的Web应用程序编译成一个允许UI更新(HTML更改而不是代码)的程序集,并且不会生成临时文件。
    2. enter image description here

3 个答案:

答案 0 :(得分:2)

最简单的方法是将项目创建(或更改)为“Asp.Net Web应用程序”而不是“Asp.Net网站”。

这将导致您的项目被编译为单个dll,而不是网站通常使用的“每页dll”或“每个目录的dll”方案。它还会强制您解决任何类型名称问题(IE:如果您有6个页面称为Default),当您进行单个程序集时,完全限定名称是唯一的,这一点非常重要。

这将为您提供正确的项目文件(构建脚本),并在编译时将所有dll转储到/ bin文件夹。

然后,您可以使用ILMerge之类的内容将/ bin文件夹中的所有程序集合并到一个dll中,如果这是您想要执行的操作。这假设您的所有引用都是托管程序集,如果您有任何非.Net库,那将会更加棘手,尽管仍然不是不可能。

答案 1 :(得分:0)

aspnet编译器包含在框架中。 这是一个描述如何使用它的页面。 http://msdn.microsoft.com/en-us/library/ms227972.aspx

以下是一些供参考的其他页面:

答案 2 :(得分:0)

AFAIK如果没有服务器使用临时文件重新编译页面,则无法更新UI / html

所有.aspx,.ascx文件等都转换为源代码然后编译。 ASP.NET提供的唯一方法是阻止编译页面和控件,但随后您的站点不再可更新。在这种情况下,您总是需要为每次更新重新部署二进制文件。

您不希望ASP.NET生成临时文件的任何特定原因?我认为这是一种完全可以接受的做法。