2016-02-03 20 views
8

Yeni Roslyn Derleyicileri ile oluşturulmuş bir VB.NET ASP.NET (4.6.1) MVC Uygulaması var.ASP.NET: Roslyn sayfalarda yavaş değişiyor

Her defasında bir (vbhtml) Dosyayı değiştirir ve sayfayı yeniden yüklemek için sayfayı yaklaşık 9 saniye alırım. Bu süre içinde bir vbc.exe ve VBCSCompiler.exe çalıştıran: I (KARINCALAR Profil kullanarak) bu yavaş performans için herhangi bir ipucu bulamadı ve benim Sistem işlemek için yeterince hızlı olmalıdır

enter image description here

İstekler çok daha hızlı (Windows 10 x64, i7-2600, 16 GB RAM, tüm dosyalar için Samsung SSD).

ben de yeni Roslyn Kurar çalıştı, ancak hiçbir şey değişmedi:

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

herhangi bir Fikirleri, alabilirim nasıl daha iyi kez yeniden?

UPDATE1: sayfam yeniden zamanı < 500ms için iner Microsoft.CodeDom.Providers.DotNetCompilerPlatform paketi çıkarmadan!

+0

Not: Antivirüs yazılımını daha iyi bir sonuçla da devre dışı bıraktım. – Christoph

+0

Sadece sayfayı yeniden yüklemiyorsunuz. Kodu değiştirdiğinizde, derlenmiş sürüm artık alakalı değildir. Dolayısıyla, bu sayfanın ilk isteği, bir yeniden derlemeye ve dolayısıyla gecikmeye neden olacaktır. Gecikmeyi istemiyorsanız, dağıtmadan önce web sitesini önceden derleyebilirsiniz. – mason

+0

Siteyi geliştirirken gecikmelerim var, bu yüzden her değişiklikte 10 sn beklemek (sadece bir miktar html'yi değiştirmek) beni gerçekten çıldırtıyor. Precompiling sadece sunucuya dağıtım yaparken bana yardımcı olur, ancak bu benim rozam olmadan diğer mvc uygulamaları çok daha hızlı yükleme gibi benim sorunum değil. – Christoph

cevap

7

Yeni derleyici, JIT birçok IL derlemine gereksinim duyması nedeniyle başlamak için birkaç saniye sürer. Derleyici ve bağımlılık derlemeleri Ngen'ing başlangıç ​​saatini azaltmaya yardımcı olur. Ne yapabilirsiniz derleyici takımını bulup

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

yükseltilmiş bir konsoldan yukarıdaki komutları çalıştırmak gerekir yapmaktır. Ve makineniz 64 bit ise 64 bit ngen.exe'yi kullanmanız gerekebilir. Normalde 64-bit ngen.exe, C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319'da bulur.

+0

Hi adlı bir şey yükledim, VBCScompiler.exe benim Framework/Framework64 klasöründe yok. System.Reflection.Metadata derlerken tüm 3 dosyada derleyicinin askıda kaldığını ve web web sitem/bin/roslyn'den exe'ı denedim. – Christoph

+0

Üzgünüz açık değildi. "64-bit exe" ile ngen.exe demek istiyorum. Derleyici exe, Microsoft.Net.Compilers NuGet paketi ile birlikte gelir. Paketin \ tools klasöründe veya webroot \ bin \ roslyn'de bulunabilir. Bu dosyaları imzaladığınızda asılma oldu mu? Bunu kutuda görmedim. –

+0

Merhaba, ben/bin/roslyn klasöründeki tüm 3 exes ngen'i yüklemeye çalıştım, ancak 3'ü derlerken asıldı :-( – Christoph

5

FYI, Microsoft ile bu konudaki bir çözüm üzerinde çalışıyorum ve meclisleri NGENing kadar kolay değil. Sorunu çözmek için üzerinde çalıştıkları iki konu var, bunlardan biri Roslyn derleyicisinin kendisinde. Bu hatayı buradan izleyebilirsiniz: https://github.com/dotnet/roslyn/issues/10413. Diğer hata halka açık bir izleyiciye gelirse, ona bağlandığından emin olabilirim.

İlgili konular