如何查找我的程序集的完全限定名称,例如:
MyNamespace.MyAssembly, version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089
我已经使用SDK中的sn.exe
获取了我的PublicKeyToken,但我想轻松地获取完全限定名称。
如何查找我的程序集的完全限定名称,例如:
MyNamespace.MyAssembly, version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089
我已经使用SDK中的sn.exe
获取了我的PublicKeyToken,但我想轻松地获取完全限定名称。
这是一个不道德的从I Note It Down复制粘贴的内容,它提供了一种简单的方法来获取项目输出的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".
typeof(SomeTypeInTheAssembly).Assembly.FullName
如果您无法找到它,那么您可以使用ildasm.exe,它会在其中某个地方:
ildasm.exe MyAssembly.dll /text
ildasm.exe MyAssembly.dll /text
的文本中,没有完整的程序集名称。这种方法是误导和不准确的。 - Puterdo Borato虽然有点晚了,但我搜索了一些关于这个问题的资料,并找到了这个页面:
他描述了一个可以解决此问题的PowerShell函数。所以,我从未使用过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>
这段代码实现了其他答案中提到的技巧,但您无需创建项目即可在提示符处键入 ;)
AssemblyName.GetAssemblyName(assemblyPath).FullName
结束。 - SuperOli如果你正在寻找已经在GAC中的程序集的完全限定名称,你可以启动Visual Studio命令提示符(设置正确路径的最简单方法),并使用gacutil /l
列出所有程序集及其相应的FQN。使用gacutil /l <yourassemblyname>
来过滤列表,更容易找到你要查找的内容。
如果您在Reflector中加载程序集(DLL,EXE等),底部会显示完整的强名称。
typeof(Thingy).Assembly.FullName
或者,如果它是一个已安装的程序集,可以按照此MSDN文章中的步骤从GAC中获取。
由于我比较传统,更喜欢使用命令提示符而非PowerShell,因此我编写了这个批处理脚本:
@REM fqn.bat <dll_path>
powershell -command "([system.reflection.assembly]::loadfile('%~f1')).FullName"
%~f1
会将第一个参数扩展为绝对路径,因此运行:
fqn mydll.dll