Visual Studio在非全局别名中显示类型错误CS0029

时间:2013-05-01 17:04:48

标签: c# visual-studio visual-studio-2012

我正在编写一个包含两个不同版本的通信库的包装器,它可以与我公司数据库的不同版本一起使用。这些通信库具有相同的完全限定名称的类,因此我将引用加载到不同的别名中;我已经在全局别名中使用了一个或另一个在非全局别名中尝试过,在这两种情况下,Visual Studio 2012都抱怨我有编译错误。具体来说,在我的两个包装类中,我从工厂方法

获取连接
extern alias MyAliasVersionX;
using MyAliasVersionX::Example.MyNamespace;
...
private Connection _connection;
...
_connection = Connection.Create(environmentName); // this returns an Example.MyNamespace.Connection--but this is where the compile error happens

这两个类的代码几乎相同;最大的区别是顶部using语句中别名的版本。在一个类(它似乎是首先列出的参考),一切正常,没有错误。在另一个类中,Visual Studio告诉我上面提到的行会产生编译错误,因为Connection.Create()返回Connection对象的其他版本(即MyAliasVersionY :: Example.MyNamespace.Connection)而不是MyAliasVersionX :: Example.MyNamespace.Connection)。

这是重要的部分:当我实际构建项目时,它编译得很好并且运行正常,错误列表窗格中显示的错误消失......直到我对代码进行任何更改,它返回时,仍然不会导致构建错误。

这是Visual Studio中的错误吗?如果没有,我错过了什么?

1 个答案:

答案 0 :(得分:2)

根据微软的说法,这是Visual Studio中可以追溯到VS-2008的一个错误。在发布VB.NET / C#编辑(称为“Roslyn”)的重大修改之前,它不太可能被修复。 (如果您对此不满意,请在下面提交我的Connect反馈,让微软知道!)

https://connect.microsoft.com/VisualStudio/feedback/details/786107/visual-studio-shows-error-cs0029-for-types-in-non-global-alias