[C#] タイプまたは名前空間名が存在しません


Answers

System.Linqが認識されないという問題がありました。 usingステートメントには赤い波がありました。私が解決したのは、私のウェブサイトをdotnet 3.5をターゲットに変更し、元のターゲットフレームワーク(私の場合は4.0)に戻すことでした。

Question

Visual Studio 2010で構築されたWCFデータサービスプロジェクトが正常に動作しています。 突然、それはもうコンパイルされませんでした。 それは私のようなメッセージを与えていた:

エラー7型または名前空間の名前 'Services'が名前空間 'System.Data'に存在しません(アセンブリ参照がありませんか?)C:\ U ... s \ Visual Studio 2010 \ Projects ... \ DataService。 cs ...

エラー8型または名前空間名 'Linq'が名前空間 'System'に存在しません(アセンブリ参照がありませんか?)DependencyResolver.cs 3 14

エラー10型または名前空間の名前 'Web'が名前空間 'System.ServiceModel'に存在しません(アセンブリ参照がありませんか?)

エラー12型または名前空間名 'DataService'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

どうすれば修正できますか?




私は最近、システムの復元を行う必要があったため、復元後に作業していたファイルのいくつかが変更/消滅しました。 それらのうちのいくつかはDLLファイルでした。 ソースコントロールを使用してプロジェクト全体を取得しましたが、上記と同様の問題がありました。 私はあなたのエラーを解決するためにDLLを削除しreaddする必要があるかもしれないと説明したこの答えを見つけました。 これは私のシナリオのケースでした。

WebMatrix.WebDataを削除し、 WebMatrix.WebData追加するだけでなく、 The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ...エラーを修正しましたThe type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ...




同じエラーが発生しました。 私のプロジェクトのアセンブリ名が間違っていることを発見した後(私は別のプロジェクトからファイルをコピーし、名前空間はちょっと混乱しました)、プロジェクトを元に戻しました。




私の場合は、作成したクラスに既存のクラスを妨害する名前空間があったため、問題が発生していました。 新しいクラスAには、名前空間zz.yy.xx(誤って)がありました。 別の名前空間yy.xxのオブジェクトへの参照は、クラスAまたは名前空間がzzの他のクラスではコンパイルされませんでした。

私はクラスAの名前空間をyy.xxに変更しました。




私のケースでは、プロジェクトに変更はありませんでした。コンパイルが中止され、「タイプまたは名前空間の名前XXXは存在しません」と、そのXXXの名前空間/クラスに対するintellisenseが問題なく動作します。 問題は実際には参考になった!

再現する手順:

  1. ソリューションにProjectA、ProjectBがあります。 ProjectAはサードパーティのlog4netを参照し、 Copy local: trueとマークされCopy local: true 。 ProjectBはProjectAを参照しており、log4netへの参照はありません。 ソリューションは正常にコンパイルされます。

  2. ProjectAの変更:log4netの参照プロパティをCopy local: false変更しCopy local: false

  3. binとobjフォルダをきれいにします。
  4. コンパイルすると、ProjectAはコンパイルされますが、ProjectBはProjectA名前空間が見つからないという不満があります。

This is because ProjectB binフォルダにサードパーティのライブラリ (log4net in my case)!

この場合、解決策は -

  1. サードパーティのライブラリ参照がCopy local: trueまたは
  2. 参照パスの下にあるプロジェクトプロパティでそのようなライブラリへのパスを追加します。



VS2010でWPFクラスライブラリを扱っているなど、ターゲットフレームワークが同じであることを確認するなど、すべてが失敗した場合は、単にVisual Studioを再起動します。 それは私のためにそれをしました。




ターゲットフレームワークが同じ.NETバージョンを持っていることを確認してください。 私は同じ問題を抱えていました。クラス.NETは3.5で、Webソリューションは4.5でした。 私はそれらを同期させ、そしてそれは働いた:)




私は同じ問題を抱え、上記のすべてを何も成功させずに試してみた。

私は自分のプロジェクトの1つに "System"というフォルダを作成し、その中にクラスを作成しました。 この問題は、 "MyProject.System"の名前空間にあっても、.csファイルが作成されたときに "System"という名前空間を持つことに起因すると考えられます。

振り返ると、なぜこれが問題を引き起こすのか理解することができます。 エラーメッセージが当初は問題に関連していないように見えたので、最初は本当に私を困らせました。