【问题标题】:List<Object> Serialization work on dev computer but failed on other computersList<Object> 序列化在开发计算机上工作,但在其他计算机上失败
【发布时间】:2013-02-05 17:06:06
【问题描述】:

我使用这个函数在 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.List1[Product] cannot be cast to [B]System.Collections.Generic.List1[产品]。 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”的上下文“LoadNeither”中。 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”的上下文“LoadNeither”中。 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterList1.Write3_ArrayOfEnvironment(Object 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;
    }
}

【问题讨论】:

  • 错误可以翻译成英文吗?
  • 我认为这只是意味着您尝试的计算机上没有 .net 4.0 程序集并且它失败了。因为它在 GAC 或任何地方都找不到程序集。
  • 另一台机器上安装了 .net 4.0 框架。我检查这一点
  • 错误已被翻译

标签: c# serialization deployment


【解决方案1】:

大胆猜测,但您的开发机器是 64 位的吗?如果是这样,请尝试为 x86 编译您的项目。您可以通过在解决方案资源管理器中右键单击您的项目并转到属性来执行此操作。单击 Build 选项卡并将 Platform Target 选项从“Any CPU”/“x64”更改为“x86”。构建您的解决方案并重新部署以重试。

【讨论】:

  • 我在 x86 上,就像其他电脑一样
  • @boulatin 平台目标设置为 Any CPU 还是 x86?
【解决方案2】:

尝试选择solution explorer中的所有引用并将它们在Properties窗口中的Copy local属性设置为true,这样编译后它们将被复制到带有可执行文件或dll文件的目录中。如果目标机器上没有必要的库,它应该会有所帮助。

【讨论】:

    【解决方案3】:

    我相信您的测试机器使用的 .net 版本与您的版本不同。如果您测试的机器没有安装 .net 4.0...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 2016-07-27
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      相关资源
      最近更新 更多