2010-10-21 151 views
6

我在一个C#项目中,在这个项目中,我引用(使用项目引用)在vb.net中编写的另一个类库。在相同的解决方案中处理C#和VB.net项目

现在,当我右键单击并查看类定义。它不会把我带到vb.net项目中的确切源代码,而是将我带到动态生成的vb.net类的c#表示。

我已经尝试了反向实验,从vb.net项目开始,并引用了ac#项目,这次在右键单击视图定义时,它将我带到代码资源管理器,所以再次,不是原始代码进行编辑。

如果两个项目都是相同的语言,一切都很好。

对此有解释吗?可能的解决方案是允许在不同语言的项目之间轻松进行代码导航?

重现:

  1. 创建一个空白的解决方案
  2. 添加AC#类库
  3. 添加vb.net类库
  4. 在vb.net类库,1类 - 创建任何旧方法。 (可选)
  5. 在C#类,一个引用添加到vb.net类,例如:

    VBClassLibrary.VBClass myVBClass =新VBClassLibrary.VBClass();

现在,右键单击VBCLass并选择“转到定义”。

注意你最终会在哪里......

回答

7

这里没有什么你在做错的地方。这是Visual Studio设计的一个不幸的副作用。当你有两个不同语言的项目时,它们之间的引用不像一个项目引用,而是类似于文件引用。

Project to Project引用同一种语言共享一种语言服务。因此它可以控制它的所有代码,并且可以提供特殊的实时内容优势。主要的是goto定义和即时智能感知。今天在Visual Studio中没有任何设施可以允许语言服务通过参考边界彼此通信,就像您期望的那样。

+3

我跑到了同样的东西。另一个恼人的副作用是

标签信息也不会跨越IDE中的语言边界。 – RQDQ 2010-10-21 16:26:42

0

对于“goto definiton”,您可以改为“导航到”(ctrl + commma)

相关问题