web-dev-qa-db-ja.com

タグ「xxx」がXML名前空間「yyy」に存在しません/参照が見つかりませんでした

WPFプロジェクトに追加したいWinformユーザーコントロールがあります。

関連する参照(WindowsFormsIntegration、SystemWindowsForms、およびユーザーコントロールdll)を追加し、XAMLに次の行を追加しました。

xmlns:MyControl="clr-namespace:xx.xx.xx;Assembly=xx.xx"

そしてこれ:

<WindowsFormsHost><MyControl:control></MyControl:control></WindowsFormsHost>

「MyControl:」と書くと、「コントロール」は自動表示されます。つまり、VSがコントロールを認識し、すべての参照が正常に追加されたことを意味しますが、プロジェクトをコンパイルすると、タイトルにエラーが表示されます。

編集

すべてのプロジェクトをコンパイルすると、「タイプまたは名前空間の名前「xx」が見つかりませんでした...」というエラーが表示されますが、すべての参照を追加すると、VSが名前空間を認識するので、コンパイラがそれらが見つかりませんか?この問題が解決されれば、他の問題もなくなると思います。

24
Maya

解決策は次のとおりです。プロジェクトのプロパティに移動し、Target FrameworkClient Profileから使用している.Netの完全バージョンに変更します。下の画像を参照してください。この問題は、DLLが完全な.NETFrameworkを対象とし、WPFアプリケーション(メインプロジェクト)が.Netクライアントプロファイルを対象としている場合に発生します。

Change Your Target Framework to the Full Version

42

これは、名前空間定義にアセンブリ名を含めたときに起こりましたが、両方のコントロールが同じアセンブリ内にありました。名前空間宣言のAssembly部分を削除するだけで、問題は解決しました。

21
Foole

Visual Studioは、反射のためにのみ参照をロードするため、正しいインテリセンスが正しく表示されます。ただし、コンパイルするには、コンパイラーは、参照されているdllが依存しているすべてのdllを必要とします。したがって、Visual Studioは、mycontrolを参照して見つけることができるため、インテリセンスを表示します。ただし、myontrolは、追加していない可能性のある他のdllを参照する場合があります。プロジェクトにmycontrolの依存参照も追加する必要があります。

14
Akash Kava

また、プロジェクト間でターゲットフレームワークが異なる可能性もあります。 WPFページを使用してクラスライブラリdllをホストし、「任意のCPU」を対象としましたが、ホストアプリケーションは「x86」を対象としました。それらが一致すると、問題はなくなりました。

5
thailandmatt

同じ "タイプまたは名前空間名 'xx'が見つかりませんでした..."の問題が発生しました。

Visual Studioファイルをローカルドライブに移動したの場合は表示されません。以前は共有ネットワークディレクトリに保存されていました。これの根本的な原因はわかりませんが、少なくとも今はデザイナーを実行させることができます。

1
Larry

以前にこの問題に遭遇したことがあり、<MyControl:control></MyControl:control><MyControl:control/>に置き換えるだけで解決しました。

理由はわかりません。最初の形式は、他のコントロールを含めることができるコントロール専用のようです。

0
Tom Savage