2016-10-11 23 views
5

, biz web.config üzerinden Roslyn derleyici platformu açık: Üretim dağıtımları sonra,Roslyn ile çalışan ASP.NET Razor MVC görüntülerinde VBCSCompiler perfüzyonu kaçının mı? MVC5 bizim Jilet görünümlerinde C# 6 desteklemek amacıyla

<system.codedom> 
    <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> 
    </compilers> 
</system.codedom> 

Ancak, her görünümü/denetleyicisi "farkedilir gibi görünüyor İlk Yük "bu derleyici etkinleştirilmeden daha kötü olan gecikme.

Bu gecikme, dağıtılan yeni bir siteden aldığınız normal JIT gecikmesine ek olarak önemlidir. VBCSCompiler.exe, bu sayfaları "daha fazla derlemek" için arka planda çalışırken görünürken, sayfalar oldukça yavaştır.

İlk yükleme çalışma zamanı gecikmesi sonrası dağıtımını ortadan kaldırmak için bu durumu önceden derlemek/optimize etmek için en iyi yöntem var mı? İdeal olarak VBCSCompiler.exe bir dağıtım gerçekleştikten sonra çalışmıyor ve build-time gerçekleştirilir.

Aspnet_compiler.exe'nin sözlerini gördüm ve StackExchange.Precompilation (bkz. https://blog.stackoverflow.com/2015/07/announcing-stackexchange-precompilation/) ile karşılaştık ve bunun doğru çözüm olup olmadığını merak ettim.

Bu sorunla ilgili herhangi bir deneyimi olan var mı? Teşekkür ederim.

cevap

1

kullanabilirsiniz RoslynRazorViewEngine from StackExchange.Precompilation:

ViewEngines.Engines.Clear(); 
ViewEngines.Engines.Add(new RoslynRazorViewEngine()); 

Bu görünüm motorun ana hedefi Ancak hit perf başlangıçta kurtulmak için değildir. Bununla sadece C# 6 desteği alırsınız. Görünümlerin yine de ilk yüklemede derlenmesi gerekiyor, ancak roslyn meclisleri daha sonra uygulama alanında sona eriyor ve daha yüksek bir bellek alanı kaplıyorsunuz. Uygulamada roslyn çağrıldığı için, /bin klasöründen başka bir .exe dosyasını çalıştırmak için web sunucusunda özel izinlere ihtiyacınız yoktur. Bunu daha çok geliştirme için dev makinelerimizde kullanıyoruz.

Sadece precompile all the views'u kesinlikle öneririm. Bu sayede başlangıçta mükemmel bir vuruş olmaz ve görüntülemelerinizin derlenmiş zaman doğrulamasını alırsınız. Oluşturulan görüntü kodunda bile analizörleri çalıştırabilirsiniz. StackOverflow şu anda üretimde çalışır. ASP.NET (sans MVC) üzerinde ön derleme için orijinal bir araç olduğundan, bu blogda aspnet_compiler.exe'dan bahsediyorum. Maalesef çok yavaş.

0

Roslyn derleyici düzenekleri NGen'd değilse, VBCScompiler.exe aracının başlatılması biraz zaman alabilir (bu, birkaç büyük yönetilen derlemeye başvurur ve JIT bunları zaman alır). JIT süresini azaltmak için, makinedeki tüm Rsolyn montajlarını NGEN edebilirsiniz. Ayrıca this blog'dan bazı yardım bilgilerine ulaşabilirsiniz.

İlgili konular