给定 Visual Studio 中的 class,如何找出哪个 dll 包含它?

Given a class in Visual Studio, how to find out which dll contains it?

正在修改现有的 .NET 项目。给定 Visual Studio 中的 C# class,我如何找出哪个 DLL 拥有它?

问题是我想在新项目中使用这个class中的方法,所以我需要找到正确的 DLL 添加作为新项目的参考。

有一些工具,如 ReSharper,会建议添加 using 语句,甚至添加对项目的引用。看来你没有这样的东西。

为 Microsoft 添加参考 class

在那种情况下(在我有工具之前),我 google for

class <ClassName> site:msdn.microsoft.com

例如

class Process site:msdn.microsoft.com

这让我想到了 Process class。在 MSDN 页面上,它列出了命名空间和程序集:

Namespace:  System.Diagnostics
Assembly:  System (in System.dll)

在不同的项目中添加您自己的引用class

  • 打开class定义(源代码)
  • 打开解决方案资源管理器
  • 单击 "Sync with active document" 按钮
  • 移至项目
  • 打开属性(Alt+Enter)
  • 查看Application/Assembly姓名

您可以在项目属性中看到程序集。 DLL 的输出名称(这是 Class 库项目生成的名称)在此处指定。

在对象浏览器(菜单视图 -> 对象浏览器)中搜索您的 class 名称。 程序集信息window会包含dll完整路径

这可能相当令人沮丧和恼火 - 我发现自己处于需要回答 OP 问题的情况,而上述答案中的 none 对我有用。

我有一个导入了一些 Roslyn DLL 的程序。后来,在我不确定哪些 DLL 是真正必要的之后,我试图找出哪些 classes 在哪些 DLL 中。

比如我的程序引用了classMSBuildWorkspace。导航到 class 声明,我可以看到命名空间名称,class 的完全限定名称是 Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace.

按照@Spell 的建议打开对象浏览器并搜索Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace 结果是"Search found no results",我猜这一定是由于Visual Studio 中的一个错误。

幸运的是,仅搜索 MSBuildWorkspace 确实找到了 class,但它仍然没有告诉我哪个 DLL 包含 class。

所以我需要做的是在对象浏览器右下方的小面板中单击显示为 link 的 class 名称。这导致左侧面板切换到 DLL 及其包含的 classes 的视图。现在我可以看到 class MSBuildWorkspace 在 DLL Microsoft.CodeAnalysis.Workspaces 中,右键单击它并选择复制并将结果粘贴到文本编辑器中,提供了 DLL 的完整路径。