在MonoDevelop(MonoTouch)的单元测试中使用System.Xml时出现问题

在MonoDevelop(MonoTouch)的单元测试中使用System.Xml时出现问题,mono,nunit,xamarin.ios,monodevelop,Mono,Nunit,Xamarin.ios,Monodevelop,当我有一个需要System.Xml或System.Xml.Linq命名空间的单元测试时,我在运行测试时会出现以下错误: System.IO.FileNotFoundException:无法 不加载文件或程序集 'System.Xml.Linq,版本=2.0.5.0, 文化=中立, PublicKeyToken=31bf3856ad364e35'或 它的一个依赖项 我已经证实的事情: 我在考试中有正确的用法 该项目的构建没有任何问题 在emulator中运行应用程序时,使用这些名称空间可以很好地

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

System.IO.FileNotFoundException:无法 不加载文件或程序集 'System.Xml.Linq,版本=2.0.5.0, 文化=中立, PublicKeyToken=31bf3856ad364e35'或 它的一个依赖项

我已经证实的事情:

  • 我在考试中有正确的用法
  • 该项目的构建没有任何问题
  • 在emulator中运行应用程序时,使用这些名称空间可以很好地工作
  • 我写了一个非常简单的单元测试来证明单元测试是有效的(它确实有效)
我是一个测试驱动型的人,所以我迫不及待地想让它工作起来,这样我就可以继续我的应用程序了


提前感谢。

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

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

可以在/Developer/MonoTouch/usr/lib/mono/

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

/开发者/MonoTouch/user/lib/mono/2.1/System.Xml.dll


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

我添加引用的方式与我在非测试项目中添加引用的方式相同。你是说这些组件是不同的,是NUnit项目所必需的吗?今晚我要试试这个……就是这样!谢谢你,卢克。看来MonoDevelop会为我妥善处理这件事。我想我只是需要更好地理解Mono和MonoTouch之间的区别。