我使用此功能在xml文件中序列化对象的集合。
public void SerializeEnvironment()
{
if (xs == null) xs = new XmlSerializer(typeof(IList<Classes.Environment>));
using (StreamWriter wr = new StreamWriter(ConfigFilePath))
xs.Serialize(wr, Environments);
}
该程序可以在我的开发机器上完美运行。但是当我在其他计算机上进行部署时,该程序在序列化方法上失败,并显示以下错误:
System.InvalidCastException:
[A] System.Collections.Generic.List
1[Product] cannot be cast to [B]System.Collections.Generic.List
1 [产品]。类型A源自'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'
在位置'C:\ Windows \ Microsoft.Net \ assembly \ GAC_32 \ mscorlib \ v4.0_4.0.0.0__b77a5c561934e089 \ mscorlib.dll'的上下文中的“ LoadNoth”中。
类型B源自'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'
在位置'C:\ Windows \ Microsoft.Net \ assembly \ GAC_32 \ mscorlib \ v4.0_4.0.0.0__b77a5c561934e089 \ mscorlib.dll'的上下文中的“ LoadNoth”中。
在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterList1.Write3_ArrayOfEnvironment(对象o)
我测试了许多要解决的问题,但没有成功。
在此先感谢您的任何建议或解决方案:)
另外,这里是我的对象类:
[Serializable]
public class Environment
{
public string name { get; set; }
public string value { get; set; }
public Environment(){}
public Environment(string Name, string Value)
{
name = Name;
value = Value;
}
}
最佳答案
大胆猜测,但是您的开发机器是64位吗?如果是这样,请尝试为x86编译项目。您可以通过在解决方案资源管理器中右键单击项目并转到“属性”来执行此操作。单击“构建”选项卡,然后将“平台目标”选项从“任何CPU” /“ x64”更改为“ x86”。构建您的解决方案,然后重新部署以重试。