从其他文件夹加载DLL引用?

Joe*_*Fan 22 .net dll reference

我有一个引用DLL的.NET控制台应用程序.如果DLL与EXE位于同一文件夹中,它运行正常,但我想将DLL放在不同的文件夹中.我怎样才能做到这一点?

Jef*_*Cyr 19

如果dll位于子文件夹中,则可以将此文件夹添加到AppDomain专用路径.

创建AppDomain后,AppDomain的私有bin路径无法更改(AppDomain.AppendPrivatePath已过时),如果您不想创建新的AppDomain,则可以修改App.config中的探测元素.

如果它不在子文件夹中,事情会变得更复杂,您可以使用其完整路径加载程序集,但如果它引用其他程序集,则CLR将无法解析依赖项.

如果要解决依赖关系,可以向AppDomain.AssemblyResolve添加处理程序并在特定文件夹中获取所需的程序集.

另一种可能性是将此dll(和依赖项)放在GAC中.

  • 我在谈论调整进程的私有PATH,而不是系统范围的PATH.我必须这样做一次,以便第三方库的整个DLL树加载正确.否则,您可以通过完整路径加载一个库,但*来自同一文件夹的**依赖项无法加载.在这里向OP投掷2美分硬币...... (3认同)