我使用此功能在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”。构建您的解决方案,然后重新部署以重试。

10-04 13:59