Если Вы работаете с SQL Server 2005 или позже существует также библиотека CLR, доступная в http://www.sqlsharp.com/ , который обеспечивает реализации.NET строки и функций RegEx, которые, в зависимости от Вашего объема и типа данных может быть легче использовать, и в некоторых случаях функции обработки строк.NET могут быть более эффективными, чем T-SQL.
Класс AssemblyName может анализировать имя сборки за вас, просто передайте строку в его конструктор. Если у вас есть имя типа, указанное в сборке, я думаю, вам придется сначала удалить часть типа строки (то есть все до первой запятой).
Если сборка загружена, вы можете использовать что-то вроде этого:
Assembly assembly = Assembly.GetExecutingAssembly();
string assemblyName = assembly.GetName().Name;
В приведенном выше примере я использовал исполняющую сборку, но вы просматриваете загруженную сборку.
Обновление: Вы всегда можете загрузить сборку в отдельный AppDomain, получить имя сборки и после этого выгрузить ее. Дайте мне знать, если вам понадобится образец.
Проверьте Класс Path . Он имеет множество функций синтаксического анализа имен файлов. Или вы можете попробовать:
string qualType = @"System.String, mscorlib, Version=2.0.0.0, Culture=neutral, publicKeyToken=b77a5c561934e089";
Type t = Type.GetType(qualType, false);
if (t == null)
{
Console.WriteLine("Invalid qualified type string.");
return;
}
Console.WriteLine(t.FullName);
Итак, у вас есть что-то вроде этого?
Assembly assem = Assembly.LoadFile("PathToTheAssembly.dll");
Type t = assem.GetType("Namespace.And.Type.Name");
t.FullName
Если вы хотите разобрать форму BNF , приведенный выше пример с использованием GetType должен работать для вас.
EDIT: Хорошо, это должно делать то, что вы хотите, если у вас есть имя:
Assembly assem = Assembly.GetAssembly(Type.GetType(assembly_qualified_name, false));
if(assem != null)
{
byte[] pkt = assem.GetName().GetPublicKeyToken();
Version ver = assem.GetName().Version;
CultureInfo ci = assem.GetName().CultureInfo();
}