Почему при добавлении сборки в файл XAML выдается ошибка?

StackOverflow https://stackoverflow.com/questions/1432632

  •  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 и тем, когда он действительно начинает регистрироваться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top