Roslyn olmadan web sitesi yayınlayın


93

Visual Studio 2015 ve .NET 4.5.1 kullanarak web uygulaması oluşturmaya çalışıyorum. Web sitesini yayınladığımda, visual studio roslyn.

görüntü açıklamasını buraya girin

Anında kod derlemek için kullanıldığını biliyorum, ancak ne yazık ki barındırma sağlayıcım derleyiciyi sunucularında çalıştırmama izin vermiyor.

Web sitesini roslynönceki Visual Studio sürümüne benzemeden nasıl yayınlayabilirim ?

DÜZENLEME: Web siteme erişmeye çalışırken bu hatayı aldım.

görüntü açıklamasını buraya girin

Görünüşe göre IIS yürütmeye çalışıyor, roslyn\csc.exeancak kullanıcı hesabımın bunu yapma izni yok. Visual Studio'nun önceki sürümünde bu hata görünmüyor.


Ayrıca, Roslyn yalnızca bir DLL kümesidir. Ev sahibi ne yaptıklarını bilemez veya umursamaz.
SLaks

3
@Slaks IIS csc.exe'yi yürütmeye çalışıyor. Düzenlemeye bakın.
Niyoko

Plesk kullanıyorsanız, 'Web Siteleriniz için Özel IIS Uygulama Havuzunu' devre dışı bırakabilirsiniz, bu durumda bu paketleri kaldırmanıza bile gerek kalmaz!
Vahid Amiri

Yanıtlar:


184

Ben de aynı problemle karşılaştım. Yeni bir web projesi oluşturduğunuzda, projenize otomatik olarak iki nuget paketi eklenir. Bunları çıkarırsanız, sorununuz çözülmelidir. Paket adları: " Microsoft.CodeDom.Providers.DotNetCompilerPlatform " ve " Microsoft.Net.Compilers " şeklindedir.


Bu çalıştı ve üçüncü taraf web barındırma sağlayıcıları için uygundur. Bununla ilgili iki sorunuz var- 1) Bu Nuget paketlerinin kaldırılması ürünü herhangi bir şekilde etkileyebilir mi? 2) Her seferinde bu alıştırmadan kaçınmak için bu paketler proje şablonundan kaldırılabilir mi?
nura

1) Ürünün iş akışı veya mantığı üzerinde herhangi bir etkisi yoktur; ancak @ Ajay2707 tarafından sağlanan url ( itorian.com/2015/09/roslyn-cscexe-and-vbcexe-deployment-on.html ), bu paketin sayfa yükleme süresini etkilediğini söylüyor. 2) Bunu nasıl yaparsın bilmiyorum, ama yapabiliyorsan herhangi bir sorun olmaz.
Kemal Kefeli

3
Her iki NuGet paketi kaldırıldı. Yapılandırma bildirimi kaldırıldı. Yine de bu klasör derleme veya yayınlama sırasında oluşturuluyor .. Sadece uygulamamın kullandığı NuGet paketi "Newtonsoft.Json". Benim de kaldırmam gerekiyor mu?
Ranjan Kumar

8
Bu paketleri kaldırmanın C # 6 özelliklerinin kullanımını kıracağını unutmayın. Bu, görünümleri önceden derleyen "" Önceden derlenmiş sitenin güncellenebilir olmasına izin ver "seçeneğinin işaretini kaldırarak çözülebilir.
Rutix

9
@RanjanKumar: csproj dosyanızı bir metin düzenleyicide açın ve Kemal'in cevabında açıklanan NuGet paketlerine karşılık gelen düğümleri kaldırın. Bu, Importdüğümleri, Targetdüğümleri (EnsureNugetPackageBuildImports) ve Referencedüğümleri içerebilir . Ayrıca <system.codedom>web.config'inizin düğümünü kaldırın .
Brian

16

Ben de aynı sorunu yaşadım. Adımları buradan takip ettim . Temel olarak:

  1. Paketi kaldırın

    Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform <Your Web API project name>
    
  2. Yayın profili ayarlarınızda, "Önceden derlenmiş sitenin güncellenebilir olmasına izin ver" seçeneğinin işaretini kaldırın. Bunu, yayınlama sırasında Ayarlar> Ön derleme> yapılandır altında bulabilirsiniz.


7
Bu şekilde C # 6 özelliklerini görünümlerde kullanamazsınız.
RokX


2

Sayısız çabadan sonra .... ve bu web sitesine göre . Sana yararlanabileceğini /p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=falsebu da yapı içinde roslyn derleyici içerir, web.config dönüştürmek için MSBuild. Çıktı, Visual Studio'da dosya sistemine yayınlayarak elde ettiğinizle aynıdır


Web sitesi bağlantısındaki makaleyi anlayamıyorum, ancak MSBuild'e bu derleme parametrelerini ekleme tavsiyenizi takiben işe yarıyor .. Dediğin gibi çıktı, dosya sisteminde yayınladığımızdakiyle aynı. Teşekkürler
Bruce

2

Bir yoktur açık hata bu konuda roslyn depo üzerinde.

Benim durumumda tüm ı dll bozmak için oldu yapmak zorunda Microsoft.CodeDom.Providers.DotNetCompilerPlatformsürümden 1.0.6için 1.0.5.


0

Eylül 2016'da var olan bir ASP.NET programını devraldığımda aynı sorunu yaşadım. Çözümün farklı projelerinde kurulu Kemal'in bahsettiği iki derleyici paketinin birden fazla sürümü olduğunu buldum.

Öncelikle onları aynı şekilde almak için güncelledim. VS size bu senaryoda güncellemelerin mevcut olduğunu söylemiyor (veya belki kaçırdım?)

Daha sonra paketlerin düzgün bir şekilde temizlenmesi için VS2015'i yeniden başlatmam gerekti.

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.