我如何find程序集的完整名称?

我如何find我的程序集的完整名称,例如:

MyNamespace.MyAssembly, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 

我设法使用SDK中的sn.exe来获取我的PublicKeyToken,但我想要轻松地获取完整的限定名称。

如果您可以将程序集加载到.NET应用程序中,则可以执行以下操作:

 typeof(SomeTypeInTheAssembly).Assembly.FullName 

如果你不能那么你可以使用ildasm.exe,它会在那里:

 ildasm.exe MyAssembly.dll /text 

这是一个无耻的复制粘贴从我注意到它是一个简单的方法来获取项目输出的FQN:

 Open Visual Studio Go to Tools –> External Tools –> Add Title: Get Qualified Assembly Name Command: Powershell.exe Arguments: -command "[System.Reflection.AssemblyName]::GetAssemblyName(\"$(TargetPath)\").FullName" Check "Use Output Window". 

新工具出现在Tools –> Get Qualified Assembly Name 。 当select菜单项时,程序集名称将在输出窗口中给出。

晚会到了,但是search了一些关于这个问题,发现这个网页:

他描述了一个可以做到这一点的PowerShellfunction。 所以。 我从来没有使用PowerShell,但我想我会试试看:

 C:\> cd PATH_TO_ASSEMBLY C:\PATH_TO_ASSEMBLY>powershell Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. PS C:\PATH_TO_ASSEMBLY> [System.Reflection.AssemblyName]::GetAssemblyName('System.Data.SQLite.dll').FullName System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 PS C:\PATH_TO_ASSEMBLY> 

这是通过使用代码在其他答案中提到的技巧,除非你不必创build一个项目来做到这一点 – 只需input提示;)

使用Assembly.GetExecutingAssembly()获取当前程序集,使用Assembly.GetEntryAssembly()获取启动它的程序集,或者使用Assembly.GetCallingAssembly()获取调用您的函数的代码的组合堆栈)。

一旦你有正确的程序集,使用FullName属性,如其他答案中所示。

另外,如果您正在为GAC中已有的程序集寻找完全限定名称,则可以启动Visual Studio命令提示符(最简单的方法来设置正确的path),并使用gacutil /l列出具有各自FQN的所有程序集。 使用gacutil /l <yourassemblyname>来过滤列表,以更轻松地find您要查找的内容。

如果您在reflection器中加载程序集(DLL,EXE等),它会告诉您底部的完整名称。

你也可以使用开源的ILSpy,加载你的程序集后,它的全名将被隐藏在代码窗口顶部的注释中

JetBrains dotPeek或Telerik JustDecompile相当不错。 只要打开DLL,你就可以马上得到名字。

几个方法。

在代码中:

Assembly.FullName例如

 typeof(Thingy).Assembly.FullName 

或者,如果是安装的程序集,则使用msdn上的这篇文章中的步骤从GAC中获取。

Interesting Posts