2017-02-14 29 views
11

üzerinde bir web projesinde çalışmaz çözümde birkaç projem var ve tuples ve throw ifadeleri gibi C# 7 özellikleri, tüm kitaplık projelerinde işe yarar ancak C# 7 özelliklerinde hatalar nedeniyle derlemeyen bir (Çekirdek olmayan) web projesi var. Derlemeden hemen sonra, hata penceresi kendini muhtemelen temizler, çünkü IDE/editör aynı birimleri hata olmadan derler. Derleyici hatalarını görmek için çıkış penceresini kullanmalıyım. IDE/editör C# 7'yi varsayıyormuş gibi ama derlemede kullanılan derleyici değil.C# 7 özellikleri, Visual Studio 2017 RC

Koşullu derleme simgelerine "__DEMO__,__DEMO_EXPERIMENTAL__" eklemeyi denedim, boşuna. Çerçevenin farklı sürümünü hedeflemeyi denedim ve compilation ve system.web'un targetFramework etiketleri de dahil olmak üzere web.config dosyasını düzenledim.

Örnek hataları: Burada

if (!config.Properties.TryGetValue(modelId, out var model)) // error CS1003: Syntax error, ',' expected 
if (modelDescription is ComplexTypeModelDescription complexTypeModelDescription) // error CS1026:) expected 

proje için csproj dosyasının ilk birkaç satırı şunlardır:

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" /> 
    <Import Project="..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" /> 
    <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 

Güncelleme: Ben en son şablonu kullanarak yeni bir web projesi oluşturma çalıştı VS 2017 RC ve benim kaynak dosyalarımda kopyalama. Aynı şey.

Ayrıca açıkça Project | Özellikleri | Oluştur | Gelişmiş | 7. dil versiyonu. "/ Langversion için geçersiz seçenek '7' sonuçlarındaki sonuçlar.

cevap

22

solution, Microsoft.Net.Compilers nuget paketini> = 2.0.0 olarak güncelleştirmektir. Şu andan itibaren, 2.0.0 sürümü görünmesi için, paket yöneticinin üst kısmındaki "Önceden yayınlanmayı dahil et" onay kutusu işaretlenmelidir. Bu yüklü Language version gelişmiş ayarın Default'dan geçersiz kılınması gerekmez.

+1

Projemi bir saatin üzerinde geçirerek geçirdim ve projemi gerçekten çok kusurlu bir hatayla başarısızlıkla geçirdim. Hatta VS2017'yi yeniden yükledim. Sonra cevabınızı buldum ve sorunu hemen çözdüm. Teşekkür ederim! – jao

+1

Bu cevabın cevap olarak işaretlenmediğini merak ediyorum! Çok teşekkürler! –

+0

Mükemmel! Benim durumumda, VS2017 topluluk sürümü oldu. –

İlgili konular