程序集搜索%PATH%环境的路径

时间:2011-04-07 08:50:02

标签: c# assemblies environment

我正在开发一个项目,并且想要分离项目文件夹的共享程序集

+ 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 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

我不相信dotNET在绑定程序集时会依赖路径环境变量。

有关dotNET绑定策略,请参阅http://ondotnet.com/pub/a/dotnet/2003/03/17/bindingpolicy.html

特别是,你可能会发现这里有用的元素: http://msdn.microsoft.com/en-us/library/efs781xb%28v=VS.100%29.aspx