web-dev-qa-db-ja.com

型または名前空間の名前が見つかりませんでした

C#にいくつかのプロジェクトがあるVisual Studio 2010ソリューションがあります。一つはテストプロジェクト(私はそれを " PrjTest "と呼びます)、もう一つはWindows Forms Applicationプロジェクト(私は " PrjForm "と呼びます)です。 PrjFormによって参照される3番目のプロジェクトもあります。これは参照して使用することができます。

PrjForm references PrjTest 、および PrjForm には、usingステートメントを持つクラスがあります。

using PrjTest;
  1. 参照が正しく追加されました
  2. usingステートメントが正しく配置されている
  3. つづりが正しい
  4. PrjTestは正常にビルドされました
  5. PrjFormはほとんどビルドされますが、エラーでusing PrjTest;行で中断します。

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

私はこれを解決するために次のことを試みました:

  1. Resharperを削除しました(Resharperは参照されたプロジェクトを認識するのに問題がなかったので、私はそれが一撃の価値があるかもしれないと思いました)
  2. 参照とusingステートメントを削除して再追加しました
  3. PrjFormを最初から再作成
  4. PrjFormは現在PrjTestフォルダの中にあります、私はそれを外部のフォルダに移動してみました
  5. VS 2010の新しいコピーを別のコンピューターにソリューションをロードしました

私は宿題をやり、オンラインで答えを探すのにあまりにも長い時間を費やしました、解決策のどれもまだ助けになっていません。

他に何を試すことができますか?

433
Anders

この質問 を参照してください。

これはクライアントのプロファイリングの問題です。

PrjFormが ".Net Framework 4 Client Profile"に設定されました私はそれを ".Net Framework 4"に変更しました、そして今私は成功したビルドを持っています。

みんな、ありがとう!オンライン検索に費やした数分後に、投稿後数分で解決策が見つかると思いますが、トリックは正しい質問を知っていることになると思います。

686
Anders

私の場合は、

参照されたDLL:.NET 4.5

プロジェクト名:.NET 4.0

上記の不一致のため、4.0プロジェクトは4.5 .DLLの名前空間の内側を見ることができませんでした。 .NET 4.0をターゲットとするように.DLLを再コンパイルしましたが、問題ありませんでした。

46
DeepSpace101

PrjFormが ".Net Framework 4 Client Profile"に設定されました私はそれを ".Net Framework 4"に変更しました、そして今私は成功したビルドを持っています。

これも私のために働いた。どうもありがとう。私はdotnetrdfからキットをダウンロードしたdotNet用のRDFの例を試していました。

NET4クライアントプロファイル:すべてのクライアントデスクトップアプリケーション(WindowsフォームおよびWPFアプリケーションを含む)のNET4クライアントプロファイルを常にターゲットにします。

NET4フルフレームワーク:ターゲット NET4フル あなたのアプリが必要とする機能やアセンブリがクライアントプロファイルに含まれていない場合のみ。これには以下が含まれます。サーバーアプリケーションを構築している場合、次のように。

  • ASP.Netアプリ
  • サーバーサイドのASMXベースのWebサービス

以下のような従来のクライアントシナリオを使用する場合は、次のようになります。o NET4では使用されなくなり、クライアントプロファイルには含まれていないSystem.Data.OracleClient.dllを使用します。

  • 従来のWindows Workflow Foundation 3.0または3.5(WF3.0、WF3.5)を使用する

開発者のシナリオをターゲットにしていてMSBuildなどのツールが必要な場合、またはSystem.Design.dllなどの設計アセンブリへのアクセスが必要な場合

39
Dee

このエラーを引き起こす可能性があるもう1つのことは、.NETの新しいバージョンでビルドされたNuGetパッケージを持っていることです。

元のエラー:

frmTestPlanSelector.cs(11,7): error CS0246: The type or namespace name 'DatabaseManager' 
could not be found (are you missing a using directive or an Assembly reference?) 

さらにログを見て、私はこれを見つけました:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3275: The primary reference "[redacted]\DatabaseManager\bin\Release\DatabaseManager.dll" could not be resolved because it has an indirect dependency on the Assembly "System.Data.SQLite, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".

解決策はNuGetパッケージを再インストールすることでした。

http://docs.nuget.org/docs/workflows/reinstalling-packages

30
Miebster

他のプロジェクトは.NET 4.5でコーディングされ、他のプロジェクトは4.0でコーディングされていたので、私は自分の問題を解決しました。

27
kurdapya

私はこの問題に出会いました。

プロジェクトBはプロジェクトAを参照しています.

プロジェクトAはA.dllとしてコンパイルされました(アセンブリ名= A)。

プロジェクトBはA.dll(アセンブリ名A)としてコンパイルされました。

Visual Studio 2010はこれを捕らえていませんでした。 Resharperは問題ありませんでしたが、コンパイルできませんでした。 WinFormsデザイナは、不適当なプラットフォームターゲットが原因である可能性が高いという誤ったエラーメッセージを出しました。

解決策は、苦しい一日の後、アセンブリが同じ名前を持たないようにすることでした。

5

参照先のプロジェクトが.NET 4.0をターゲットにしている一方で、コンソールアプリケーションプロジェクトが.NET 4.0クライアントライブラリをターゲットにしている可能性もあります。

それはこの特定のケースに関連していなかったかもしれませんが、私は他の誰かがこの情報が役に立つと思うと思う。

4

Usingステートメントは、 project ではなく、 namespace を参照しています。

参照先プロジェクトに適切な名前空間があることを確認してください。

namespace PrjTest
{
     public class Foo
     {
          // etc...
     }
}

MSDNで名前空間の詳細を読んでください。

4
Mark Byers

私は同じ問題を抱えていました。ターゲットフレームワークは私にとっては問題ありませんでした。それでもまだうまくいきませんでした。 VS2010 SP1をインストールし、PrjTestで「再構築」を行いました。それからそれは私のために働き始めました。

3
saju

コンパイルされたDLLはパブリッククラスを持つべきです。

3
Peter

COM/ActiveX参照の場合、VS 2012はusingステートメントでこのエラーを表示します。それはあなたがusing文を見逃しているかもしれないと言っているので、これはかなり面白いです。

これを解決するには:隣のプロジェクトにある場合でも実際のCOM/ActiveX DLLを登録し、プロジェクトチャネルではなくCOMチャネルを介して参照を追加します。それは参照としてProjectNameの代わりにInterop.ProjectNameを追加し、これはこの奇妙なバグを解決します。

2

フレームワークを

 .NET Framework 4クライアントプロファイル

私のために仕事をしました。

2
Radix

プロジェクトのプロパティを確認します。参照パスは次のように空にします。

Project Properties

よろしく

1
Luis Rodriguez

そのような動作を引き起こす可能性がある他の問題はビルド構成です。

特定のフォルダーに合わせてビルドするように設定された2つのプロジェクトがありました。 DebugAny CPUのように、そして2番目にそれはDebugx86でした。

私はSolution->Context menu->Properties->Configuration properties->Configurationに行き、すべてのプロジェクトで同じ設定Debugx86を使用するように設定し、またBuildチェックマークをチェックしました。

その後、プロジェクトは正しく構築され始め、名前空間を見ることができました。

1
Mateusz

あなたのプロジェクト(PrjTest)がPrjTest名前空間内のパブリックタイプを公開していない場合は、そのエラーが発生します。

プロジェクト(PrjTest)には、 "PrjTest"名前空間に公開されているクラスまたはタイプが含まれていますか?

1
Reed Copsey

アプリケーションのターゲットフレームワークを ".Net Framework 4"に変更しました。

そしてエラーが消えました。

がんばろう; :D