How do I find the fully qualified name of an assembly?

时光毁灭记忆、已成空白 提交于 2019-11-26 09:28:15

问题


How do I find out the fully qualified name of my assembly such as:

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

I\'ve managed to get my PublicKeyToken using the sn.exe in the SDK, but I\'ld like to easily get the full qualified name.


回答1:


If you can load the assembly into a .NET application, you can do:

typeof(SomeTypeInTheAssembly).Assembly.FullName

If you cannot then you can use ildasm.exe and it will be in there somewhere:

ildasm.exe MyAssembly.dll /text



回答2:


This is a shameless copy-paste from I Note It Down and is a simple way to get the FQN for the project output:

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".

The new tool appears under Tools –> Get Qualified Assembly Name. When the menu item is selected, the assembly name is given in the output window.




回答3:


Late to the party, but googled some more about this issue and found this page:

  • http://www.pvle.be/2010/04/getting-an-assemblys-strong-name-with-powershell/

He describes a powershell function that can do this. So. I've never ever used powershell before, but I thought I'd give it a try:

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>

This does the trick mentioned in other answers by using code, except you don't have to create a project to do this - just type away at the prompt ;)




回答4:


Use Assembly.GetExecutingAssembly() to get the current assembly, use Assembly.GetEntryAssembly() to get the assembly that started it all, or use Assembly.GetCallingAssembly() to get the assembly of the code that called your function (one up in the stack).

Once you have the right assembly, use the FullName property, as indicated in other answers.




回答5:


Also if you're looking for the Fully Qualified Name for an assembly already in the GAC you can launch a Visual Studio Command Prompt (easiest way to set the correct paths) and use gacutil /l to list all assemblies with their respective FQNs. Use gacutil /l <yourassemblyname> to filter the list to more easily find what you're looking for.




回答6:


If you load the assembly (DLL, EXE, etc.) in Reflector it will tell you the full strong name at the bottom.




回答7:


You can also use open source ILSpy, after you load your assembly it's full name will be diplayed in comments at the top of code window




回答8:


JetBrains dotPeek or Telerik JustDecompile are quite good. Just open the DLL and you have the name right away.




回答9:


Couple ways.

In code:

Assembly.FullName e.g.

typeof(Thingy).Assembly.FullName

or, if its an installed assembly, from the GAC using the steps in this post on msdn.




回答10:


Being old-school and liking cmd better than powershell, I wrote myself this batch script to do it:

@REM fqn.bat <dll_path>
powershell -command "([system.reflection.assembly]::loadfile('%~f1')).FullName"

The %~f1 expands the first parameter to be an absolute path, so running:

fqn mydll.dll 

Will print the fully-qualified name you want.



来源:https://stackoverflow.com/questions/658446/how-do-i-find-the-fully-qualified-name-of-an-assembly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!