【发布时间】:2015-09-03 14:58:31
【问题描述】:
正在修改现有的 .NET 项目。给定 Visual Studio 中的一个 C# 类,我如何找出哪个 DLL 拥有它?
问题是我想在一个新项目中使用这个类中的一个方法,所以我需要找到正确的 DLL 来添加作为新项目的引用。
【问题讨论】:
标签: c# .net visual-studio dll .net-assembly
正在修改现有的 .NET 项目。给定 Visual Studio 中的一个 C# 类,我如何找出哪个 DLL 拥有它?
问题是我想在一个新项目中使用这个类中的一个方法,所以我需要找到正确的 DLL 来添加作为新项目的引用。
【问题讨论】:
标签: c# .net visual-studio dll .net-assembly
在对象浏览器中搜索您的类名(菜单视图 -> 对象浏览器)。 程序集信息窗口将包含 dll 完整路径。
【讨论】:
您可以在项目属性中看到程序集。 DLL 的输出名称(这是类库项目生成的)在其中指定。
【讨论】:
有一些像ReSharper 这样的工具会建议添加using 语句,甚至添加对项目的引用。看来你没有这样的东西。
在那种情况下(在我有工具之前),我用谷歌搜索
class <ClassName> site:msdn.microsoft.com
例如
class Process site:msdn.microsoft.com
这把我带到了Process class。在 MSDN 页面上,它列出了命名空间和程序集:
Namespace: System.Diagnostics
Assembly: System (in System.dll)
【讨论】:
这可能相当令人沮丧和恼火 - 我发现自己需要回答 OP 的问题,而上述答案都对我不起作用。
我有一个导入一些 Roslyn DLL 的程序。后来,在我不确定哪些 DLL 是真正必要的之后,我试图找出哪些类在哪些 DLL 中。
例如,我的程序引用了类MSBuildWorkspace。导航到类声明我可以看到命名空间名称,并且类的完全限定名称是Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace。
按照@Spell 的建议打开对象浏览器,然后搜索Microsoft.CodeAnalysis.MSBuild.MSBuildWorkspace 导致“搜索未找到结果”,我猜这一定是由于Visual Studio 中的错误。
幸运的是,仅搜索 MSBuildWorkspace 确实找到了类,但它仍然没有告诉我哪个 DLL 包含该类。
所以我需要做的是点击对象浏览器右下角的小面板中的类名,它显示为一个链接。这导致左侧面板切换到 DLL 及其包含的类的视图。现在我可以看到 MSBuildWorkspace 类在 DLL Microsoft.CodeAnalysis.Workspaces 中,右键单击它并选择复制并将结果粘贴到文本编辑器中提供了 DLL 的完整路径。
【讨论】: