我正在为 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 库的属性之前,一切都运行良好……