我正在开发一个项目,并且想要分离项目文件夹的共享程序集
+ 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%环境定义程序集的搜索路径。
答案 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