5

多くの ASCX ファイルを含むサーバーに ASP.NET プロジェクトを展開すると、おそらく ASCX ファイルがコンパイルされているため、最初のページの読み込みに時間がかかることがあります。ただし、実際にページ上にあるものだけがコンパイルされるため、私の展開プロセスの一部は、サイト上の一連のページに移動することです。すべてのページに移動すると、サイトはスムーズに動作します。

このずさんな展開手順を削除するために、展開時に ASP.NET がこれらすべての ASCX ファイルをすぐにコンパイルすることを望みます。

これを達成するための最良の方法は何ですか?

4

3 に答える 3

4

ASP.NET Precompilationを探しているようです:

ユーザーが使用できるようにする前に、Web サイト プロジェクトをプリコンパイルできます。これにより、初期応答時間の短縮、エラー チェック、ソース コードの保護、効率的な展開など、多くの利点が得られます。これは、Web ページやコード ファイルが頻繁に変更される大規模なサイトでは特に重要です。

Web アプリケーション プロジェクト モデルを使用してプロジェクトをコンパイルすることもできます。そのモデルでは、プロジェクト内のすべてのコード ファイル (スタンドアロン、コード ビハインド、およびクラス ファイル) が 1 つのアセンブリにコンパイルされ、Bin ディレクトリに格納されます。コンパイルによって単一のアセンブリが作成されるため、アセンブリ名やバージョンなどの属性を指定できます。出力アセンブリを Bin ディレクトリに置きたくない場合は、出力アセンブリの場所を指定することもできます。

于 2012-08-14T13:07:43.227 に答える
2

ASP.net Web サイトを「Web アプリケーション」に変換すると、コンパイルされたバージョンをデプロイできます。ソリューション エクスプローラーで Web サイトを右クリックし、[Web アプリケーションに変換] をクリックします。

ASP.NET Web サイトまたは 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 に答える