2017-03-27 5 views
1

私は、VS2017で「デバッグなしで起動」(F5ではなくCtrl + F5)を使用すると、常に動作することに気付きました。デスクトップアプリケーションからは、.exeファイルを上書きすることができないため、アプリケーションがすでに実行されている場合にビルドに失敗していました。Ctrl + F5はVSのASP.NETプロジェクトでどのように機能しますか?

私のC#ASP.NET WebApiプロジェクトでCtrl + F5を押すとコードを変更してCtrl + F5をもう一度押してビルドして実行します。だから、私はVisual Studioがファイルを上書きするのに失敗しないようにWebアプリケーションを閉じたり、終了させたりすることを前提としています。

それはどうですか?

答えて

2

ASP.NETはシャドウコピーを有効にします。シャドウコピーは、実行前にアセンブリをbin /ディレクトリからtempディレクトリにコピーします。こうすると、シャドウアセンブリはファイルシステムによってロックされ、ASP.NETはbinディレクトリの変更を監視したままになります。

あなたは、MSDNにシャドウコピーアセンブリ詳細を読むことができます:https://msdn.microsoft.com/en-us/library/ms404279.aspx

2

それは、Visual Studioとは何の関係が、ASP.NETの性質を持っていません。

ASP.NETは、Windowsディレクトリの一時フォルダにDLLファイルをコピーします。また、フォルダ内にある可能性があるページマークアップをコンパイルし、生成されたアセンブリをそのフォルダから一時フォルダにコピーします。そのフォルダからWebアプリケーションが実行されます。

たとえば、ASPXファイルを変更すると、IISサーバーはページファイルを再コンパイルし、DLLを置き換えます。次に、変更を取得します。

DLLまたはweb.configが変更されると、ASP.NETはアプリケーションプールをリセットしてすべてのアセンブリを再読み込みします。

+0

それはIISかasp.netですか? IISにasp.netアプリケーションをホストしていないとどうなりますか? – Evk

+0

あなたは正しいです、それはASP.NET @Evkです –

関連する問題