2012-02-05 10 views
13

私は、TextBoxにプロパティをバインドできるようにInt32からStringに変換するコンバータを実装しました。タグ 'XXX'はXML名前空間 'clr-namespace:YYY'に存在しません

MyApp.Convertersという名前空間にこのコンバータを実装し、Int32ToStringConverterと呼びます。

その後、私のAXMLに、私は次のように私のコンバーターへの参照を追加します。

<Window x:Class="MusicaDB.Views.PrincipalView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:i="namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
     **xmlns:converter="clr-namesapce:MyApp.Converters, aseembly=MyApp**"> 

その後、windows.Resourcesに私が持っている:

<Window.Resources> 
     <**converter:Int32ToStringConverter** x:Key="Int32ToStringConverter" /> 
</Window.Resources> 

私はエラーを取得し、そのタグのInt32ToStringコンバータが名前空間MyApp.Converters、assembly = MyAppに存在しません。

プロジェクトのプロパティでローカルハードドライブにプロジェクトがあり、.NETのフレームワークが4.0で、フレームワーク4.0のクライアントプロファイルではありません。ソリューションをクリアして再コンパイルしようとしても問題は解決しません。

これは主に私が見つける2つの解決策ですが、私の問題は解決しません。

答えて

24

三つの修正はここに作る:

  1. ありませんスペース - >xmlns:converter="clr-namesapce:MyApp.Converters,aseembly=MyApp"
  2. ませんスペルミス - >xmlns:converter="clr-namespace:MyApp.Converters,assembly=MyApp"
  3. 右区切り文字 - >xmlns:converter="clr-namespace:MyApp.Converters;assembly=MyApp"

どのようなものを使用する前にthe referenceを読んについて?その値からアセンブリトークンを分離文字があるのに対し、その値からCLR名前空間トークンを分離文字がコロンであること

注(:)等号(=)。これら2つのトークンの間に使用する文字はセミコロンです。また、宣言のどこにも空白を入れないでください。

+0

参照リンクがなくなった! –

+2

@WaldoAlvarez:「これはもう利用できません」と表示されている場合は、MSDNが単に愚かなデフォルトを使用しているだけで、「その他のバージョン」のドロップダウンから以前のバージョンを選択してください。 –

+0

ahh okありがとう、より良い直接リンクhttps://msdn.microsoft.com/en-us/library/ms747086(v=vs.100)を提供します。aspx –

3

2つの原因が考えられます。 1つは、最初の星印のラインで「アセンブリ」のスペルミスが「アセンブル」として間違っていることです。スペルを変更するだけでも十分でしょう。第二の可能性は、Visual Studioでこの

enter image description here

のように見えるあなたのプロジェクトの参照にMyApp.dllを追加していないということです。

11

私はこれがなぜ起こっているのかを調べていますが、コンバーターがメインアセンブリにある場合、xmlns:convertersタグからassembly =を削除するとビルドエラーが削除されるはずです。

2

私の状況では、xmlns:local="clr-namespace:<mydefaultnamespace>"と同じ問題がありました。 これをインクルードする順序を変更して解決しました。私はそれを最初に入れ、すべてが解決されました。 奇妙な動作ですが、これは自分の状況で見つけた解決策でした。

3

... 私は同様の問題に直面しましたが、XAMLから "; assembly = X"部分を削除した場合、正常に動作しました。

しかし理由は分かりません。

このブログで示唆したように:私の場合は http://zoomicon.wordpress.com/2012/07/02/fix-the-tag-xxx-does-not-exist-in-xml-namespace-clr-namespaceyyy/#comment-7761

+0

明らかに、同じアセンブリ内にある場合は入れないでください。そうでなければ、それを入れてください。 – BrainSlugs83

0

、名前空間が含まれていアセンブリが物理的にありませんでした。

ビルドエラーのあるアセンブリの参照を確認し、問題の参照アセンブリのプロパティを調べました。

パスに移動してアセンブリが実際に見つからなかったことがわかりました(は私自身がを実行していることを認識していました)、誤解を招くエラーが発生します。

18

この問題のもう1つの解決策は、プロジェクトとライブラリで同じバージョンの.Netを使用しないことです。

+0

これは非常に役に立ちます。私は構文が正しいのですが、私が参照していた新しいアセンブリのフレームワークバージョンを設定するのを忘れました。ありがとう。 –

+1

あなたは命を救っています。 – MetalMikester

+0

これについてもっと詳しく説明できますか? More details –

3

すべての回答が正しいです。そして、それらのすべてを試した後に、なぜそれが起こったのかを構成することはできません。すべてが正しければ、Visual Studioを再起動してください。

これは、ほぼ1時間無駄にしてから私のために働いた。私はすべてOKを見つけましたが、管理でVSを再起動しました。

+0

私は文字通り約3時間のように何が起こっていたのか把握しようとしていました!!あなたの提案はVSを再起動するトリックでした! –

0

他のプロジェクトにある場合のみ、アセンブルタグを使用します。 他の賢明なものは名前空間タグだけを使用します。 私にとってこれは問題を修正しました

1

Microsoft.mshtml.dllを使用していてWindows 10周年記念版にアップグレードした場合、またはクリエイター版でも判明している場合は、このエラーが発生すると非常に不明瞭なケースが1つあります。

このようなことが起こらない場合でも、見つからないコンポーネントを含むライブラリを完全にコンパイルできることを確認してください。エラーリスト(グリッドではなく出力コンソール)で手がかりを探します。

私の場合、私はMicrosoft.mshtml.dllをHTMLエディタの一部として使用していましたが、何とか(GAC内で)登録抹消されました。

次の資料は、スクリーンショットと説明しています。私は、これらのコマンドを実行します(管理者など)のVisual Studioコマンドプロンプトを実行する必要がありました要するに

https://techninotes.blogspot.com/2016/08/fixing-cannot-find-wrapper-assembly-for.html#comment-form

cd C:\Windows\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a 
regasm Microsoft.mshtml.dll 

私はあいまい言いました:-)重要なポイントは、重要なヒントがある可能性があるため、すべての警告の中に埋もれているかもしれないエラーを読むことです。

これは、オペレーティングシステムのアップデートによって突然プロジェクトが中断された場合、特に混乱する可能性があります。

関連する問題