.NET-Eigenschaft Erzeugen „muss einen Körper erklären, weil sie nicht abstrakt oder extern markiert“ Kompilierungsfehler

StackOverflow https://stackoverflow.com/questions/95683

  •  01-07-2019
  •  | 
  •  

Frage

Ich habe eine Web-Anwendung .NET 3.5 (Ziel-Framework). Ich habe einige Code, der wie folgt aussieht:

public string LogPath { get; private set; }
public string ErrorMsg { get; private set; }

Es gibt mir diese Zusammenstellung Fehler für diese Zeilen:

"must declare a body because it is not marked abstract or extern."

Irgendwelche Ideen? Mein Verständnis war, dass diese Art der Eigenschaft gültig war, als von .NET 3.0.

Danke!


Das Problem stellte sich heraus, in meinem SLN-Datei selbst zu sein. Obwohl ich die Zielversion in meinen Build-Optionen wurde zu ändern, in der SLN-Datei, fand ich diese:

TargetFramework = "3.0"

Ändern, die auf „3.5“ löste es. Danke, Jungs!

War es hilfreich?

Lösung

zu web.config hinzufügen

<system.codedom>
    <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
            <providerOption name="CompilerVersion" value="v3.5" />
            <providerOption name="WarnAsError" value="false" />
        </compiler>
    </compilers>
</system.codedom>

Andere Tipps

Der Code ist gültig - es sollte funktionieren. Gehen Sie in den Eigenschaftsseiten Ihres Projekts und stellen Sie sicher, dass das „Target Framework“ ist .NET 3.0 oder 3.5.

Die Syntax ist gültig. Und Sie können verschiedene Zugriffsmodifikatoren eingestellt. Sie sind nicht auf einem Interface sind Sie? Und die Klasse in diese sind nicht abstrakt ist es?

Auch spielt es keine Rolle, was v. Der Rahmen Sie zielen, denn dies ist ein Compiler-Funktion . VS2008 wird die Eigenschaft w / Hintergrundspeicher für Sie implementieren.

Sie sind richtig; dass Stil erlaubt ist.

Ich würde schauen in die Standard-Baugruppen verwiesen. Ich bin nicht sicher, was Sie, dass bekommen müssen, um zu kompilieren, aber ich glaube etwas bist du auf die .NET v2.0 Version von csc.exe zeigen.

Dieser Fehler sollte nicht aus dem Code kommen Sie auf dem Laufenden. Laut MSDN, haben Sie dieses Recht getan: http://msdn.microsoft .com / en-us / library / bb384054.aspx

Daher würde ich empfehlen Sie erneut überprüfen Sie die Fehlermeldung, und wo der Compiler sagt der Fehler herkommt. Der Text der Nachricht geschrieben Sie keinen Verweis auf Eigenschaften enthalten waren, und es gibt eine ähnliche Meldung für Funktionen ... Alles, was eine Implementierung und nicht auf einer Schnittstelle oder markiert abstrakt oder extern fehlt kann diesen Fehler erzeugen.

Die Auto-Eigenschaft ist ein Merkmal der C # 3.0 Sprache / Compiler. Wenn Sie VS 2008 verwenden, sollte es funktionieren, auch wenn Sie .NET 2.0 zielen. Getestet habe ich es nur um sicherzugehen.

Dieser Fehler kann auch passieren, wenn Sie mit Codefile = "MyControl.ascx.cs" in Ihrem MyControl.ascx anstelle von Codebehind = "MyControl.ascx.cs “.

Bei Codefile , die 2.0-Compiler versucht, die Seite neu zu kompilieren, selbst wenn Sie eine WebProject haben anstelle eine Website und natürlich - nicht fehlschlagen.

Ändern der Attributnamen auf Codebehind das Problem in meinem Fall festgelegt.

Wo definieren Sie diese Eigenschaften? Direkt in der als * x-Datei oder in dem Code-Behind? (Ich glaube nicht, dass ein Grund sein kann, aber wenn das Build-Ziel .NET 3.5 ist, kann ich nichts anderes sehen)

Dies geschieht auch auf einem Raw-Website-Projekt, wo es keine web.config erzeugt wird.

Obwohl die Lösung Datei sagte 3.5, benötigt .Net die web.config es zu erklären, auch zu erkennen. Ich lief debug ermöglicht es eine webconfig zu schaffen, und alles funktioniert.

So ist es, wie die Antwort ist vorgesehen, sondern nur sicherstellen, dass Sie eine haben.

Es ist, so lange wie Sie setzen abstrakt vor, oder die Methoden implementieren.

public abstract string LogPath { get; private set; }
public abstract string ErrorMsg { get; private set; }

Siehe http://forums.asp.net/t/1031651.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top