WPF:程序集解析器

时间:2013-03-15 13:34:52

标签: c# wpf xaml .net-assembly

我有以下XAML定义:

xmlns:controls="clr-namespace:MyControls;assembly=MyProduct.MyControls"

假设我的产品已经加载了2次dll MyProduct.MyControls(2个不同的版本)。例如版本1.0和版本2.0。

有没有办法显式解析XAML的程序集“MyProduct.MyControls”?

3 个答案:

答案 0 :(得分:2)

根据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"

答案 1 :(得分:0)

根据this,你不会成功。

  

我只是得到XAML解析器会故意阻止您使用多个版本的相同程序集的确认,这意味着如果旧版本的程序集已经存在,即使您的XAML文档试图引用,WPF也会尝试使用该程序集一个新版本。

答案 2 :(得分:-1)

通过阅读MSDN网站上的此链接, 看起来您使用AssemblyName来加载程序集,因此可能是您使用MyProduct.MyControlsV1编译不同版本的情况,例如AssemblyInfo.cs中的名称。

所以路径会变成

xmlns:controls="clr-namespace:MyControls;assembly=MyProduct.MyControlsV1"
xmlns:controls="clr-namespace:MyControls;assembly=MyProduct.MyControlsV2"