web-dev-qa-db-ja.com

タグはXML名前空間に存在しません

このエラーはあちこちに投稿されているようですが、それぞれに独自の解決策があるようですが、どれも私の問題を解決しませんでした。

タグ 'ModelBindings'がXML名前空間 'clr-namespace:Company.Project.Module.Folder; Assembly = Company.Project.Module'に存在しないという、作成中(および後でマージ)のリソースディクショナリのエラーが発生します。

私が参照しているアセンブリはカスタムであり、ソリューション内に含まれています。それだけでなく、リソースディクショナリが存在するプロジェクトのビンに入れられたdllを調べ、検査後に参照したいクラスが含まれていることを確認しました。ですから、1。dllはアクセスするのに適切な場所にあり、参照にあります。 2. dllには必要なデータが含まれています。

以下は、リソースディクショナリのコードの一部です。

名前空間のリスト

xmlns:modulemodel="clr-namespace:Company.Project.Module.Folder;Assembly=Company.Project.Module"

参照するリソースを作成する

<modulemodel:ModelBindings x:Key="ModuleModelBindings"/>

他の人々のエラーのように、インテリセンスはそのコーシャを言う。また、xmlnsリストはインテリセンスのオートコンプリートで作成され、手動で再入力されました。どちらもうまくいきませんでした。

また、すべてをapp.xamlに移動しようとしても、同じエラーが発生しました。

ResourceDictionaryファイルの本文を削除すると、コードは正常にコンパイルされますが、すべてのバインディングが壊れます。

最後に、すべてのリソース定義は、それらが使用されたxamlファイル内で定義されていましたが、正常に機能しました。別のプロジェクトから作成してみたところ、機能しませんでした。エラーを修正するためにこれを変更し、古いメソッドに戻ると問題が発生する可能性があります。

編集:これは、使用しているリソースディクショナリを表示するという点で私ができる最善の方法です

<SharedResourceDictionary
    xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
    xmlns:modulemodel="clr-namespace:Company.Project.Module.Folder;Assembly=Company.Project.Module"
                    >
    <modulemodel:ModelBindings x:Key="ModuleModelBindings"/>

</SharedResourceDictionary>

sharedResourceDictionaryをResourceDictionaryに置き換えると、同じエラーが発生します。

app.xamlと上記のSharedResourceDictionaryは、名前空間Company.Project.Mainに比較的あり、SharedResourceDictionaryが定義されている場所と、上記のコードに挿入したさまざまなモジュールプロジェクトの両方への参照があります。

ソリューション

主にユーザーエラーのようです。しかし、これは他の人に起こる可能性があります。元のファイルからxmlns:moduleviewmodel定義をコピーしたとき、自分でAssembly =部分を追加する必要がありました。私が言ったように、私は両方とも自分でそれを行っただけでなく、 'xmlns:moduleviewmodel ='と入力して次のオートコンプリートを使用しています。エラーを検出する直前に、エラーを生成していない7つの名前空間の1つがあったため、オートコンプリートを再試行しました。そのとき私は、アセンブリパスに大文字で書かれていないはずの手紙があることに気づきました。奇妙なことに、オートコンプリートは実際にこのエラーを単独で挿入します。コンパイル中に、誤った手紙に気づきました。奇妙なことに、すべてのパスを手動で修正した後、オートコンプリートを再試行すると、スペルが正しくなりました。

エラーが発生したオートコンプリートの原因はわかりませんが、修正された文字では問題なくコンパイルされます。

さて、オートコンプリートが変更されたと誰もが信じているのでしょうか。

19
StephenT

主にユーザーエラーのようです。しかし、これは他の人に起こる可能性があります。元のファイルからxmlns:moduleviewmodel定義をコピーしたとき、自分でAssembly =部分を追加する必要がありました。私が言ったように、私は両方とも自分でそれを行っただけでなく、 'xmlns:moduleviewmodel ='と入力して次のオートコンプリートを使用しています。エラーを検出する直前に、エラーを生成していない7つの名前空間の1つがあったため、オートコンプリートを再試行しました。そのとき私は、アセンブリパスに大文字で書かれていないはずの手紙があることに気づきました。奇妙なことに、オートコンプリートは実際にこのエラーを単独で挿入します。コンパイル中に、誤った手紙に気づきました。奇妙なことに、すべてのパスを手動で修正した後、オートコンプリートを再試行すると、スペルが正しくなりました。

エラーが発生したオートコンプリートの原因はわかりませんが、修正された文字では問題なくコンパイルされます。

さて、オートコンプリートが変更されたと誰もが信じているのでしょうか。

14
StephenT

この記事 によると、あなたは次のようにします:

から:

xmlns:ZZZ = "clr-namespace:YYY; Assembly = YYY"

に:

xmlns:ZZZ = "clr-namespace:YYY; Assembly ="

assembly =の値は空のままにします

これは私のために働く解決策です。

29
jgong

これは問題の解決策ではない可能性がありますが、よく尋ねられるエラーが表示されます。この問題は通常、アセンブリーのロードの問題が原因で発生します。

あなたがあなたのアセンブルをチェックし、それに黄色い三角形が付いている場合、それはおそらく。NETの異なるバージョンか何かの種類のため、現在のプロジェクト設定と互換性がない可能性があります。

これは通常、警告なしで失敗するか、警告のみが発生します。 XAMLでアセンブルを参照しようとすると、説明したようなエラーが発生します。

15
CodyF

私の場合、プロジェクトのターゲットフレームワークが4.5だったときに、未解決の.Net 4.5.1参照に関するメッセージがあるエラーリストの警告を確認してください

2
Gunman7840

WPFフォームと同じアセンブリにユーザーコントロールがある場合は、名前空間をインポートするときに必ずアセンブリパーツを削除してください

間違ったインポート:xmlns:usercontrol = "clr-namespace:CCFARKS.UserControls; Assembly = CCFARKS"

Corret:xmlns:usercontrol = "clr-namespace:CCFARKS.UserControls"

1
Rahul Lore

私はこのエラーのまったく異なる理由がありました:

アセンブリAのクラスを使用しようとしていたので、

1)このアセンブリへの参照をプロジェクトに追加しました、

2)アセンブリAが使用するアセンブリBへの参照を私のプロジェクトに追加しました。

3)XAMLに追加

 xmlns:assemblyA="clr-namespace:A;Assembly=A"

3)私のコードに追加

using A;

これは機能しませんでした。「タグが存在しません」というエラーが発生しました。

助けになったこと、追加したこと

using B;

私のコードでは、アセンブリBから直接何も使用していませんが。

1
Flot2011

古い質問ですが、問題は.csprojにあります。 「itemgroup」セクションの「compile」要素の前に「page」要素が定義されていることを確認してください。

良い :

  <ItemGroup>
...
<Page Include="ScreenComponents\StatusBar.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>
<Compile Include="ScreenComponents\StatusBar.xaml.cs">
  <DependentUpon>StatusBar.xaml</DependentUpon>
</Compile>
…

良くない :

  <ItemGroup>
...
<Compile Include="ScreenComponents\StatusBar.xaml.cs">
  <DependentUpon>StatusBar.xaml</DependentUpon>
</Compile>
<Page Include="ScreenComponents\StatusBar.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>
…

よろしく、

0
Guillaume