我在Visual Studio中设置了三个项目:
-名为“ MyProject.Droid”的Xamarin Android项目
-名为“ MyProject.Shared”的共享项目
-名为“ UnitTestProject”的单元测试项目
现在,“ MyProject.Shared”包含在“ MyProject.Droid”中使用的模型。一个示例是“ Customer.cs”类,该类仅包含与客户关联的一些简单属性。 “ MyProject.Droid”可以引用和使用这些类。当我尝试在“ UnitTestProject”中使用这些相同的模型时,就会出现问题:
我创建了一个“客户”类的实例,该实例可以工作,但是警告说“ MyProject.Shared”中的“ Customer”类与从“ MyProject.Droid”导入的一个类存在冲突。 (请注意,“ MyProject.Droid”中实际上没有定义“ Customer”类。)它告诉我已决定使用“ MyProject.Shared”中的类型。即使我在声明中专门指定了名称空间,也无法更改此结果或避免出现此警告。
现在仍在“ UnitTestProject”中,并在“ MyProject.Droid”中调用服务的构造函数,该服务采用了我刚刚定义为参数的“ Customer”对象,我得到以下错误:
Cannot convert from
'MyProject.Shared.Customer" [UnitTestProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]'
to
'MyProject.Shared.Customer" [MyProject.Droid, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]'
我已经了解到,此问题似乎是由共享项目的性质引起的,因为它们不会生成自己的程序集,而是被合并到引用自身的项目中,这就是为什么存在共享版本的原因。该类似乎源自“ MyProject.Droid”,而另一个源自“ UnitTestProject”。但是,这只会导致我找到删除Shared项目并将所有模型移至“ MyProject.Droid”的解决方案,这是我要避免的做法。因此,我来了这里,是否可以在不删除Shared项目的情况下避免“ UnitTestProject”中的此错误?