Получить все пространства имен проектов, на которые есть ссылки в консольном приложении - PullRequest
0 голосов
/ 08 января 2011

У меня есть консольное приложение, и я добавил ссылку на 2 проекта в это консольное приложение, CustomerService.DataAccess и CustomerService.Business. Теперь, когда консольное приложение запускается, я хотел бы получить все пространства имен, которые находятся в 2 проектахя добавил в консольное приложение.Thankx.

1 Ответ

0 голосов
/ 08 января 2011

Для этого вам необходимо сначала получить ссылки на сборки, а затем получить набор пространств имен из всех типов в этой сборке.

AssemblyName[] referencedAssemblies = GetType().Assembly.GetReferencedAssemblies();
HashSet<string > namespaces = new HashSet<string>();

foreach (AssemblyName referencedAssembly in referencedAssemblies)
{
    Assembly reference = Assembly.Load(referencedAssembly);

    if (!reference.GlobalAssemblyCache)
    {
        HashSet<string> refernceNamespaces = new HashSet<string>(
            reference.GetTypes().Select(t => t.Namespace).Where(ns => ns != null));
        namespaces.UnionWith(refernceNamespaces);
    }
}

Приведенный выше код получит все пространства имен в ссылочных сборках, которых нет в GAC. Если вы хотите получить пространства имен только в определенных сборках, вы можете просто проверить свойство AssemblyName.Name, чтобы убедиться, что вы проверяете правильные сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...