VS转到定义失败/源代码不可用

3
我刚开始尝试使用Visual Studio探索F#,但是我无法通过“转到定义”选项导航到第三方依赖项的代码。
我收到了这个错误信息:
“无法导航到定义。源代码不可用。”
我的主要语言是Java,我习惯于使用IntelliJ IDEA源检索机制(通常通过Maven存储库完成)。在开发代码时,我认为这是一个必不可少的功能。难道.NET没有类似的东西吗?
编辑后:
阅读评论和答案后,我去SymbolSource上找了一些包,我找到了它们(例如JSON.Net的SymbolSource页面)。
我尝试了所示的PM命令和页面,但它们一直产生错误:
“Install-Package:处理此请求时发生错误。”
所以我已经下载了NuGet.exe,并通过在详细模式下运行命令获得了它请求的URL(例如 JSON.Net的SymbolSource FeedService URL)。
正如您所看到的,它显示了一个错误:
获取来自NuGet feed的软件包已暂时禁用。 但是您不需要它进行调试!
这是否是预期的?
附言:我也尝试过使用预身份验证的链接。 相同的问题。
P.S.2:似乎我可以在调试期间步入第三方依赖项的源代码,但我仍然无法通过“转到定义”访问它(无论是在Debug模式还是Edit模式下)。

1
请查看http://www.symbolsource.org/Public。 - John Palmer
@RubenBartelink 这是一个 F# 的问题吗? - andresp
一个集成开发环境通常会从引用程序集中反编译元数据定义。例如,在C#和VB.NET IDE 中可以正常工作。然而,F#是特殊的,它是一个开源项目。收拾烦琐的事情往往不是最喜欢做的事情 :) - Hans Passant
安德烈斯,我会听从@JohnPalmer的意见 - 他通常非常准确。(而且我最近没有足够的经验来回忆起符号服务器的问题;) - Ruben Bartelink
从NuGet feed获取软件包目前已暂时禁用。但是在调试时您并不需要它!这是否符合预期? - andresp
显示剩余9条评论
1个回答

4

在Visual Studio中,如果满足以下条件,您可能能够跳转到第三方源代码的定义:

  • 您处于调试模式
  • '启用源服务器支持'选项已打开(您似乎已经这样做了)
  • 第三方程序集在源服务器上有其pdb文件

在编辑模式下,无论是C#还是F#,都没有这种功能。在F#中,“导航到元数据”尚未实现。

我们无法将'导航到源代码'添加到Visual F# Power Tools中,因为它们存在许多棘手的问题,例如(1)如果未启用源服务器支持,则该功能无法使用,这很不幸 (2)它依赖于可能很慢或不可用的外部数据源 (3)存在pdb内容过时或不正确的风险等。

话虽如此,'导航到元数据'似乎更容易处理。我们从FSharp.Compiler.Service中获取了必要的信息,需要一些努力来过滤我们需要的内容并呈现给用户。这个功能可能会在Visual F# Power Tools的未来版本中提供。


谢谢。我不知道你必须在应用程序运行并处于调试模式下才能使用“转到定义”。为什么会这样?!似乎很奇怪,必须创建一个工作应用程序并运行它才能访问最好的文档来源(代码)来帮助创建相同的应用程序。尽管如此,我刚刚尝试了在F#应用程序中断点停止时使用“转到文档”,但我收到了相同的错误消息(尝试使用Nancy和JSON.Net包中的结构)。 - andresp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接