Как я могу сгенерировать имя типа с квалификацией сборки?
Например, при настройке поставщика членства я должен был бы предоставить имя типа сборки для "SqlMembershipProvider" (в этом примере я скопировал конфигурацию ниже) в атрибуте "type".
Как вы создаете имя типа сборки, имеющее соответствующую квалификацию?
Нужно ли его вручную вводить вручную, проверяя тип сборки?
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider,
System.Web, Version=2.0.0.0,
Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"/>
</providers>
</membership>
[ОБНОВЛЕНИЕ]: Упрощенная версия PowerShell
PS>([System.String]).AssemblyQualifiedName
System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Ответ 1
Это хороший удобный инструмент (расширение оболочки с исходным кодом) для копирования полного имени в буфер обмена, щелкнув правой кнопкой мыши на любой сборке.
Обновление. После просмотра комментария от dance2die, подумайте о том, чтобы собрать образец powershell script для экспорта имени типа в файл csv.
> [System.Reflection.Assembly]::LoadWithPartialName("System.Web")
> [System.Web.Security.SqlMembershipProvider] | select {$_.UnderlyingSystemType.AssemblyQualifiedName } | export-csv c:\typenames.csv
Используя С#, если вы хотите сгенерировать присвоенное имя сборки со всеми установленными ссылками, легко построить тест script с использованием отражения.
using System;
using System.Reflection;
........
Type ty = typeof(System.Web.Security.SqlMembershipProvider);
string fullname = ty.AssemblyQualifiedName;
//"System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Ответ 2
Самый простой способ найти эту информацию - использовать Reflector, загрузить сборку и скопировать Name
из манифест собрания. Информация о манифестах будет находиться в нижней панели Reflector, когда ваша сборка будет выбрана в окне выше.
Ответ 3
AFAIK Полноценное имя типа состоит из имени класса и подписи сборки.
Я не думаю, что вы можете создать его...
Тип - это пространство имен.
Версия, которую вы можете установить в AssemblyInfo.cs(удалите *, чтобы сохранить ее одинаковой)
Ключ открытого ключа, который вы установили в свойствах проекта.
Что из того, что я помню
Другой способ получить квалифицированное имя сборки может быть:
class Program
{
static void Main(string[] args)
{
string assemblyPath = args[0];
Assembly loadedAssembly = Assembly.LoadFrom(assemblyPath);
Module[] modules = loadedAssembly.GetModules();
Console.WriteLine("Assembly: " + loadedAssembly.GetType().Name);
foreach (Module module in modules)
{
Console.WriteLine("Module: {0}\nFullyQualifiedName: {1}", module.Name, module.FullyQualifiedName);
Type[] types = module.GetTypes();
foreach (Type type in types)
{
Console.WriteLine("Type: {0}\n FullName: {1}", type.Name, type.FullName);
}
}
Console.ReadLine();
}
}
Ответ 4
ok просто используйте его, как писал Гульзар Назим
$String typeName = typeof (AssemblyName.ClassName).AssemblyQualifiedName);
который даст вам полное имя, которое вы можете использовать в type.getType();
Это работает со мной и не имеет никакого значения.
Ответ 5
используйте команду add в вашей команде:
add-type -assemblyname "system.example"