0

我正在为 Windows Phone 开发一个应用程序,并且还有一个用于创建和运行测试的测试项目。这工作正常,但突然我收到一个错误,无法找到参考 System.Runtime.Serialization。

具体错误是:

System.IO.FileNotFoundException:无法加载文件或程序集“System.Runtime.Serialization,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e”或其依赖项之一。

首先,不应该是4.0而不是2.0.5吗?

我试图添加对 System.Runtime.Serialization 4.0 版本的引用,但现在错误是这样的:

System.IO.FileLoadException:无法加载文件或程序集“System.Runtime.Serialization,Version=4.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。

我查看了所有项目以找到定义此引用(2.0.5)的位置,以便我可以更新它(不确定它是如何更改的)但没有运气。

如果这很重要,我正在使用 JSON.NET (5.0.6)

如果它应该是 2.0.5,有什么办法可以意外或自动将项目更改为 4.0?

这是以前工作的,所以有些东西改变了,这当然不是我故意做的......

编辑 在查看了上面的错误之后,我又查看了我的代码,看来罪魁祸首是我把这个属性放在我的一个属性上:

[JsonProperty(PropertyName="NameType")]

因为属性名称与 JSON 中的名称不同。它运行完美,但在测试期间失败。如果我将其注释掉,则测试通过(但应用程序无法获取此属性)。

EDIT2: 所以在我看来,问题在于 Windows Phone 有一个 Windows Phone JSON.NET 版本,而测试项目加载了标准的 .net40,但正在测试的 Windows Phone 程序集需要手机版本,所以它被搞砸了。 ..

或者其他的东西。我觉得我只是以某种方式搞砸了参考资料,但我不知道是什么。

我尝试将“复制本地”设置为真/假,并将 windows phone 的 JSON.NET 引用添加到测试项目,但它告诉我这是错误的版本......

如何告诉测试项目(不是 windows phone 项目)使用 windows phone 程序集进行测试?我是否必须创建一个 Windows Phone 类型的新测试项目?

在我添加了一个使用 System.Runtime.Serialization 库的属性之前,一切都运行良好……

4

1 回答 1

0

原来是我的代码有问题,这很奇怪,因为显然这不是我收到的错误消息......

无论如何,问题似乎是 JSON 属性是“NameType”,而我将“Type”与 JsonProperty(Name="NameType") 一起使用,我猜编译器不喜欢这样。

更改属性名称以匹配似乎已经解决了这个问题。

非常感谢大家的意见!

于 2013-09-04T16:11:37.000 回答