XAMLファイルにアセンブリを追加するとエラーが発生するのはなぜですか?
-
07-07-2019 - |
質問
XAMLファイルを次のように動的に読み込むアプリケーションがあります:
StreamReader sr = new StreamReader(pathAndFileName);
this.Content = XamlReader.Load(sr.BaseStream);
ロードされるXAMLファイルのいずれか(すべてのコードビハインドが削除されている)で、これは機能します:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DynamicXaml123">
<StackPanel Margin="10" HorizontalAlignment="Left">
<TextBox Height="23" Width="100" Text="{Binding FirstName}" />
<TextBox Height="23" Width="100" Text="{Binding LastName}" />
<TextBox Height="23" Width="100" Text="{Binding Age}" />
<local:FieldEmailView></local:FieldEmailView>
</StackPanel>
</UserControl>
ただし、これによりエラーが発生します&quot;タグ 'FieldEmailView'はXML名前空間 'clr-namespace:DynamicXaml123; assembly = DynamicXaml123'&quot;に存在しません。
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DynamicXaml123;assembly=DynamicXaml123">
<StackPanel Margin="10" HorizontalAlignment="Left">
<TextBox Height="23" Width="100" Text="{Binding FirstName}" />
<TextBox Height="23" Width="100" Text="{Binding LastName}" />
<TextBox Height="23" Width="100" Text="{Binding Age}" />
<local:FieldEmailView></local:FieldEmailView>
</StackPanel>
</UserControl>
アセンブリ参照を省略すると、エラーが発生します
Message=""XmlNamespace", "Assembly" oder "ClrNamespace"
XAMLで読み取るとき。
アセンブリ参照をここに含めることができないのは、これを機能させるために何を変更/確認する必要があるのですか?
解決
これをロードするとき、アセンブリ参照を解決できる必要があります。言い換えると、このアセンブリは、アプリケーションが参照するために利用可能でなければなりません-これを行う1つの方法は、DynamicXaml123をGACにデプロイすることです。
他のヒント
プロセスモニターを入手して、アプリはdynamicxaml123を探しています。 fusion log も確認してください。名前空間を含める場合と含めない場合のXamlSerializerの動作は異なり、その変更がランタイムがアセンブリの周りを突っ回る場所に影響していると思います。
注、fuslogvwのセットアップと実際にログが開始されるまでに多少の遅延がある場合があります。
所属していません StackOverflow