我使用此函数在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}} 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'的上下文'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)
我测试很多东西要解决但没有成功。 提前感谢任何建议或决议:)
另外,这里是我的对象类:
1[Product] cannot be cast to
[B]System.Collections.Generic.List
答案 0 :(得分:2)
答案 1 :(得分:1)
尝试在solution explorer
中选择您引用的所有内容,并将Copy local
窗口中的Properties
属性设置为true
,这样它们就会被复制到带有可执行文件或dll文件的目录中编译后。如果目标计算机上没有必要的库,它应该会有所帮助。
答案 2 :(得分:0)
我相信您的测试机器没有使用与您的版本相同的.net版本。如果您测试的机器没有.net 4.0安装它...如果测试机器运行的是Windows XP而您的版本是.net 4.5,则需要将程序降级到.net 4.0。