web-dev-qa-db-ja.com

Visual Studio 2010は突然名前空間を見ることができませんか?

私のC#WinFormsソリューションには2つのプロジェクトがあります。 DLLこれは私が取り組んでいるメインプロジェクトであり、実行可能なWinFormsです。 "Sandbox"を呼び出して、DLL =一度に簡単に。

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

一見無害なコードとDLLのSystem.Webへの参照を追加するまで、すべてが正常に機能していました。現在、私のサンドボックスプロジェクトは、DLLプロジェクトの名前空間を見ることができません。これに影響を与えると思われるものは何も変更しませんでした。

Sandbox参照からDLLへのプロジェクト参照を削除して追加し直すと、赤い下線がすべて消え、すべてのクラスなどで色分けが元に戻ります。ただし、すぐにソリューションを構築しようとすると、全体が再びばらばらになります。

Sandboxの参照内のDLLプロジェクトを右クリックし、オブジェクトブラウザーで表示すると、名前空間とすべてのものが表示されます。

これは何らかのバグかもしれないと感じていますか?

これは何らかのVS2010のバグですか?数か月前に同じ問題が発生しましたが、まったく新しいプロジェクトを作成してファイルを再インポートすることでしか修正できませんでした。ただし、今回は、膨大な数のファイルがあり、最後の手段としてのみそれを行います!

編集:パニック状態ですべての変更を取り消して元に戻し、問題の原因を見つけようとすると、この行のように見えます:

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

この行をコメントアウトすると、ネームスペースエラーが発生せず、プロジェクトが正常にビルドされます。ただし、この行に問題はありません。

83
Ozzah

これをVS2010のバグとして宣言する準備ができました。これは既にあまりにも多くのプログラマーに噛み付いています。修正は簡単です。プロジェクト+プロパティ、アプリケーションタブで、ターゲットフレームワークをデフォルトで選択されているクライアントプロファイルではなく「.NET Framework 4」に変更します。

System.Webはクライアントプロファイルに含まれていません。そもそもこのオプションを使用するのは非常にばかげています。クライアントプロファイルは、.NET 4.0のフルバージョンよりも15%だけ小さくなっています。デフォルトで選択されていると、さらに愚かになります。しかし、私は脱線します。

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

149
Hans Passant

両方のプロジェクトがターゲットフレームワークに非クライアントプロファイルを使用していることを確認します(これを行うには、各プロジェクトのプロパティに移動します)。

8
Mark Avenius

1つの可能性は、クラスライブラリのターゲット.NET Frameworkバージョンがプロジェクトのバージョンよりも高いことです。私はこの問題に直面し、ビジュアルスタジオを閉じ、ビジュアルスタジオを再び開き、ソリューションをクリーニングして再構築することで解決しました。これは私のために働いた。他のいくつかの投稿では、返信を読んでおり、ほとんどのユーザーはこの方法で問題を解決しました。

2
Muhammad Sohail

最初にSandbox dllを使用してプロジェクトのみを個別にビルドしてみてください。

次に、実行可能プロジェクトで必要なdllを指定し、copy localtrueに設定されます。参照設定で。

次に、実行可能プロジェクトをビルドします。

1
Robin Maben

すでにフレームワークの変更を試みたが、まだ機能しない場合は、これが(私にとってもそうだったように)うまくいくことを願っています。プロジェクト内から必要な参照を追加するだけです。非常に明白ですが、私は問題が何かを見つけるまで間違っていました。

0
lu1s

この問題が発生したばかりで、同じオブジェクト名を持つ複数の名前空間が使用されていることが判明しました(つまり、ビジネスオブジェクトはmvcモデルと同じ名前でした)。

名前を完全に修飾することで問題が解決しました。

0
Mike Cheel

ターゲットフレームワークを「.NET Framweork 4クライアントプロファイル」から「.NET Framework 4」に変更すると、同様の問題が発生しました。私は、クライアントプロファイルを使用することに大きな利点がないように見えることに同意します。 Visual Studioがデフォルトでクライアントプロファイルを使用することを覚えるまで、私が探している奇妙なエラーに釘付けになっているようです。エラーが発生したときのストーリーのモラルは、「ソリューションの再構築」が機能しない場合は、ターゲットフレームワークを確認することです。

0
Andy