Fehlermeldung "Visual Basic 9.0 unterstützt nicht automatisch implementierte Eigenschaften" auf eine Schnittstelle in Visual Studio 2015 RC
Habe ich geöffnet, ein website-Projekt, die zuvor entwickelt wurden, in Visual Studio 2012-2015 RC. Die Projekt-Ziele .net 3.5.
Habe ich diese Schnittstelle definiert:
Public Interface ICurrentStep
Property outerstep() As String
Property innerstep() As String
End Interface
Bekomme ich folgende build-Fehler für jede Eigenschaft: "BC36716 Visual Basic 9.0 unterstützt nicht automatisch implementierte Eigenschaften".
Ich verstehe nicht, warum Visual Studio 2012 ist vollkommen zufrieden mit diesem, aber 2015 ist nicht. Die website funktioniert unter .net 3.5 in beiden xcopy und veröffentlichten Versionen.
Ich versteh auch nicht, wie würde ich definieren Sie die Schnittstelle, auf andere Weise. Könnte das ein 2015/Roslyn bug?
Targeting .net 4.0 wird das problem zu beheben aber das ist nicht eine option für die Bereitstellung im moment aufgrund externer Abhängigkeiten. Ich vermute, dass es ist, weil hinter den kulissen ist es für eine andere compiler als pro Ist es möglich, die Kraft von Visual Studio 2010 verwenden von Visual Basic-10?
- Sobald ich den code in ein VB-Projekt bekomme ich Fehler "BC30273 'Öffentlich' ist nicht gültig auf eine interface-Deklaration einer Eigenschaft"
- sorry - einfügen von code-Varianten war ich versucht, es zu beheben mit. Bearbeitet.
- Ich konnte nicht reproduzieren, bis ich platziert den code in der
App_Code
Ordner von einer website - ist, dass das gleiche für Sie? Ich habe auch ein erweitertes Beispiel, das macht mich denken, dass dies ein Roslyn bug. (Wenn Sie hinzufügen ` = "Hallo"` auf eine Ihrer Eigenschaften, erhalten wir die zusätzliche Fehlermeldung "Erweiterte Eigenschaften können nicht initialisiert werden." - damit der compiler glaubt, dass zwei unterschiedliche und widersprüchliche Dinge über diese Eigenschaften - das, Sie sind automatisch umgesetzt und Sie expandiert) - Ja, das ist in einem sub-Ordner App_Code. Ich denke, dass meine beste Vorgehensweise ist, Sie ziehen aus in eine andere Versammlung. Ich werde geben, dass ein gehen...
- Cheers mate, das funktioniert in der Tat um das problem. Ich werde gerne vergeben Sie die rep, wenn Sie wollen, um es uns als eine Antwort.
- Ich 'gesendet ein Stirnrunzeln", um das VS-team, hoffentlich werden Sie in der Lage sein, dies zu korrigieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese tatsächlich scheint ein bug in der Roslyn-compiler. Der compiler ist in einer odd-Modus, wo die Rechtschreibprüfung (aber nicht wirklich kompilieren) den code innerhalb
App_Code
- code tatsächlich kompiliert wird, wenn die Seite startet.Da Sie weiß, dass Sie festgelegt haben, kann der code ausgeführt werden, der unter v3.5 es wird davon ausgegangen, dass der code tatsächlich sein wird, zusammengestellt von der "v2.0" - compiler, so dass es effektiv läuft das überprüfen/kompilieren, als wenn Sie angegeben habe
/langversion
Flagge als 9.So, das ist der Grund, warum die Fehlermeldung ist über Dinge zu sprechen von Visual Basic nicht unterstützt 9. Allerdings, wenn Sie den code kompilieren mittels real-VB9-compiler natürlich kompiliert einwandfrei.
Als Beweis dafür, dass der compiler ist ziemlich verwirrt, ich änderte Ihre Probe:
Diese sollten produzieren eine Fehlermeldung über nicht erlaubt wird, eine Initialisierung in eine Schnittstelle. Aber, statt nur zwei Fehlermeldungen, die besagt "Visual Basic 9.0 unterstützt nicht automatisch implementierten Eigenschaften." wir auch bekomme die Fehlermeldung "Erweiterte Eigenschaften können nicht initialisiert werden.". Aber bedeutet dies nicht,Sinn machen:
Ist, eine einzelne Eigenschaft kann entweder werden automatisch implementiert oder erweitert.
Meine Empfehlung wäre, sich zu bewegen, so viel code wie möglich aus
App_Code
- entweder nur außerhalb oder in einer anderen Bibliothek. Das bedeutet dann, dass der code tatsächlich zusammengestellt von der Roslyn-compiler, die direkt (und ohne die/langversion
Einstellung) und man kann tatsächlich beginnen, mit der moderne VB-Funktionen (Sie können immer noch target v3.5 aber später Sprache Funktionen)In der alternative sind, können Sie den code in
App_Code
und wählen Sie die Fehler ignorieren. Wenn es nur zwei Fehler, kann das kurzfristig realisierbar.In meinem Fall, mit VS2015 Gemeinschaft, das eigentliche problem war eine leere Zeile zwischen der Eigenschaft header und die
Get
Methode. Siehe meine screenshots weiter unten:Vor: (Fehler Bild)
Nach: (Kein Fehler Bild)
Get
, die VS2015 compiler (Roslyn) macht es ein Problem, wenn die LangVersion ist auf 11 festgelegt (VS2012).Ich habe ein Projekt, das in den Prozess des übergangs zu verwenden VS2015 von VS2008. Wir unterstützen müssen beide Umgebungen, die in der kurzen Frist, so dass ich erstellt habe, VS015 .vbproj-Dateien sind die Richtlinie
9
in der PropertyGroup-Abschnitt der Datei.
Ich wurde immer diese Fehlermeldung, da gab es ein Kommentar zwischen der Deklaration einer Eigenschaft und die Get-Klausel.
Zum Beispiel
Bewegen Sie den Kommentar vor dem "Private Readonly" - Zeile entfernt der compiler Fehler im VS2015.
Kann dies scheint trivial und OT, aber wenn du mit Visual Studio Community, das Jahr 2015 und Sie sind targeting .net 3.5 stellen Sie sicher, dass die Zeile eine Fortsetzung "_" wurde nicht automatisch entfernt.
VSC 2015 automatisch entfernt die Zeile Fortsetzung auf Bearbeiten, und es gibt keinen Weg, um setzen Sie ihn zurück (ich hatte, es zu tun außerhalb der VSC 2015). Zudem ist der compiler gibt einen Fehler auf dieser Linie, aber der editor nicht unterstreichen.
In meinem Fall (VS2015, ASP.NET app VB.NET, .NET 4.6) ich habe es gelöst durch entfernen des Leerzeichens zwischen der Deklaration der Prozedur und die zu Bekommen.
Das snippet unten wirft die "Visual Basic 12.0 unterstützt Nicht ReadOnly automatisch implementierte Eigenschaften".
Dem snippet unten nicht.
Den build-Fehler ist ein bug im compiler und ist auch in Visual Studio 2015 RTM.
Die Installation von update zu Visual Studio 2015 RTM löste dieses Problem für mich.
(Getestet und verifiziert mit Visual Studio 2015 RTM Update 1 und Update 3.)