2011-07-26 44 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作爲資源,所以我可以有一個單獨的可執行文件進行分發,但您也可以從一個目錄加載它們。