Visual Studio 2012测试由于缺少引用,Windows Phone应用程序突然失败

时间:2013-09-01 00:41:55

标签: unit-testing serialization visual-studio-2012 assemblies

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

特别是错误是:

  

System.IO.FileNotFoundException:无法加载文件或程序集   ' System.Runtime.Serialization,Version = 2.0.5.0,Culture = neutral,   公钥= 7cec85d7bea7798e'或其中一个依赖。

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

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

  

System.IO.FileLoadException:无法加载文件或程序集   ' System.Runtime.Serialization,Version = 4.0.0.0,Culture = neutral,   公钥= 7cec85d7bea7798e'或其中一个依赖项。该   定位程序集的清单定义与程序集不匹配   参考

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

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

如果它应该是2.0.5,那么该项目是否可能被意外或自动更改为4.0?

这是以前的工作,所以SOMETHING改变了,而且我当然没有故意做过......

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

[JsonProperty(PropertyName="NameType")]

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

EDIT2: 所以在我看来问题是Windows Phone有一个Windows Phone JSON.NET版本,而测试项目加载标准的.net40,但正在测试的Windows手机组件需要手机版本,所以它已经全部破解向上...

或者其他什么。我觉得我只是搞砸了参考文献,但我无法弄清楚是什么。

我尝试设置"复制本地" to true / false,并将Windows Phone的JSON.NET参考添加到测试项目中,但它告诉我它的版本错误...

如何判断测试项目(不是Windows手机项目)使用Windows手机程序集进行测试?我是否必须制作一个Windows手机类型的新测试项目?

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

1 个答案:

答案 0 :(得分:0)

事实证明我的代码存在问题,这很奇怪,因为很明显这不是我得到的错误信息......

无论如何,问题似乎是JSON属性是“NameType”而我正在使用带有JsonProperty(Name =“NameType”)的“Type”,我猜编译器不喜欢它。

更改属性名称以匹配似乎已修复此问题。

非常感谢大家的投入!