转到定义并查找所有引用在 Visual Studio 中不起作用

404*_*und 5 c# vb.net visual-studio

我在 VS 2013 Pro 中有一个 Windows 窗体解决方案,其中有多个 VB 和 C# 项目。其中一个依赖项如下所示:

\n\n
Startup Project, SP (VB)\n    Custom Controls Library, CL (C#)\n       Utils/Constants Library, UL (VB)\n    UL (again, referenced directly from SP)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的问题是,当我从 SP 转到 CL 时,它会将我带到对象浏览器。当我从 CL 转到 Def 时,它会显示元数据。但是当我从 SP 转到 Def 到 UL 时,效果很好。另外,当我在 CL 中查找控件的所有引用时,它不会显示 SP 引用,但当我从 SP 中查找时,它会显示 SP 和 CL 中的引用。

\n\n

我在 StackOverflow、MSDN 和其他几个论坛上进行了搜索,并尝试了我找到的所有建议:我删除了所有引用并重新构建了它们(我 100.0% 确定它们都是项目引用,而不是文件引用)。我已完全删除我的解决方案文件并从头开始添加项目。我已确保参考中的 GUID 与参考中的 GUID 匹配。它们都是使用相同的框架构建的,并且都针对相同的处理器类型。所有项目都生成 pdb 和 xml 调试文件。我假设 VS2013 取消了 IntelliSense 数据库文件,因为我在磁盘上找不到任何要删除的文件(否则我会尝试一下!)。

\n\n

另一个有趣的(我假设相关的)细节是 CL 中的方法/属性重命名不会反映在 SP 中。不仅 SP 子类的符号没有重命名,而且在我重建之前,Visual Studio 甚至不会提醒我此错误。所以,似乎 IntelliSense 已损坏,或者我还缺少其他东西。

\n\n

我实在是不知所措。据我所知,这个功能已经起作用了。我不能确定从2012年升级到2013年以来它是否有效。有人有同样的经历吗?我已禁用附加组件、重建解决方案、重新添加项目依赖项\xe2\x80\xa6,并且我会重新安装 Visual Studio,但如果有更简单的方法,我真的不想浪费几个小时的开发时间。

\n

Mar*_*tin 2

目前我只有 Express 版本可用。我按照您描述的方式使用 VS2013 Express 和新创建的空项目进行了尝试(即 VB -> C# -> VB)。我看到了您所描述的所有行为,VS2012 Express 显示了完全相同的行为。

因此,我担心重新安装不会有帮助。

我通常使用包含多个项目的解决方案,“转到定义”等跨项目工作非常顺利,但我从未使用过包含使用多种语言的项目的解决方案。

我猜您所缺少的功能“使用不同 .NET 语言在项目中顺利运行 IntelliSense”从未实现过。

更新: VS2010 的行为方式相同。