web-dev-qa-db-ja.com

「クラス」には「メソッド」の定義が含まれていません

クラスEmployeeには、正常に機能するメソッドがいくつかあります。今、私は新しいメソッドを追加したかった、例えば

public void ExampleMethod()
{         
}

それから私はそれを呼ぶ

Employee employee = new Employee();
employee.ExampleMethod();

ExampleMethodはドットの後に表示されるIntelliSenseに存在し、F12を押すとそのメソッドにもリダイレクトされますが、プロジェクトの開始中にエラーが発生しました:「Employee」には「ExampleMethod」の定義と拡張メソッド「ExampleMethod」が含まれていません'タイプ' Employee 'の最初の引数を受け入れることが見つかりました(usingディレクティブまたはAssembly参照がありませんか?)

他のすべての以前の方法は正常に機能するため、このエラーが発生する理由はわかりません。どうしたの?

17
vanilla161

次の3つの可能性があります。

1)古いDLLを参照している場合は使用できません。新しいDLLを参照しています。

2)別のネームスペースで使用していて、他のネームスペースのdllを使用しようとしている場合、このメソッドを参照しません。

3)プロジェクトの再構築が必要になる場合があります

3番目のオプションが原因であると思います。あなたの問題を正確に理解するために、より多くの情報を投稿してください。

23
VIRA

名前空間名でクラスを作成すると、問題が解決する場合があります

namespace.Employee employee = new namespace.Employee(); 
employee.ExampleMethod();
6
Pranay Rana

別のプロジェクトのクラスを使用している場合、プロジェクトでDLLを再構築および作成する必要があります。 Visual StudioBuild-> Configuration Managerで、そのプロジェクトの「ビルド」がチェックされていることを確認します。そのため、参照プロジェクトはdllを再構築して更新します。

2
Heshan

同じ問題がありました。私が参照していたプロジェクトはビルドされませんでした。 Visual Studioのビルド構成マネージャーに移動して、参照プロジェクトを有効にすると、問題は解決しました。

2
Serge

私はこの問題に出くわしました。この問題は、ここに投稿された他の回答とは異なるようですので、誰かに役立つ場合は言及します.

私の場合、1つのアセンブリ( "A")で定義された内部基本クラス、2番目のアセンブリ( "B")で定義された内部派生クラス、およびテストアセンブリ( "TEST")があります。 InternalsVisibleToAttributeを使用して、アセンブリ "B"で定義された内部を "TEST"に公開しましたが、アセンブリ "A"の場合はそうしませんでした。これにより、問題をさらに示すことなく、上記のエラーが発生しました。 InternalsVisibleToAttributeを使用してアセンブリ "A"を "TEST"に公開すると、問題が解決しました。

1
ket

コードを共有する複数のプロジェクトを含むソリューションで作業する場合、同じ問題が発生しました。 2番目のプロジェクトのフォルダー内のDLLを更新するのを忘れていたことが判明しました。

私の提案は、エラーリストウィンドウの「プロジェクト」列をよく見て、プロジェクトが正しいDLLを使用していることを確認することです。

0

今日、私はあなたが説明したのとまったく同じ症状の問題に遭遇しました。ソリューションエクスプローラーから一部のファイルが消えたことを確認するために、すべてのファイルを閉じてVSを再起動しました。

以下が私の問題を解決しました。ソリューションエクスプローラーで現在のプロジェクトを選択すると、小さなアイコンShow all filesがトップバーに表示されます。ファイルを右クリックしてInclude In Projectを選択すると、処理が行われます。

クレジット

0
Tilwaen

同じ問題がありました。プロパティフォルダーのAssemblyInfo.csのアセンブリのバージョンを変更しました。しかし、この問題が発生した理由はわかりません。おそらく、コンパイラは、このdllが新しいことを理解せず、アセンブリのバージョンを変更するだけです。

0
Renato Carvalho