web-dev-qa-db-ja.com

XAMLにアセンブリ参照が見つかりませんが、xaml.csクラスで参照されるとコードがコンパイルされます

Dll参照を追加するときに奇妙な問題が発生しました。 WPFアプリケーションがあり、WPFを使用しようとしていますMDIライブラリ: http://wpfmdi.codeplex.com/

手順(非常にあいまいです)に記載されているように、VS2012の参照を右クリックし、_Add reference.._をクリックし、_Browse.._をクリックして、ダウンロードしたdllを追加しました。

次に、ウィンドウのXAMLに次の行を追加しました:手順に記載されているように_xmlns:mdi="clr-namespace:WPF.MDI;Assembly=WPF.MDI"_。

ただし、XAMLに_<mdi:MdiContainer>_を追加しようとすると、次のエラーメッセージが表示されます。

_The type 'mdi:MdiContainer' was not found. Verify that you are not missing an Assembly reference and that all referenced assemblies have been built._

_The name "MdiContainer" does not exist in the namespace "clr-namespace:WPF.MDI;Assembly=WPF.MDI"._

これは私のXAMLです:

_<Window x:Class="QueryBuilder.Table"
        xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
        xmlns:mdi="clr-namespace:WPF.MDI;Assembly=WPF.MDI"
        Height="300" Width="300" WindowStyle="ToolWindow" ResizeMode="NoResize" ShowInTaskbar="False">
</Window>
_

この問題は一日中私を苛立たせてきました。私は想像できるほとんどすべてを試しました。注目に値するのは、ライブラリのサイトからサンプルアプリケーションをダウンロードしたので、問題なく実行できることです。これに加えて、これをプロジェクトのxaml.csクラスに追加しました:WPF.MDI.MdiContainer d = new WPF.MDI.MdiContainer();そしてそれはまったく問題なくコンパイルされます。

また、私の最初の問題は ここ と尋ねられ、どの提案も機能しなかったことにも注意してください。ただし、上記の段落は、コードがコードビハインドで正常にコンパイルされているが、XAMLファイルではコンパイルされていないことを示しているため、問題は変更されました。

EDIT:また、以下に示すように、アセンブリ参照のコードを参照できることを追加したいと思います。

enter image description here

17
Dot NET

私はついに自分で問題を解決しました-誰かが同じ問題を抱えている場合に備えて、この答えをここに残しておきます。ソリューション自体をアセンブリの参照パスに追加すると、問題が解決します。これが文書化されていないのは残念です...

EDIT:明確にするために、私が行ったのはdllではなくソリューションを追加することでした。つまり、すべてのクラスでMDIソリューションを追加しました。これは、ソースコードが利用可能なDLLにも当然当てはまります。

10
Dot NET

すべてを試した後もVisualStudioが文句を言ったり下線を引いたりする場合は、タスクマネージャーを使用してXDesProc.exeプロセスを終了し、ソリューションを再構築してください。 Visual StudioでのWPFとXAMLのサポートは、ひどいやり過ぎです。

8
Ondřej

http://wpfmdi.codeplex.com/。Buildからslnファイルを取得し、binから新しい.dllを使用し、それを使用すると、問題なく動作しました。

1
Rashmi S