【问题标题】:Visual Studio - Attach source code to referenceVisual Studio - 附加源代码以供参考
【发布时间】:2010-04-12 06:41:45
【问题描述】:

我的 C# 项目引用了我拥有源代码的第三方 DLL。我能否以某种方式告诉 Visual Studio 该源代码的位置,例如,当我按 F12 打开 DLL 中的方法定义时,它将打开源代码,而不是打开“类[来自元数据]”存根代码?

【问题讨论】:

标签: visual-studio-2008 reference


【解决方案1】:

如果您使用ReSharper,您可以通过转到 ReSharper / Options / External Sources 来启用它,然后将“来自符号文件的源”上移。然后在“来自符号文件的源”选项卡中,单击“高级”,您可以在其中映射源文件夹。

【讨论】:

  • 该对话框的“目标文件夹”是什么?我只有一个 DLL 和一个源文件夹,我想附加用于导航目的。
【解决方案2】:

看起来答案在this MSDN documentation page 的底部附近。

调试器在以下位置查找源文件:

  1. 在启动调试器的 Visual Studio 实例的 IDE 中打开的文件。

  2. 解决方案中在 VS 实例中打开的文件。

  3. 在解决方案属性的“通用属性”/“调试源文件”页面中指定的目录。

  4. 模块的.pdb的源信息。这可以是构建模块时源文件的位置,也可以是对源服务器的命令。

要将目录添加到解决方案的“调试源文件”页面(上面的第 3 步):

您可以指定网络或本地目录来搜索源 文件。

  1. 在解决方案资源管理器中选择解决方案,然后从快捷菜单(即右键单击上下文菜单)中选择“属性”。

  2. 在“Common Properties”节点下,选择“Debug Source Files”。

  3. 单击文件夹图标。可编辑文本出现在“包含源代码的目录”列表中。

  4. 添加您要搜索的路径。

请注意,仅搜索指定的目录。您必须添加 您要搜索的任何子目录的条目。

因此,如果您只想调试特定文件一次而不弄乱您的解决方案,只需在 Visual Studio IDE 中打开该文件即可;如果您需要从该文件进入其他文件,您可能还需要在 Visual Studio 中打开其他文件。

如果您经常发现自己需要在解决方案之外调试源文件,那么您可以:

  1. 将源文件添加到解决方案中的现有项目之一,或在解决方案中创建一个新项目来存放源文件。这会使您的解决方案/项目变得混乱,但由于它将被检入源代码管理,所有团队成员都将能够自动调试源文件。
  2. 将保存源代码的目录添加到解决方案的“调试源文件”中。由于此更改未签入源代码管理,因此每个想要调试源文件的团队成员都需要执行此操作并添加其本地路径。此外,如果您在其他机器上获取解决方案代码,则需要记住再次执行此步骤。

【讨论】:

  • 不幸的是,这仅在您调试使用该程序集的正在运行的程序时才有效。 Joe 正在寻找一种无需运行代码即可在 IDE 中进行代码导航(例如查找定义、用法等)的方法。如果 ReSharper 解决了这个问题,那就太好了。我希望 Visual Studio 的最新版本也具有内置功能。但我找不到它。有谁知道吗?
  • Resharper 是我能找到的唯一方法。令我惊讶的是,Visual Studio 2015 Enterprise(如此昂贵的软件)不支持如此简单的功能,而这恰好是“企业”级 IDE(如 Eclipse)中的一个事后想法,Eclipse 是一款免费和开源的软件。
  • @netlander 你能提供使用 ReSharper 的说明吗?
【解决方案3】:

您可以执行此操作的一种方法是在您的解决方案中创建另一个项目,将 DLL 源放入其中,然后从您的主项目中,将依赖项添加为项目引用而不是程序集引用。这应该让您在调试等时浏览源代码/步入其中。

可能有更简单的方法可以做到这一点,但我目前不知道有任何方法。

【讨论】:

  • 它使解决方案有点混乱,这意味着我正在自己编译第三方 DLL,感觉有点奇怪/慢。我希望 Visual Studio 在引用 JAR 文件时具有与 Eclipse 的“附加源”选项等效的功能。
  • 是的,我知道这不太理想。如果其他人有更好的解决方案,我有兴趣了解自己。
  • Resharper 是我可以让它工作的唯一方法,请参阅我上面的评论。
猜你喜欢
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多