我正在尝试在项目程序集中引入强签名。
我的项目输出以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"
答案 0 :(得分:2)
如果您要序列化为xml,为什么还有类型信息? xml的目标之一是从序列化中删除类型元数据。这是一个数组还是什么?可能有更好的方法来序列化这些数据。
装配重定向不是,AFAIK,使用基于字符串的反射;如果限定名称不匹配,则不匹配。最后一个示例未指定签名详细信息,这允许它接受任何。
就个人而言,我试图解决在xml中输入类型信息的问题 - 这可能是一场更容易,更合适的战斗。