Сборка searchPath через среду% PATH% - PullRequest
0 голосов
/ 07 апреля 2011

Я занимаюсь разработкой проекта и хочу разделить папку проектов из общих сборок

+ Program Files
    + My Company

       +Commons
          * Assembly1.dll
          * Assembly2.dll
          * Assembly3.dll
          * Assembly4.dll

       +Project1
          * MyProject1.exe
          * MyProject1.exe.config

       +Project2
          * MyProject2.exe
          * MyProject2.exe.config

, пытаясь заставить проекты загружать сборки из папки "Commons", поэтому я изменяю системную среду% PATH% для поискаDLL.

%PATH% = c:\Program files\My Company\Commons;%PATH%

, но они не ищут среду Path (Мониторинг с помощью ProcessMonitor ). Может кто-нибудь показать мне способ определения пути поиска для сборок из среды% PATH%.

Ответы [ 2 ]

4 голосов
/ 07 апреля 2011
string path = System.Environment.GetEnvironmentVariable("Path");
var folders = path.Split(';');
foreach (var folder in folders)
{
    foreach (var file in Directory.GetFiles(folder, "*.*"))
    {
        // found files
    }
}

Выполните поиск в событии AppDomain.AssemblyResolve, чтобы найти dll при запуске приложения. Более подробная информация о мероприятии здесь: http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve.aspx

0 голосов
/ 07 апреля 2011

Я не верю, что dotNET полагается на переменную окружения пути при привязке сборок.

См. http://ondotnet.com/pub/a/dotnet/2003/03/17/bindingpolicy.html для политики связывания dotNET.

Особенно, вы можете найти этот элемент полезным здесь: http://msdn.microsoft.com/en-us/library/efs781xb%28v=VS.100%29.aspx

...