我有以下解决方案结构: 项目A. 项目B(WCF) 项目C(单元测试)
我从项目B生成代理。然后代理包含在项目A和项目C中。 项目C还引用了项目A. 因此,在编译时我得到了超过一千种类型的警告:
'File1.cs'中的类型'Foo'与'File2.dll'中导入的类型'Foo'冲突。
这个问题的最佳解决方案是什么?我尝试使用#PRAGMA IGNORE,但在这种情况下我找不到警告号。
谢谢!
答案 0 :(得分:2)
最好的情况是使用不同的命名空间。
所以ProjectA
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 :(得分:1)
当你访问你的类型时,完全限定它(通过名称空间(。).class调用它,这样就不会有歧义。
例如:
所以你有相同的类名,但在不同的名称空间下。
如果您使用与导入的东西相同的名称空间(这不太可能),那么您或外部代码提供者将不得不更改名称空间。
答案 2 :(得分:1)
我遇到了同样的问题。我正在使用VS 2010专业版。我忽略了大约10个小时;不只是错误,而是在编译时的错误。然后,BAM!
我所做的只是导航到Build
标签,然后点击清洁解决方案
问题解决了。请确保,您不会在您的使用陈述中处理任何不需要处理的内容。
答案 3 :(得分:0)
从Solution \ References中删除对已编译文件的引用:)
答案 4 :(得分:0)
在“类属性”中,将“构建操作从内容更改为编译”
答案 5 :(得分:0)
当您知道自己在做什么时,可以使用Pragma 0246 来抑制警告。
我通过启动构建找到了错误代码,然后查看输出窗口。 确保在下拉列表中选择了“构建”。