2016-01-29 16 views
18

Potansiyel C# 7 gelecekteki dil özellikleriyle denemeler yapmak istiyorum.Roslyn özellikleri/desen dalı (C# 7) - Deneysel dil özellikleri nasıl etkinleştirilir?

Roslyn kod tablosunu (özellikler/desen dalı) indirdiğim ve Roslyn'in github sayfasında açıklandığı şekilde oluşturulmuş bir sanal makinem var: Building and Testing on Windows.

Visual Studio'nun yeni bir deneme örneğini başarıyla başlatabilirim (VisualStudioSetup'ı başlangıç ​​projesi olarak ayarlayın ve çalıştırın). Ben yeni özelliklerini (desen eşleştirme ve yerel fonksiyonlar) Ben kıvrımlı ve ayrıca hata olarak düzenleyicisinde bir hata alıyorum denemek zaman

Ben oluştururken:

Pattern matching error squiggly

Local function error squiggly

Hata CS8058 Özellik 'yerel işlevler' deneyseldir ve desteklenmeyen ; Etkinleştirmek için '/ features: localFunctions' öğesini kullanın.

Hata CS8058 Özellik 'desen eşleştirmesi' deneyseldir ve desteklenmeyen ; Etkinleştirmek için '/ features: patterns' kullanın.

Bu seçenekleri nereye koyayım?

Komut satırı argümanlarına eklemeye çalıştım, ancak bir hata alıyorum.

Roslyn Args

Roslyn Args Error

+2

Bunu yeni buldum: https://github.com/dotnet/roslyn/issues/7509 Proje dosyaları aracılığıyla deneysel dil özellikleri etkinleştirilemiyor. Benimkiyle aynı sorun. Roslyn takımının yeni dil özelliklerini nasıl denediğini merak ediyorum. – Edward

+0

'devenv/features: localFunctions/rootsuffix RoslynDev' gibi komut satırından da geçirebilmeniz gibi görünüyor, ancak bu yalnızca "Geçersiz Komut Satırı. Bilinmeyen Anahtar: özellikler: localFunctions." _ Gibi görünüyor. Bağlandığınız konu ayrıntılandırılıyor (eğer doğru bir şekilde yorumluyorsam). Nasıl çalıştığını bilmiyorum. –

+0

Bayrağı yokedilemezsiniz. –

cevap

5

Bu henüz sabit değil bug 7812 olduğunu. Afedersiniz.

Dahili olarak, derleyici ekip çoğunlukla yalnızca birim sınamaları veya komut satırı derleyicisi aracılığıyla bir şeyi sınar; biz gerçekten IDE'yi test etmemiz gerekiyorsa, özellik bayrağında geçen kontrolü siliyoruz.

+2

Savunmada, bugün bunu düzeltmeye başlayacağım. :-) –

+0

Yeni dil özelliklerini etkinleştirmenin bir yolunu buldum (kendi yanıtıma bakın), bu yüzden terleme. Bir yan etki olarak süreçte çok şey öğrendim. Bu harika! – Edward

3

Yeni dil özelliklerini etkinleştirmenin yolunu buldum.

Kodun izini sürerek, özellik denetiminin yapıldığı yeri (işlev IsFeatureEnabled) buldum ve her zaman doğru olarak döndürülmesini sağladım.

Daha sonra komut satırından önceki gibi yeniden oluşturdum. Ve bundan sonra deneysel Visual Studio örneğini başlattığımda yeni dil özellikleri etkinleştirildi.

ÖNCE:

Feature Breakpoint

SONRA:

internal bool IsFeatureEnabled(MessageID feature) 
{ 
    // Force all demo features: 
    return true; 

    // in "demo" mode enable all language features. 
    if (PreprocessorSymbols.Contains("__DEMO__")) 
    { 
     return true; 
    } 
+0

Evet, bazı demolar için de dahili olarak yaptığımız şey bu. :-) –

+0

Güzel numara! –

4

Üzgünüm, indirdiğiniz söyledi kodla R & D yapmadım.

Ancak Visual Studio'nun '15' önizlemesinde (30 Mart 2016'da duyuruldu) bunu kolayca düzelttim. Diğer insanlara yardımcı olabilir.

Ben hatayı

Hata CS8058 Özelliği 'Yerel işlevleri' alma deneysel ve desteklenmeyen edildi; Etkinleştirmek için '/ features: localFunctions' öğesini kullanın. Bu proje adını ve sağ tıklama >> Özellikler Penceresi >> kurmak seçmek düzeltmek için

ve sonra metin kutusuna "Koşullu Derleme semboller" in iki seçenek aşağıda __DEMO __, __ DEMO_EXPERIMENTAL__

enter image description here

eklemek

Kaydetmek için kaydet butonuna tıklayınız. Şimdi uygulamanızı oluşturun ve yapınız başarılı olacak.

benim sonunda ben __DEMO__ & __DEMO_EXPERIMENTAL__ herhangi biri o zaman iyi çalışıyor eklerseniz bile.

+0

Artık VS2015 update3 Enterprise ile çalışma yok. – AKS

+0

Visual Studio 2015 ile çalışmayabilir, Visual Studio 2017 ile C# 7 tanıtıldı. Lütfen Visual Studio Ürün adı ve sürümüyle karıştırmayın. Visual Studio 15.x, Visual Studio 2017'ye başvuruyor. Visual Studio 2017'nin en son sürümü, C# 7, C# 7.1 ve C# 7.2'yi de destekleyen Visual Studio 15.6'dır. –

+0

Versiyonlama hakkında daha fazla bilgi için lütfen http://www.c-sharpcorner.com/article/visual-studio-15-preview-first-look-C-Sharp-7/ bağlantısına bakın. –