程序集重定向未按预期工作

时间:2009-04-28 07:21:48

标签: .net app-config strongname

我正在尝试在项目程序集中引入强签名。

我的项目输出以XML格式保存,并且在签名之前提到了一种类型:

typestr="XYZ.PQR, MyWidget, Version=1.0.2406.20198, Culture=neutral, PublicKeyToken=null"

所有程序集都使用带有令牌的公钥进行签名,622edca63ee1770c。我已经介绍了< assemblyBinding>阻止我的app.config文件,如下所示:

 <assemblyBinding>
  <dependentAssembly>
    <assemblyIdentity name="MyWidget" publicKeyToken="622edca63ee1770c" culture="neutral"/>
    <bindingRedirect oldVersion="1.0.2406.20198" newVersion="0.1.27.10695"/>
  </dependentAssembly>
 </assemblyBinding>

我仍然收到错误:

  

无法加载文件或程序集'EPGWidget,Version = 1.0.2406.20198,Culture = neutral,PublicKeyToken = 622edca63ee1770c'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

当代码如:

Type type = Type.GetType(typestr);

执行以下操作。但是,它适用于:

typestr="XYZ.PQR, MyWidget"

1 个答案:

答案 0 :(得分:2)

如果您要序列化为xml,为什么还有类型信息? xml的目标之一是从序列化中删除类型元数据。这是一个数组还是什么?可能有更好的方法来序列化这些数据。

装配重定向不是,AFAIK,使用基于字符串的反射;如果限定名称不匹配,则不匹配。最后一个示例未指定签名详细信息,这允许它接受任何。

就个人而言,我试图解决在xml中输入类型信息的问题 - 这可能是一场更容易,更合适的战斗。