C# 组件反射
我想从一个目录加载所有*.dll文件,并将每个*.dll文件的日期与日期时间进行比较。现在 我在装配厂使用:C# 组件反射,c#,dll,reflection,.net-assembly,C#,Dll,Reflection,.net Assembly,我想从一个目录加载所有*.dll文件,并将每个*.dll文件的日期与日期时间进行比较。现在 我在装配厂使用: Assembly assembly = Assembly.LoadFile(path); try { var myTypes = assembly.GetTypes(); foreach (var myType in myTypes)
Assembly assembly = Assembly.LoadFile(path);
try
{
var myTypes = assembly.GetTypes();
foreach (var myType in myTypes)
{.....}
}
问题是,当我想用新的*.dll文件替换当前的*.dll文件时,我得到了一个错误:*.dll文件被我的程序集的另一个进程使用
所以我想在另一个域上运行我的汇编程序,当我取消这个域时,*.dll文件将是免费的
谢谢您的帮助。您需要在AssemblyResolve事件中进行检查。
例如:
活动:
static Assembly FindAssembly (object sender, ResolveEventArgs args)
{
//here load assembly and decide which version you want
Assembly assembly = Assembly.LoadFile(path);
return assembly;
}
是否要在运行时检测更改?抱歉,我不明白,但我想获取目录中的所有Dll文件,并在列表视图中显示每个Dll文件的类型,单击后我想用新的Dll文件替换当前Dll文件,但问题是Dll文件被程序集使用,所以我必须在我动手之前杀了集会的人file@KernelMed当然它被使用了,你是通过加载它来使用它的。那么,卸载它的解决方案是什么呢?你不能从使用这个dll的程序中替换dll。我需要将我的组件附加到新域,我不知道如何做
static Assembly FindAssembly (object sender, ResolveEventArgs args)
{
//here load assembly and decide which version you want
Assembly assembly = Assembly.LoadFile(path);
return assembly;
}