I는 다음과 같이 동적으로 XAML에서 읽는 응용 프로그램을 파일있어 :XAML 파일에서 어셈블리를 추가하면 오류가 발생하는 이유는 무엇입니까?
에로드되는 그 XAML 파일 중 하나에서StreamReader sr = new StreamReader(pathAndFileName);
this.Content = XamlReader.Load(sr.BaseStream);
(그들은 모두 뒤에 제거 자신의 코드를 가지고있다),이 작품 :
<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'"에 존재하지 않습니다. 내가 어셈블리 참조를 생략하면 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;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"
을 가져옵니다.
여기에 어셈블리 참조를 포함 할 수없는 이유는 무엇입니까?이 기능을 사용하려면 무엇을 변경/확인해야합니까?
다른 방법이 있습니까? 나는이 어셈블리 참조에서 작동하는 GAC에 배포되지 않은 다른 유사한 응용 프로그램을 가지고 있습니다. 어떻게 다른 방법이있을 수 있습니까? –
어셈블리를 GAC에 넣을 필요가 없다고 생각합니다. AppDomain에 어셈블리를로드하면 작동 할 것입니다. –
@ 토마스 - 사실, 의도적으로 "한 가지 방법"으로 시도하여 이것이 유일한 방법이라는 인상을주지 마십시오. @Edward - 모델이 이미 앱 도메인에로드 된 경우 GAC에서 모델을 가져올 필요가 없습니다. XAML을로드하기 전에 참조 된 어셈블리를로드해야합니다. –