我正在编写一个包含两个不同版本的通信库的包装器,它可以与我公司数据库的不同版本一起使用。这些通信库具有相同的完全限定名称的类,因此我将引用加载到不同的别名中;我已经在全局别名中使用了一个或另一个在非全局别名中尝试过,在这两种情况下,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中的错误吗?如果没有,我错过了什么?
答案 0 :(得分:2)
根据微软的说法,这是Visual Studio中可以追溯到VS-2008的一个错误。在发布VB.NET / C#编辑(称为“Roslyn”)的重大修改之前,它不太可能被修复。 (如果您对此不满意,请在下面提交我的Connect反馈,让微软知道!)