【问题标题】:visual studio 2012 c# go to definition always returns metadatavisual studio 2012 c# go to definition 总是返回元数据
【发布时间】:2013-08-31 18:28:15
【问题描述】:

ide:vs 2012 v11.0.60610.01 更新 3 项目:网站,vb和c#的混合 问题:vb 导航到定义,c# 导航到元数据 抱怨:管理一个 30k 代码行项目时完全痛苦。 解决方案:你是第一个解决这个问题的人,这超出了我的耐心。

我发现元数据 110% 没用。 有没有办法让 c# 像 vb 一样导航到实际定义?

谢谢

【问题讨论】:

    标签: c# vb.net visual-studio-2012 metadata go-to-definition


    【解决方案1】:

    如果它导航到元数据,而不是定义,它可能与添加程序集的方式有关。如果您将引用添加为 DLL,它将始终显示元数据,即使该项目包含在您的解决方案中;您必须添加一个引用按项目才能访问源代码。

    【讨论】:

    • 谢谢,但不,我不是要求定义嵌入在 dll 中的方法。我写了它使用的所有原始代码。定义包含在 .vb 和 .cs 文件中,而不是 dll 中。为什么 c# 不导航到定义而不是向我展示无用的元数据???
    • @joeydood 我知道你在问为什么它在你拥有的代码上显示元数据......我给出的答案是为什么。仅仅因为您拥有 DLL 的代码并不意味着它就是这样添加到您的项目中的。尝试添加/删除引用并确保按项目而不是按 DLL 添加它,看看是否可以导航到它。
    • @joeydood 唯一的其他解释是您正在尝试导航 WCF 服务引用之类的东西,但我认为 VB 以相同的方式处理......
    • 顺便说一句,'查找所有引用'=垃圾;为什么 Visual Studio 2012 找不到所有应有的参考?这将是功能失调的“goto 定义”的可接受替代方案(应为 c# 重命名:goto 无价值的元数据)。
    • 要清楚,我只是想导航到同一项目中包含的方法,.vb 或 .cs 文件中的方法。包含源方法的类是通过“add -> new ->...”方法添加到项目中的,它们不是通过引用添加的。它们都是从头开始编写的。到目前为止,感谢大家的回复!
    【解决方案2】:

    “我发现元数据 110% 没用。有没有办法让 c# 像 vb 一样导航到实际定义?”

    Resharper 的 go to definition/go to implementation 选项完全符合您的预期 - 值得一试,看看它是否能解决您的问题。

    如果您选择不尝试 resharper,This question 可能会有所帮助

    【讨论】:

    • Resharper 工具仅在访问接口的实现时有用,而不仅仅是访问接口。我不确定这是否是他遇到的问题; “元数据”通常意味着他们只是从 DLL 中提取信息。
    【解决方案3】:

    我意识到这是一个旧线程,但它似乎是少数几个将混合语言(C# 和 VB.NET)的作用作为促成因素的其中之一。

    我在 VS.NET 2010、2012、2013 和 2015 上运行了一些测试。我的经验结果(未经任何官方 Microsoft 文档验证)是所有 4 个都支持查找 C# 消耗的 VB.NET 成员的所有引用(但是,只要添加了项目引用,就会分成明显不同的结果组。但是,VS.NET 2010、2012 和 2013 最终会出现在“从元数据”视图中,以便从 C# 代码转到定义到 VB.NET 成员。 VS.NET 2015 似乎让这种跨语言的 Go To Definition 导航正常工作。

    我还证实,使用 Resharper 对 External Sources 的支持确实允许 Go To Definition 在 VS.NET 2012 下工作,这几乎促使我为我们当前混合 C# 和 VB.NET 项目的项目购买 Resharper 许可证,但现在我的计划只是加快采用 VS.NET 2015。

    【讨论】:

      猜你喜欢
      • 2022-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多