Yayımlama sırasında yeni ön derleme seçeneğinin MVC4 uygulamaları üzerindeki etkisi nedir?


86

Bu yüzden yakın zamanda Visual Studio 2012'yi Güncelleme 2'ye güncelledim. Bakın, bir dahaki sefere uygulamamı yayınlamaya gittiğimde (bu durumda Dosya Yayınlama yoluyla) üç yeni seçenek olduğunu fark ettim:

  1. Yayınlamadan önce mevcut tüm dosyaları silin
  2. Yayınlama sırasında ön derleme (Yapılandır bağlantısıyla)
  3. Dosyaları App_Data klasöründen hariç tutun

Birinci ve üçüncü seçenekler oldukça açıklayıcıdır, ancak MVC için geçerli olduğu için ikinci seçenek hakkında herhangi bir belge bulamıyorum. Kontrol ettiğimde, sitede üretilen dosyalarda herhangi bir değişiklik yok gibi görünüyor ve performansta gerçek bir değişiklik görmüyorum.


İşlevin konumu yeni olabilir, ancak işlevin kendisi değildir. O bile vermedi MVC derleme görüyoruz, WebForms bir MVC projesinde birlikte çalışabilir.
Grant Thomas

Yanıtlar:


85

ASP.NET ön derleyicisini kullanmak, MVC uygulamanızda aşağıdaki etkiye sahip olabilir:

  • App_Code'da herhangi bir şeyiniz varsa, dağıtımdan önce bir DLL olarak önceden derlenecektir. Ön derleme olmadan, bu ASP.NET çalışma zamanı tarafından anında gerçekleşir.
  • Sayfalarınızı güncellenemez hale getirmeme seçeneğini seçerseniz (yani, gelişmiş ayarlar iletişim kutusundaki ilk onay kutusunun işaretini kaldırırsanız), aynı zamanda bunları çalışma zamanında dinamik olarak derlemek yerine görünümlerinizi (ASPX ve Razor) önceden derler. "Önceden derlenmiş sitenin güncellenebilir olmasına izin ver" varsayılan (işaretli) ayarı, tüm projeyi yeniden oluşturmanıza gerek kalmadan görüntüleme içeriğinizi güncellemenize olanak tanır.

App_Code'da hiç dosyanız yoksa ve sitenizin güncellenebilir kalmasını istiyorsanız, pek bir şey yapmıyor gibi görünüyor.


7
@Elsimer .cshtml dosyalarınız hala var olacaktır, ancak içerikleri önceden derlenmişse, içeriklerinin "Bu, ön derleme aracı tarafından oluşturulan bir işaret dosyasıdır ve silinmemelidir!" İle değiştirildiğini göreceksiniz.
Jimmy

4
Ayrıca, derleyici her sayfa için dinamik olarak çağrıldığında performans kazanımları çoğunlukla ilk site açılışında olur. Sayfaya bir kez vurulduğunda (ve derlendiğinde), bu derleme sonucu, önceden derlememiş olsanız bile sonraki sayfa yüklemelerinde kullanılacaktır.
Jimmy

16
Sayfalarınızın güncellenebilir OLMAMASININ ek bir yararı, VS'nin görünümlerinizde tür hatalarını canlı sitenize ulaşmadan önce bulmasıdır.
Chris

4
@Chris, bu tür hatalar ön derleme seçeneği olmadan yakalanacaksa test stratejinizi yeniden gözden geçirmelisiniz.
user247702

2
@ AndersLindén: Kontrolör eylemlerinizin gerçek işlenmiş yanıtını test edin. Bu Razor'u çağırır ve bir istisna oluşturursa, bu testinizde başarısız olur. Ancak, bu nedenle görüşlerinizin kod konusunda çok hafif olması gerekir . Bir sınıfta yapabildiğiniz gibi, görünüm kodunda gerçekten ayrıntılı birim testi yapamazsınız. Bu hemen hemen ya geçer ya da kalır ve o zaman bile, geçmek herhangi bir istisna yaratmadığı anlamına gelir, aslında yapması gerekeni yaptığı anlamına gelmez.
Chris Pratt

0

Bu eski bir soru ama ben sadece benzer bir sorunla karşılaşıyorum ve paylaşmaya değer bir şey hissediyorum.

Bu yazıda hata mesajım aynı. Projem MVC5, Visual Studio 2013 profesyoneli ile inşa et. Derleme Hatası: 'ASP.global_asax' türü her iki DLL'de de var

Benim durumumda, ön derleme seçeneğiyle, bin klasöründe bir dosya, App_global.asax.dll var ve yukarıdaki hata mesajına neden oluyor. Öncelikle sunucu üzerindeki App_global.asax.dll dosyasını kaldırıyorum, uygulama havuzunu yeniden başlatıyorum, sorun giderildi. Sonra başka bir yaklaşım denedim, ön derleme ve yeniden yayınlama işaretini kaldırdım, sunucuya yeniden konuşlandır, sorun gitti.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.