2010-12-17 40 views
1

我在Visual Studio 2008中遇到了一个问题,其中重新编译库项目时Visual Studio无法解析名称空间。问题在于Visual Studio不必要地扩展名称空间。例如,我有一个类似Visual Studio扩展名称空间以产生错误

... = (MyCompany.Dashboard.Data.BaseObjects.ZonesStruct) value; 

哪些在过去编译好的时候在重新编译时突然开始失败。 Visual Studio无法解决它并给出错误消息“名称空间'MyCompany.MyCompany.Dashboard'中不存在类型或名称空间名'Data'...”。启动这项功能的变化是向图书馆添加一个新类。失败的类是现有的和未触及的类。

我以前遇到过类似的事情,但那是UI设计者生产的代码,明确地被限定为“MyCompany.MyCompany ...”。我希望两种情况下的根本原因都是一样的。

不确定它是否有用,但库项目的默认名称空间是“MyCompany”。我试过修改,但我没有注意到任何改变。

感谢。

回答

3

改成这样

global::MyCompany.Dashboard.Data.BaseObjects.ZonesStruct

全球::逃脱的命名空间的所有出路根命名空间。这不是Visual Studio问题,它是一个冲突的命名空间问题。

+0

解决方法是有效的,但对任何解释为什么第一个限定符被重复?这只是无处不在,现在看起来好像我随机添加全球::限定符时,Visual Studio抱怨没有一个很好的理解为什么。我没有看到这种冲突是如何发生的,因为这在以前是有效的。 – doobop 2010-12-17 15:44:38

+2

如果存在称为MyCompany.MyCompany或类型MyCompany.MyCompany的名称空间,则会出现错误(但不是100%肯定),这会引入歧义并导致错误。当指定global ::时,告诉编译器,之后的第一个限定符必须是非内置的名称空间,编译器通过该信息解决含糊不清的问题。我建议检查命名空间或(不太可能)类型的错误名称,以避免需要重复指定global ::。 – JBSnorro 2010-12-18 01:48:02

+0

是的,不知何故,我的课是用“MyCompany.MyCompany”命名空间生成的。纠正这个问题。谢谢。 – doobop 2010-12-18 22:34:45

2

这并没有解决问题,只是症状。但你可以尝试确保您拥有的命名空间是在全球范围内通过在global关键字使用

... = (global::MyCompany.Dashboard.Data.BaseObjects.ZoneStruct) value; 

查看MSDN了解更多信息入手:http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx

相关问题