Почему при добавлении сборки в файл 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>
Но это выдает ошибку " Тег 'FieldEmailView' не существует в пространстве имен XML 'clr-namespace: DynamicXaml123; Assembly = DynamicXaml123' " ;. Р>
<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.
Почему я не могу включить сюда ссылку на сборку, что мне нужно изменить / проверить, чтобы это работало?
Решение
Когда вы загружаете это, вам нужно разрешить ссылки на сборки. Другими словами, эта сборка должна быть доступна приложению для ссылки - один из способов сделать это - развернуть DynamicXaml123 в GAC.
Другие советы
Я бы предложил выйти монитор процесса и посмотреть, где ваше приложение ищет dynamicxaml123. Проверьте также журнал слияния . Я предполагаю, что поведение в XamlSerializer будет другим, если вы включите пространство имен, чем когда вы этого не сделаете, и это изменение влияет на то, где среда выполнения ищет вашу сборку. Р>
Обратите внимание, что может быть некоторая задержка между настройкой fuslogvw и тем, когда он действительно начинает регистрироваться.