2011-06-21 26 views
2

我有以下解决方案结构: 项目A 项目B(WCF) 项目C(单元测试)如何处理'File1.cs'中的'Foo'类型与'File2.dll'中的导入类型'Foo'冲突警告

我生成项目B的代理,那么代理包含在项目A和项目C. 项目C编译时,我得到了一千也引用了项目A. 结果,类型警告:

'File1.cs'中的'Foo'类型与impor冲突在'File2.dll'中键入'Foo'。

这个问题的最佳解决方案是什么?我尝试过使用#PRAGMA IGNORE,但在这种情况下找不到警告编号。

谢谢!

回答

2

最好的情况是使用不同的命名空间。

所以项目A

namespace Project.Library 

项目B

namespace Project.Service 

项目C

namespace Project.Test 

然后,你可以在冲突课堂上使用的别名。

例如,说Project.Library.User和Project.Service.User都存在。

您要访问您服务您的图书馆的用户类别,你可以这样做:

using Library = Project.Library; 

namespace Project.Service 
{ 
    public class User 
    { 
      public int GetUserId() 
      { 
       Library.User myLibUser = new Library.User(); 
       return myLibUser.Id; 
      } 
    } 
} 
1

当你访问你的类型,完全限定它(通过调用它通过命名空间(S)的.class所以不能有歧义

例如:

  • MyNamespace.Foo
  • YourNamespace.Foo

所以,你有相同的类名,但在不同的命名空间。

如果您在任何可能的情况下使用与导入的东西相同的名称空间(这不太可能),那么您或外部代码提供者将不得不更改名称空间。

1

我有同样的问题。我正在使用VS 2010 Pro。我忽略了大约10个小时;不仅包括错误,还包括编译时的错误。然后,BAM!

我所做的只是导航到Build选项卡并单击清理解决方案。
问题解决。当然,你没有在你的使用陈述中放置任何不需要处理的东西。从解决方案

0

删除引用已编译的文件\参考:)

0

在类属性,从内容变化生成操作编译

0

当你知道你在做什么,你可以抑制与警告Pragma 。

我通过开始构建找到了错误代码,然后查看输出窗口。 确保您在下拉列表中选择了“建立”。

相关问题