1. ホーム
  2. c#

[解決済み] Visual Studio 2010で突然namespaceが表示されなくなった?

2023-07-01 08:06:02

質問

私の C# WinForms ソリューションには 2 つのプロジェクトがあります。 私が取り組んでいるメインプロジェクトであるDLLと、私が一度に簡単にDLLをコンパイル/実行/デバッグできるように"サンドボックス"と呼ぶ実行可能なWinFormsです。

私は両方のプロジェクトで .Net 4.0 で作業しています。

DLL に System.Web への参照を追加するまでは、すべてが正常に動作していました。 今では、私の Sandbox プロジェクトは DLL プロジェクトのネームスペースを見ることができません。これに影響を与えるはずのものは何も変更していません。

サンドボックスの参照から DLL へのプロジェクトの参照を削除し、それを再追加すると、赤い下線がすべて消え、すべてのクラスなどに色分けが戻ってきますが、ソリューションを構築しようとするとすぐに、全体が再び崩れてしまいます。

サンドボックスの参照で DLL プロジェクトを右クリックし、オブジェクト ブラウザで表示すると、名前空間とそこにあるすべてのものを見ることができます。

これは何かのバグのような気がするのですが?

これは VS2010 のバグの一種なのでしょうか?数ヶ月前にこれと同じ問題が発生し、そのときは、まったく新しいプロジェクトを作成してファイルを再インポートすることでしか解決できませんでした。しかし、今回、私は数十億のファイルを持っており、最後の手段としてのみそれを行うつもりです。

編集します。 慌ててすべての変更を取り消し、問題の原因を見つけようとした結果、この行が原因であるように思えたのです。

string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address);

この行をコメントアウトすると、名前空間エラーは発生せず、プロジェクトは正常にビルドされます。しかし、この行には何も問題があるとは思えません。

どのように解決するのですか?

私は、これを VS2010 のバグと宣言する用意があります。 修正は簡単で、[プロジェクト] + [プロパティ] の [アプリケーション] タブで、ターゲット フレームワークをデフォルトで選択されているクライアント プロファイルではなく、" .NET Framework 4" に変更します。

System.Web は、クライアント プロファイルに含まれません。 クライアント プロファイルは、.NET 4.0 のフル バージョンよりも 15% だけ小さくなっています。 デフォルトで選択されていることは、さらに愚かなことです。 しかし、話がそれました。

更新: 幸いなことに、これはすべて VS2012 で修正されました。 これにより、新しいプロジェクトでクライアント プロファイルがデフォルトになることはなくなりました。 そして、クライアント プロファイルは .NET 4.5 で完全に削除されました。