代码之家  ›  专栏  ›  技术社区  ›  JohnW

预编译用于部署的ASP.NET解决方案

  •  2
  • JohnW  · 技术社区  · 16 年前

    我正在使用aspnet_compiler.exe预编译应用程序以进行部署。

    但是,我认为它不起作用,有两个原因:

    • 我在C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET文件下看到我的应用程序集,即使我手动清除此目录并重新启动应用程序。
    • 应用程序的JIT性能受到影响。这是我特别想避免的,即使是“一次”。

    具体来说,我要做的是:

    1. 在Studio中构建解决方案。
    2. 执行aspnet_compiler.exe-v/foo-p c:\builddir c:\deploydir(其中foo是运行我的应用程序的vdir,c:\builddir是Studio生成到的位置,c:\deploydir是
    3. 然后我将c:\deploydir复制到Web服务器。
    4. 我访问 http://localhost/Foo
    5. 30秒后,应用程序显示出来,我可以看到程序集是在临时ASP.NET文件中生成的。

    如果值得注意,我使用的是.NET 3.5 SP1/Studio 2008 SP1。compilation debug=false也在web.config中设置。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Mehrdad Afshari    16 年前

    你的两点是没有意义的:

    1. ASP.NET预编译不会生成本机映像,因此JIT开销仍然存在。也可能存在工作进程创建开销。

    2. ASP.NET预编译可以选择编译所有内容(包括ASPX内容,…)或仅编译源代码(可以使用 -u 开关)。在后一种情况下,仍将为ASPX文件生成这些程序集。对于前者,您所看到的不是组装代。运行时只复制和缓存程序集 /bin 在里面 Temporary ASP.NET Files .您可以通过逐字节比较程序集来确认这一事实,并查看它们是否相同。

        2
  •  1
  •   Andrew Hare    16 年前

    用预编译网站 aspnet_compiler.exe 不JIT编译代码-您需要 ngen 这样做的代码。

    本机映像生成器(ngen.exe) 是改善 托管应用程序的性能。 ngen.exe创建本机映像,其中 文件是否包含已编译的 处理器特定的机器代码,以及 将它们安装到本机映像中 本地计算机上的缓存。这个 运行时可以使用来自 缓存而不是使用 (JIT)编译原始文件的编译器 装配。