2016-02-03 8 views
8

私は、新しいRoslynコンパイラでビルドされたVB.NET ASP.NET(4.6.1)MVCアプリケーションを持っています。ASP.NET:Ro​​slynページの変更が遅い

私は(vbhtml)ファイルを変更してページをリロードするたびに、ページをリロードするのに約9秒かかります。 この時点ではvbc.exeとVBCSCompiler.exeが実行されている:

enter image description here

を私は(ANTSプロファイルを使用して)このパフォーマンスの低下のための任意のヒントを見つけることができませんでしたし、私のシステムが処理するのに十分高速である必要があります要求がはるかに速く(Windows 10 x64、i7-2600、16GB RAM、すべてのファイルに対してSamsung SSD)。

私はまた、新しいロズリンがビルドしようとしたが、何も変わっていない:任意のアイデアを

<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform"version="1.0.1" targetFramework="net452" /> 

、どのように私はより良いリロード時間を得ることができますか?

UPDATE1:私のページのリロード時間が< 500ミリ秒にダウンMicrosoft.CodeDom.Providers.DotNetCompilerPlatformパッケージを削除します!

+0

PS:Antivirussoftwareも無効にしました。 – Christoph

+0

あなたはページをリロードしているだけではありません。コードを変更すると、コンパイルされたバージョンはもはや関連性がなくなります。したがって、そのページへの最初のリクエストは、再コンパイルを引き起こし、遅延を引き起こします。遅延が欲しくない場合は、展開する前にWebサイトをプリコンパイルすることができます。 – mason

+0

私はサイトを開発している間に遅れがあるので、すべての変更(たとえ一部のhtmlを変更するだけでも)で10秒待っていると本当に私を狂わせてしまいます。プリコンパイルはサーバーに展開するときにのみ役立ちますが、これは私の問題ではありません。特に、roslynを使用しない他のmvcアプリケーションの方がはるかに高速です。 – Christoph

答えて

7

多くのILアセンブリをJITする必要があるため、新しいコンパイラの起動に数秒かかります。コンパイラーとその依存関係アセンブリーをNgenにすると、開始時間が短縮されます。あなたができることは、コンパイラアセンブリを見つけることです。

ngen.exe install VBCSCompiler.exe 
ngen.exe install csc.exe 
ngen.exe install vbc.exe 

上記のコマンドは、昇格したコンソールから実行する必要があります。マシンが64ビットの場合は、64ビットのngen.exeを使用する必要があります。通常、64ビットのngen.exeはC:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319にあります。

+0

という名前のものがインストールされています。こんにちは、VBCScompiler.exeはFramework/Framework64フォルダにありません。そして私はwebroot/bin/roslynからexeをngenしようとしましたが、コンパイラはSystem.Reflection.Metadataをコンパイルするときに3つのファイルすべてにハングします。 – Christoph

+0

申し訳ありませんが、私は明確ではありませんでした。 "64ビットexe"とは、ngen.exeを意味します。コンパイラexeにはNuGetパッケージMicrosoft.Net.Compilersが付属しています。これはパッケージの\ toolsフォルダまたはwebroot \ bin \ roslynにあります。あなたはそれらのファイルをngen'ingときハングアップが起こったのですか?私は私の箱でそれを見たことがありません。 –

+0

こんにちは、私は/ bin/roslynフォルダにすべての3 exesをインストールしようとしましたが、コンパイル中にすべて3つの:-( – Christoph

5

参考までに、私はこの問題を解決するためにMicrosoftと協力してきましたが、NGENingほど簡単ではありませんでした。それに対処するために取り組んでいる2つの問題があります。そのうちの1つはRoslynコンパイラ自体にあります。そのバグはhttps://github.com/dotnet/roslyn/issues/10413で追跡できます。他のバグが公開されたトラッカーに表示された場合、私はそれにリンクするようにします。

関連する問題