2011-07-26 45 views
6

我有一个.NET应用程序,我希望除了标准GAC,当前目录,PATH区域之外,还可以搜索其他依赖DLL的路径。是否有可能告诉应用程序执行此操作?如何向DLL搜索顺序添加路径

例如

告诉应用程序查看“[Executable Path] \ Dependent DLLs”。

+1

你没有提供足够的信息...应用程序是否动态加载依赖的DLL - 通过Assembly.LoadFrom? – Yahia

+0

它正在使用XamlXmlReader和ActivityXamlServices.Load加载工作流程。依赖的DLL将基于加载的XAML文件动态变化。 –

回答

6

您可以在.config文件中使用<probing>元素来添加专用程序集搜索路径。

2

另一种在您的配置中设置探测的方法(如果您需要更多灵活性) - 您可以添加自己的处理程序来搜索其他位置并自行加载它们。

在启动您的应用程序

AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainAssemblyResolve; 

添加处理程序用自己的方法取的名字,并搜索其他位置的主要方法 -

private static Assembly CurrentDomainAssemblyResolve(object setnder, ResolveEventArgs args) 
{ 
    return LoadEmbeddedAssembly(args.Name); 
} 

我用这个方法嵌入的DLL作为资源,所以我可以有一个单独的可执行文件进行分发,但您也可以从一个目录加载它们。