5

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

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

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

4

3 回答 3

4

听起来您正在寻找ASP.NET 预编译

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

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

于 2012-08-14T13:07:43.227 回答
2

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

请参阅ASP.NET 网站或 ASP.NET Web 应用程序?更多细节

于 2012-08-14T13:06:49.700 回答
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>
于 2012-08-14T13:04:16.017 回答