Ответ 1
Если вы можете загрузить сборку в приложение .NET, вы можете сделать:
typeof(SomeTypeInTheAssembly).Assembly.FullName
Если вы не можете, вы можете использовать ildasm.exe, и он будет где-то там:
ildasm.exe MyAssembly.dll /text
Как узнать полное имя моей сборки, например:
MyNamespace.MyAssembly, version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089
Мне удалось получить свой PublicKeyToken с помощью sn.exe
в SDK, но мне хотелось легко получить полное квалифицированное имя.
Если вы можете загрузить сборку в приложение .NET, вы можете сделать:
typeof(SomeTypeInTheAssembly).Assembly.FullName
Если вы не можете, вы можете использовать ildasm.exe, и он будет где-то там:
ildasm.exe MyAssembly.dll /text
Это бесстыдная скопированная вставка из я 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".
Новый инструмент появляется под Tools –> Get Qualified Assembly Name
. Когда выбран пункт меню, имя сборки указывается в окне вывода.
Поздно к партии, но googled еще немного об этой проблеме и нашел эту страницу:
Он описывает функцию 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>
Это трюк, упомянутый в других ответах с помощью кода, за исключением того, что вам не нужно создавать проект для этого - просто введите в приглашении;)
Используйте Assembly.GetExecutingAssembly(), чтобы получить текущую сборку, используйте Assembly.GetEntryAssembly(), чтобы получить сборку, которая начала все это, или используйте Assembly.GetCallingAssembly(), чтобы получить сборку код, который вызвал вашу функцию (один в стеке).
Как только у вас появится правильная сборка, используйте свойство FullName, как указано в других ответах.
Также, если вы ищете полноприведенное имя для сборки, уже имеющейся в GAC, вы можете запустить командную строку Visual Studio (самый простой способ установить правильные пути) и использовать gacutil /l
, чтобы перечислить все сборки с их соответствующими FQNs. Используйте gacutil /l <yourassemblyname>
, чтобы отфильтровать список, чтобы легче находить то, что вы ищете.
Если вы загрузите сборку (DLL, EXE и т.д.) в Reflector, она сообщит вам полное сильное имя внизу.
Вы также можете использовать ILSpy с открытым исходным кодом, после того как вы загрузите свою сборку, полное имя будет diplayed в комментариях в верхней части окна кода
JetBrains dotPeek или Telerik JustDecompile неплохо. Просто откройте DLL, и у вас есть имя сразу.
Пара.
В коде:
Assembly.FullName например
typeof(Thingy).Assembly.FullName
или, если это установленная сборка, из GAC, используя шаги в этом сообщении в msdn.
Будучи старой школой и предпочитая cmd лучше, чем powershell, я написал для себя этот пакетный скрипт:
@REM fqn.bat <dll_path>
powershell -command "([system.reflection.assembly]::loadfile('%~f1')).FullName"
%~f1
расширяет первый параметр до абсолютного пути, поэтому выполняется:
fqn mydll.dll
Напечатает полное имя, которое вы хотите.