12

.NET 3.5 (ターゲット フレームワーク) Web アプリケーションがあります。次のようなコードがあります。

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

これらの行でこのコンパイルエラーが発生します:

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

何か案は?私の理解では、このスタイルのプロパティは .NET 3.0 の時点で有効でした。

ありがとう!


問題は、私の .sln ファイル自体にあることが判明しました。ビルド オプションでターゲット バージョンを変更していましたが、.sln ファイルで次のことがわかりました。

TargetFramework = "3.0"

それを「3.5」に変更すると解決しました。みんなありがとう!

4

9 に答える 9

16

web.config に追加

<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>
于 2009-07-16T21:28:59.887 に答える
4

あなたのコードは有効です-それはうまくいくはずです。プロジェクトのプロパティページに移動し、「ターゲットフレームワーク」が.NET3.0または3.5であることを確認します。

于 2008-09-18T19:07:23.117 に答える
3

構文は有効です。また、さまざまなアクセス修飾子を設定できます。あなたはインターフェースを使用していませんか?そして、これらが含まれるクラスは抽象的ではありませんか?

また、これはコンパイラ機能であるため、ターゲットとするフレームワークのv。は関係ありません。VS2008は、バッキングストア付きのプロパティを実装します。

于 2008-09-18T19:02:07.747 に答える
1

そのエラーは、投稿したコードに起因するものではありません。MSDNによると、あなたはこれを正しく行っています:http: //msdn.microsoft.com/en-us/library/bb384054.aspx

したがって、エラーメッセージと、エラーの原因であるとコンパイラが言っている場所を再確認することをお勧めします。投稿したメッセージのテキストにはプロパティへの参照が含まれていませんでした。関数についても同様のメッセージがあります...実装が欠落していて、インターフェイス上にないか、abstractまたはexternとマークされているものは、このエラーを生成する可能性があります。

自動プロパティは、C#3.0言語/コンパイラの機能です。VS 2008を使用している場合は、.NET2.0をターゲットにしている場合でも機能するはずです。確認のためにテストしただけです。

于 2008-09-18T19:10:32.093 に答える
1

あなたは正しいです; そのスタイルは許可されています。

参照されている標準アセンブリを調べます。コンパイルするためにどちらを取得する必要があるかはわかりませんが、.Netv2.0バージョンのcsc.exeを指していると思います。

于 2008-09-18T18:59:20.593 に答える
1

このエラーは、MyControl.ascx でCodeBehind ="MyControl.ascx.cs"の代わりに CodeFile ="MyControl.ascx.cs"使用している場合にも発生する可能性があります。

CodeFileの場合、WebSite の代わりに WebProject があり、もちろん失敗しても、2.0 コンパイラはページの再コンパイルを試みます。

私の場合、属性名をCodeBehindに変更すると問題が解決しました。

于 2009-10-14T14:20:54.437 に答える
0

これは、web.configが生成されていない生のWebサイトプロジェクトでも発生します。

ソリューションファイルには3.5と記載されていますが、.Netは、認識できるようにWeb.configを指定する必要がありました。webconfigを作成できるようにデバッグを実行しましたが、すべてが機能していました。

つまり、提供された答えのようなものですが、必ず1つ持っていることを確認してください。

于 2009-08-25T19:46:05.717 に答える
0

このプロパティをどこで定義しますか? as*x ファイルまたは分離コードで直接? (それが理由になるとは思いませんが、build-Target が .NET 3.5 の場合、他に何も表示されません)

于 2008-09-18T19:04:29.677 に答える
-7

それは、抽象を前面に置くか、メソッドを実装する限りです。

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

http://forums.asp.net/t/1031651.aspxを参照してください

于 2008-09-18T18:59:04.510 に答える