C#
にいくつかのプロジェクトがあるVisual Studio 2010
ソリューションがあります。一つはテストプロジェクト(私はそれを " PrjTest "と呼びます)、もう一つはWindows Forms Application
プロジェクト(私は " PrjForm "と呼びます)です。 PrjFormによって参照される3番目のプロジェクトもあります。これは参照して使用することができます。
PrjForm references PrjTest 、および PrjForm には、using
ステートメントを持つクラスがあります。
using PrjTest;
using
ステートメントが正しく配置されているusing PrjTest;
行で中断します。型または名前空間名 'PrjTest'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
私はこれを解決するために次のことを試みました:
VS 2010
の新しいコピーを別のコンピューターにソリューションをロードしました私は宿題をやり、オンラインで答えを探すのにあまりにも長い時間を費やしました、解決策のどれもまだ助けになっていません。
他に何を試すことができますか?
この質問 を参照してください。
これはクライアントのプロファイリングの問題です。
PrjFormが ".Net Framework 4 Client Profile"に設定されました私はそれを ".Net Framework 4"に変更しました、そして今私は成功したビルドを持っています。
みんな、ありがとう!オンライン検索に費やした数分後に、投稿後数分で解決策が見つかると思いますが、トリックは正しい質問を知っていることになると思います。
私の場合は、
参照されたDLL:.NET 4.5
プロジェクト名:.NET 4.0
上記の不一致のため、4.0プロジェクトは4.5 .DLLの名前空間の内側を見ることができませんでした。 .NET 4.0をターゲットとするように.DLLを再コンパイルしましたが、問題ありませんでした。
PrjFormが ".Net Framework 4 Client Profile"に設定されました私はそれを ".Net Framework 4"に変更しました、そして今私は成功したビルドを持っています。
これも私のために働いた。どうもありがとう。私はdotnetrdfからキットをダウンロードしたdotNet用のRDFの例を試していました。
NET4クライアントプロファイル:すべてのクライアントデスクトップアプリケーション(WindowsフォームおよびWPFアプリケーションを含む)のNET4クライアントプロファイルを常にターゲットにします。
NET4フルフレームワーク:ターゲット NET4フル あなたのアプリが必要とする機能やアセンブリがクライアントプロファイルに含まれていない場合のみ。これには以下が含まれます。サーバーアプリケーションを構築している場合、次のように。
以下のような従来のクライアントシナリオを使用する場合は、次のようになります。o NET4では使用されなくなり、クライアントプロファイルには含まれていないSystem.Data.OracleClient.dllを使用します。
開発者のシナリオをターゲットにしていてMSBuildなどのツールが必要な場合、またはSystem.Design.dllなどの設計アセンブリへのアクセスが必要な場合
このエラーを引き起こす可能性があるもう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パッケージを再インストールすることでした。
他のプロジェクトは.NET 4.5でコーディングされ、他のプロジェクトは4.0でコーディングされていたので、私は自分の問題を解決しました。
私はこの問題に出会いました。
プロジェクトBはプロジェクトAを参照しています.
プロジェクトAはA.dllとしてコンパイルされました(アセンブリ名= A)。
プロジェクトBはA.dll(アセンブリ名A)としてコンパイルされました。
Visual Studio 2010はこれを捕らえていませんでした。 Resharperは問題ありませんでしたが、コンパイルできませんでした。 WinFormsデザイナは、不適当なプラットフォームターゲットが原因である可能性が高いという誤ったエラーメッセージを出しました。
解決策は、苦しい一日の後、アセンブリが同じ名前を持たないようにすることでした。
参照先のプロジェクトが.NET 4.0をターゲットにしている一方で、コンソールアプリケーションプロジェクトが.NET 4.0クライアントライブラリをターゲットにしている可能性もあります。
それはこの特定のケースに関連していなかったかもしれませんが、私は他の誰かがこの情報が役に立つと思うと思う。
Usingステートメントは、 project ではなく、 namespace を参照しています。
参照先プロジェクトに適切な名前空間があることを確認してください。
namespace PrjTest
{
public class Foo
{
// etc...
}
}
MSDNで名前空間の詳細を読んでください。
私は同じ問題を抱えていました。ターゲットフレームワークは私にとっては問題ありませんでした。それでもまだうまくいきませんでした。 VS2010 SP1をインストールし、PrjTestで「再構築」を行いました。それからそれは私のために働き始めました。
コンパイルされたDLLはパブリッククラスを持つべきです。
COM/ActiveX参照の場合、VS 2012はusingステートメントでこのエラーを表示します。それはあなたがusing文を見逃しているかもしれないと言っているので、これはかなり面白いです。
これを解決するには:隣のプロジェクトにある場合でも実際のCOM/ActiveX DLLを登録し、プロジェクトチャネルではなくCOMチャネルを介して参照を追加します。それは参照としてProjectNameの代わりにInterop.ProjectNameを追加し、これはこの奇妙なバグを解決します。
フレームワークを
.NET Framework 4クライアントプロファイル
私のために仕事をしました。
プロジェクトのプロパティを確認します。参照パスは次のように空にします。
よろしく
そのような動作を引き起こす可能性がある他の問題はビルド構成です。
特定のフォルダーに合わせてビルドするように設定された2つのプロジェクトがありました。 Debug
とAny CPU
のように、そして2番目にそれはDebug
とx86
でした。
私はSolution->Context menu->Properties->Configuration properties->Configuration
に行き、すべてのプロジェクトで同じ設定Debug
とx86
を使用するように設定し、またBuild
チェックマークをチェックしました。
その後、プロジェクトは正しく構築され始め、名前空間を見ることができました。
あなたのプロジェクト(PrjTest)がPrjTest
名前空間内のパブリックタイプを公開していない場合は、そのエラーが発生します。
プロジェクト(PrjTest)には、 "PrjTest"名前空間に公開されているクラスまたはタイプが含まれていますか?
アプリケーションのターゲットフレームワークを ".Net Framework 4"に変更しました。
そしてエラーが消えました。
がんばろう; :D