我有以下 XAML 定义:
xmlns:controls="clr-namespace:MyControls;assembly=MyProduct.MyControls"
假设我的产品将 dll MyProduct.MyControls 加载了 2 次(2 个不同的版本)。例如版本 1.0 和版本 2.0。
有没有办法为 XAML 显式解析程序集“MyProduct.MyControls”?
我有以下 XAML 定义:
xmlns:controls="clr-namespace:MyControls;assembly=MyProduct.MyControls"
假设我的产品将 dll MyProduct.MyControls 加载了 2 次(2 个不同的版本)。例如版本 1.0 和版本 2.0。
有没有办法为 XAML 显式解析程序集“MyProduct.MyControls”?
根据 MSDN ( http://msdn.microsoft.com/en-us/library/ms747086.aspx#Mapping_To_Custom_Classes_and_Assemblies ),您可以使用AssemblyName语法指定程序集的全名:
xmlns:controls="clr-namespace:MyControls;assembly=MyProduct.MyControls, Version=1.0.0.0, Culture=en, PublicKeyToken=xyz"
那么根据这个你不会成功。
我刚刚得到确认,XAML 解析器会故意阻止您使用相同程序集的多个版本,这意味着如果旧版本的程序集已经存在,即使您的 XAML 文档正在尝试引用新版本,WPF 也会尝试使用该程序集.
通过阅读MSDN站点上的此链接,您似乎使用 AssemblyName 来加载程序集,因此您可能会使用 MyProduct.MyControlsV1 作为 AssemblyInfo.cs 中的名称来编译您的不同版本。
所以路径会变成
xmlns:controls="clr-namespace:MyControls;assembly=MyProduct.MyControlsV1"
xmlns:controls="clr-namespace:MyControls;assembly=MyProduct.MyControlsV2"