2

当我有一个需要 System.Xml 或 System.Xml.Linq 命名空间的单元测试时,我在运行测试时收到以下错误:

System.IO.FileNotFoundException:无法加载文件或程序集“System.Xml.Linq,版本=2.0.5.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。

我已经验证的事情:

  • 我在测试中有正确的用法。
  • 项目构建没有问题。
  • 当我在模拟器中运行应用程序时,使用这些命名空间可以正常工作。
  • 我编写了一个非常简单的单元测试来证明单元测试完全有效(而且确实有效)。

我是一个测试驱动型的人,所以我迫不及待地想让它工作,这样我就可以在我的应用程序上取得进展。

提前致谢。

4

2 回答 2

2

您需要添加 monotouch 在单元测试项目的引用中使用的相同 dll(程序集)。

这些位于 /Developer/MonoTouch/usr/lib/mono//...

例如,我需要使用 System.Xml,因此我编辑了我的测试项目的引用并添加了以下程序集:

/Developer/MonoTouch/user/lib/mono/2.1/System.Xml.dll

system.xml.linq 也有一个,这些是您需要的正确版本(2.0.5.0)

于 2010-04-06T20:57:08.833 回答
0

可能 Mono 没有在它看起来的地方找到所需的库。默认情况下,NUnit 会尝试将您的测试库复制到其他地方,因此它不会找到全局不可见的库(那些安装在 GAC 中的系统库)。不确定您是否可以在 Monodevelop 中设置 NUnit 选项不复制被测库以避免该问题。一种可能性是运行独立的 NUnit 控制台运行程序,您可以在其中设置选项或为 NUnit 提供更多信息以使其复制更多内容,但这很复杂,因为必须使 NUnit 使用正确的配置文件(基于 Silverlight 的 Monotouch)

于 2010-04-06T18:40:04.410 回答