2

当您将 C# 和 VB 项目组合在一个解决方案中时,MS 无法正确导航到方法的定义,这让我感到非常震惊。如果您尝试从 VB 导航到 C#,它会打开“对象资源管理器”,如果从 C# 导航到 VB,它会生成一个元数据文件。

老实说,在不同语言之间跳转有什么复杂的,尤其是如果它们使用相同的 CLR 的话?

有谁知道这是为什么,或者是否有任何解决方法?他们在 VS 2008 中做对了吗?


@Keith,恐怕您的回答可能是对的。我真的很震惊,微软把这件事搞砸了。有没有人有任何解决方法的想法?


@Mladen Mihajlovic - 这正是我所描述的情况。自己尝试一下;项目引用没有任何区别。

4

3 回答 3

2

这对两种语言都是通用的。

  • VB.Net 中的 F12 始终带您进入对象浏览器
  • C# 中的 F12 始终带您进入元数据定义

这是一种经过深思熟虑的机制,旨在尝试匹配升级用户的预期行为。C# 方式为您提供正确的信息,但 VB 方式是 VBA 或 VB6 用户所期望的。

VS2008 中的行为是相同的。

这些是外部项目的规则,如果它在同一个解决方案中,两者都应该带你去代码。


你是对的 - VB 项目将 C# 项目视为外部项目,反之亦然 - 你无法从一个代码导航到另一个代码。我已经在最新的 VS2008 中对此进行了测试,但它仍然是一个问题。

它也无法获得完整的元数据。在您的 C# 代码中添加一个方法,在您编译 C# 程序集之前,它不会出现在 VB 的智能感知中。

这类似于组件在工具条中的显示方式,因此我认为正常导航到代码功能是具有通用编译器的代码功能,其他一切都使用某种反射。

只要您仍在构建 PDB,它就应该能够找到文件,我想它不会,因为他们也需要它来支持发布版本。如果没有 PDB 查找,它就找不到代码行。

于 2008-09-15T14:47:30.503 回答
0

确保您引用的是 VB项目,而不仅仅是 DLL 文件。

于 2008-09-16T10:11:12.970 回答
0

这是一个已知问题,解决方法有两种:使用ctrl+,或使用一些添加此功能的插件,例如 resharper(将在 .xml 中添加此功能F12)。

于 2014-02-19T10:01:48.197 回答