在部署而不是首次加载时编译ASCX文件?

时间:2012-08-14 12:59:00

标签: asp.net user-controls

当我将ASP.NET项目部署到包含许多ASCX文件的服务器时,第一页加载可能需要一段时间,可能是因为正在编译ASCX文件。虽然只编译了页面上实际的那些,但部署过程的一部分是导航到网站上的一堆页面。导航完所有页面后,网站运行顺畅。

我希望ASP.NET在部署时立即编译所有这些ASCX文件,以删除这个草率部署步骤。

实现这一目标的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

听起来像是在寻找ASP.NET Precompilation

  

您可以在网站项目可用之前对其进行预编译   用户。这提供了许多优点,包括更快的初始化   响应时间,错误检查,源代码保护和高效   部署。这在那里的大型场所尤为重要   经常更改网页和代码文件。

     

您还可以使用Web应用程序项目编译项目   模型。在该模型中,所有代码文件(独立,代码隐藏和   项目中的类文件)被编译成单个程序集   存储在Bin目录中。因为编译创建了一个   程序集,您可以指定属性,例如程序集名称和   版。您还可以指定输出程序集的位置   你不希望它在Bin目录中。

答案 1 :(得分:2)

如果您将ASP.net网站转换为“Web应用程序”,则可以部署已编译的版本。右键单击解决方案资源管理器中的网站,然后单击“转换为Web应用程序”

有关详细信息,请参阅ASP.NET Web Site or ASP.NET Web Application?

答案 2 :(得分:0)

您可以在Web解决方案上运行msbuild,它将编译您的代码,然后您可以在编译的.dll中部署标记。

执行此操作的示例NAnt脚本:

<target name="determineMsbuildPath">
    <readregistry property="net.bin" key="SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0\MSBuildToolsPath"/>
</target>

<target name="msbuild" depends="determineMsbuildPath>
    <exec basedir="${net.bin}\" program="MSBuild.exe">
        <arg value="${solution}"/> <!-- put the path to your web solution here -->
        <arg value="/p:OutputPath=${workdir}"/>
    </exec>
</target>