C# 应用程序加载程序集时,如何设置搜索目录先搜索指定目录,在搜索应用程序目录
时间: 2024-09-20 09:11:06 浏览: 34
在C#中,当你需要动态加载程序集时,你可以通过`AppDomain`的`SetupInformation`属性来设置查找私有路径,也就是自定义的搜索目录列表。首先,你需要创建一个`AssemblyName`对象来表示你要加载的程序集,并创建一个`DirectoryInfo[]`数组来存储你的搜索目录顺序。
下面是一个示例:
```csharp
using System;
using System.IO;
using System.Reflection;
public class CustomAssemblyLoader
{
public static void Main()
{
// 指定要优先搜索的目录
string customDirectory = "C:\\CustomDirectory";
string appDirectory = Environment.CurrentDirectory; // 获取当前应用程序目录
// 创建自定义路径数组
DirectoryInfo[] searchPaths = new DirectoryInfo[]
{
new DirectoryInfo(customDirectory),
new DirectoryInfo(appDirectory)
};
// 创建 AssemblyName 对象
AssemblyName assemblyName = new AssemblyName("YourAssemblyName");
// 设置 AppDomain 的 SetupInformation
AppDomain currentDomain = AppDomain.CurrentDomain;
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = appDirectory;
setup.PrivateBinPath = string.Join(";", searchPaths.Select(dir => dir.FullName));
currentDomain.SetUp(setup);
try
{
// 动态加载程序集
Assembly loadedAssembly = Assembly.Load(assemblyName);
Console.WriteLine($"Loaded assembly: {loadedAssembly.FullName}");
}
catch (Exception ex)
{
Console.WriteLine($"Failed to load assembly: {ex.Message}");
}
// 清理
currentDomain.Unload();
}
}
```
在这个例子中,我们首先设置了两个搜索路径,一个是自定义目录,另一个是应用程序目录。然后在`AppDomainSetup`中将这两个路径合并到`PrivateBinPath`中,当尝试加载程序集时,会按照这个顺序搜索。
阅读全文