【问题标题】:Visual Studio 2012 Tests Windows Phone App suddenly fail due to missing reference由于缺少参考,Visual Studio 2012 测试 Windows Phone 应用程序突然失败
【发布时间】:2013-09-01 00:41:54
【问题描述】:

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

具体错误是:

System.IO.FileNotFoundException:无法加载文件或程序集 'System.Runtime.Serialization,版本=2.0.5.0,文化=中性, PublicKeyToken=7cec85d7bea7798e' 或其依赖项之一。

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

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

System.IO.FileLoadException:无法加载文件或程序集 'System.Runtime.Serialization,版本=4.0.0.0,文化=中性, 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 程序集需要手机版本,所以它被搞砸了......

什么的。我觉得我只是以某种方式搞砸了引用,但我不知道是什么。

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

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

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

【问题讨论】:

  • 确保您的项目中引用了正确的 JSON.NET 程序集。我相信它应该是 v5.0.6 的运行时 v4.0.30319(JSON 程序集)。你是用 Nuget 还是手动安装的?
  • 我确实在 WP8 项目和测试项目上都使用 nuget 进行了安装,看来 winphone 项目使用的是不同的版本,所以我手动添加了引用以匹配 WP8 版本,但是现在我仍然收到后一个错误(程序集清单定义不匹配)......
  • 可能值得从 Nuget 安装,以确保问题与程序集版本无关。
  • 感谢您的意见,我用新发现更新了描述,有什么想法吗?

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


【解决方案1】:

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

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

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

非常感谢大家的意见!

【讨论】:

  • 当您引用框架之间不一致的属性、方法、事件等时,显然也会发生这种情况; vs 只是吓坏了并放弃了......我还没有找到解决这个问题的好方法
猜你喜欢
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 2014-06-02
  • 1970-01-01
相关资源
最近更新 更多