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

本文关键字:类型 错误 CS0029 别名 全局 Studio 显示 Visual | 更新日期: 2023-09-27 18:11:37

我正在为两个不同版本的通信库编写包装器,这两个版本的通信库与我公司的不同版本的数据库一起工作。这些通信库具有相同的全限定名称的类,因此我将引用加载到不同的别名中;我在全局别名中尝试过一个或另一个,在非全局别名中都尝试过,在这两种情况下,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)。连接而不是MyAliasVersionX:: example . mynamspace .Connection).

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

这是Visual Studio中的一个bug吗?如果不是,我错过了什么?

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

根据微软的说法,这是Visual Studio中可以追溯到VS-2008的一个bug。在对VB进行大修之前,这个问题不太可能得到修复。net/c#编辑(称为"Roslyn")发布。(如果你不满意,请在下面投票给我的Connect反馈,让微软知道!)

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