21

次のようなクラスで静的メソッドを呼び出しています

Foo.bar()

Visual Studio のインテリセンスは Foo を認識し、バーをオートコンプリートします (Foo が強調表示され、正常に動作しているようにすべてが機能します)。プロジェクトをビルドするまではすべて問題ないように見えますが、Foo という名前が現在のコンテキストに存在しないというエラーがスローされます。

この静的メソッド呼び出しを他のファイルで使用しているので、クラスが問題ないことはわかっています。状況が大きすぎてコードを投稿できないため、インテリセンスが正常に機能するが、コンパイル時にこのようなエラーが発生する原因を調査し始める理由を主に探しています。

4

16 に答える 16

9

これは、名前空間、クラス、および変数が同じ名前を持つときに絡み合った場合に発生する可能性があります。私は以前にこれに苦しんだことがあります。インテリセンスは私が正しいと言いましたが、コンパイラは私が間違っていると言いました! 私はコンパイラを信頼しました!

私が考えることができる2つのオプションがあります

  1. コードで Foo を検索し、静的クラス以外に使用されていることを確認します。

  2. Foo.bar() 呼び出しを完全に修飾します。MyApplication.This.That.Foo.bar();

その順序でそれを行います...問題をエレガントに解決する方が良いので、単に Foo.bar() を呼び出すことができます。これは、あちこちにあるよりも読みやすく、保守しやすいからMyApplication.This.That.Foo.bar();です!

于 2012-08-21T21:53:16.857 に答える
3

これは少し古いトピックであることは知っていますが、同じことを経験したばかりで、ファイルが実際にはソリューションに含まれていなかったためです。

クラスの名前を変更してからファイルの名前を変更したため、Visual Studio はまだクラスと名前空間を認識していましたが、名前が変更されたファイルが含まれていなかったため、コンパイラはファイルを取得できませんでした。

于 2014-01-24T07:31:33.937 に答える
1

問題のあるプロジェクトでクリーンを実行してからビルドを実行することを検討してください。エディターと Intellisense がクラスを正しく検出する可能性がありますが、コンパイラーは古いファイルを処理します。(私はこれと同じ問題を抱えていました。それが私がそれを解決した方法です。)

于 2013-11-21T19:45:45.267 に答える
1

これは私が知っている古い記事ですが、この問題に遭遇したばかりで、数日間頭を悩ませていましたが、最終的に問題にたどり着きました。ソリューション エクスプローラーでクラス ファイルをクリックし、[プロパティ] タブを確認します。ビルド アクションが「コンパイル」に設定されていることを確認します。

于 2015-01-26T17:54:07.567 に答える
1

関連ファイルを調整します。のエラー コードの場合はDefault.aspx.cs、ファイルの先頭行を次のように変更する必要がありDefault.aspxます。

"CodeFile="と置き換えます"CodeBehind"

これが役立つことを願っています。

-ありがとう、Thai_FUV

于 2019-07-25T07:07:27.563 に答える
0

私はこの問題に数回遭遇したので、最初に確認するのは、認識されていないアセンブリに Nuget パッケージがあるかどうかです。私の場合、それらは常にあり、認識されていないアセンブリへの参照が含まれているアセンブリに同じパッケージをインストールするのを忘れていました。再構築コマンドと問題が修正されました。これが誰かに役立つことを願っています。この同じエラー メッセージは複数の場合に表示される可能性があるため、この特定のケースは当てはまらない場合があります。Nuget を使用していない場合は、他の回答を試すことをお勧めします

于 2015-07-07T16:08:34.020 に答える
0

MonoDevelop のすべてのタブを閉じます。次に、MonoDevelop を閉じます。最後に MonoDevelop を再度開くと、問題が解決しました。

于 2016-06-03T20:36:08.557 に答える
0

I also was running into this issue creating a data access layer and had static methods being called with the same symptoms: Intellisense finding it but not the compiler. I tried many of the above, including fixing the .Net version.

When adding the source files to the project I also changed the namespace. With the file with the issue, I forgot to change the namespace to match when it was imported at another time.

于 2015-09-11T20:04:37.913 に答える
0

時々発生するこの問題に対する私の解決策:

  1. ソリューション エクスプローラーと [プロジェクトから除外] で問題を引き起こしているクラスを見つけます。
  2. そのアセンブリを再構築します (「A」と呼びましょう)
  3. ファイル (「B」) を使用したプロジェクトから、プロジェクトを「リロード」するよう求められます。
  4. ファイルを削除したばかりのアセンブリ A に再度追加し、再構築します。
  5. ここで、プロジェクト B をリロードします

その後、VSでファイルが見つかり、すべて問題ありませんでした。

于 2018-04-29T21:16:11.847 に答える