C# 组件反射

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)

我想从一个目录加载所有*.dll文件,并将每个*.dll文件的日期与日期时间进行比较。现在

我在装配厂使用:

 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;
}