C#.NET只有在存在DLL文件的情况下才能运行代码吗

C#.NET只有在存在DLL文件的情况下才能运行代码吗,c#,dll,C#,Dll,是否可以检查是否存在DLL文件,如果存在,则运行一些正在访问DLL的代码,但如果随后删除DLL文件,则代码将不会运行并开始引发异常?您可以检查程序集()的存在,如果找到该文件,则从该程序集创建类型的实例,并对其调用一个方法 大概是这样的: var assemblyLocation = "someLocation"; var methodToRun = "SomeMethod"; if (File.Exists(assemblyLocation)) { var assembly = Ass

是否可以检查是否存在DLL文件,如果存在,则运行一些正在访问DLL的代码,但如果随后删除DLL文件,则代码将不会运行并开始引发异常?

您可以检查程序集()的存在,如果找到该文件,则从该程序集创建类型的实例,并对其调用一个方法

大概是这样的:

var assemblyLocation = "someLocation";
var methodToRun = "SomeMethod";
if (File.Exists(assemblyLocation))
{
    var assembly = Assembly.LoadFile(assemblyLocation);
    var instanceOfType = assembly.CreateInstance("SomeType");
    if (instanceOfType != null) {
        var methodInfo = instanceOfType.GetType().GetMethod(methodToRun);
        if (methodInfo != null) {
            methodInfo.Invoke(instanceOfType, null);
        }
    }
}
如果您可以访问所创建对象的类型(类或接口),那么这当然可以得到改进,这样您就不必使用反射来执行该方法

像这样:

var assemblyLocation = "someLocation";
if (File.Exists(assemblyLocation))
{
    var assembly = Assembly.LoadFile(assemblyLocation);
    var instanceOfType = assembly.CreateInstance("SomeType") as SomeType;
    if (instanceOfType != null) {
        instanceOfType.SomeMethod();
    }
}

管理的还是非管理的?