C#后期绑定和文件异常

C#后期绑定和文件异常,c#,async-await,filenotfoundexception,late-binding,C#,Async Await,Filenotfoundexception,Late Binding,简单的主机应用程序通过特殊界面搜索程序集并从中导入代理列表,现在是Func。 然后,它可以执行任何Func,并且没有问题。 当此Func中的任何一个尝试访问不存在的文件时,就会出现问题 没有try-catch块,没有文件。存在没有帮助-当函数尝试访问文件时(无论如何,读取、获取流、检查等)-整个应用程序在mscorlib中的FileNotFound失败 如何解决这个问题?应用程序非常关键,我无法在应用程序中执行文件签入,只能在程序集中执行 Commands = new Dictionary<

简单的主机应用程序通过特殊界面搜索程序集并从中导入代理列表,现在是
Func
。 然后,它可以执行任何
Func
,并且没有问题。 当此
Func
中的任何一个尝试访问不存在的文件时,就会出现问题

没有try-catch块,没有
文件。存在
没有帮助-当函数尝试访问文件时(无论如何,读取、获取流、检查等)-整个应用程序在
mscorlib
中的
FileNotFound
失败

如何解决这个问题?应用程序非常关键,我无法在应用程序中执行文件签入,只能在程序集中执行

Commands = new Dictionary<string, Func<string, string>>(); 
foreach (string f in fileNames)
                {

                    Assembly asm = Assembly.LoadFrom(f);
                    var types = asm.GetTypes();
                    foreach(Type t in types)
                    {

                        if (t.GetInterface("IMountPoint") != null)
                        {

                            var obj = Activator.CreateInstance(t);
                            var cmds = ((IMountPoint)obj).Init(EntryPoint);
                            foreach (var cmd in cmds)
                            {
                                if (!Commands.ContainsKey(cmd.Key.Trim().ToUpper()))
                                {
                                    Commands.Add(cmd.Key.Trim().ToUpper(), cmd.Value);
                                }

                            }
                        }
                    }
                }
UPD:是的,委托包含
async
逻辑

UPD2:部分代码:

    try
    {
        if(!File.Exists(filePath)) return null;

                using (StreamWriter writer = new StreamWriter(destinationFilePath))
                {
                    using (StreamReader reader = new StreamReader(filePath))
                    {
                    //some logic there
                    }
                 }
     }
    catch 
    {

    }
在文件.Exists()处引发异常

此代码用于导入程序集

Commands = new Dictionary<string, Func<string, string>>(); 
foreach (string f in fileNames)
                {

                    Assembly asm = Assembly.LoadFrom(f);
                    var types = asm.GetTypes();
                    foreach(Type t in types)
                    {

                        if (t.GetInterface("IMountPoint") != null)
                        {

                            var obj = Activator.CreateInstance(t);
                            var cmds = ((IMountPoint)obj).Init(EntryPoint);
                            foreach (var cmd in cmds)
                            {
                                if (!Commands.ContainsKey(cmd.Key.Trim().ToUpper()))
                                {
                                    Commands.Add(cmd.Key.Trim().ToUpper(), cmd.Value);
                                }

                            }
                        }
                    }
                }
那太可耻了。 我正在使用后期绑定,忘记手动复制程序集,所以应用程序不会加载带有文件存在性检查的程序集,而是使用旧的程序集。
抱歉,各位。

请提供一些代码好吗?这些程序集是否加载在同一appdomain中?您需要什么类型的代码?解决方案是一个很大的问题,我想我已经写了所有需要的东西。是的,AppDomain是一样的。请显示您遇到错误的示例代码。问题在于实现,而你没有表现出来。为什么不使用Try/Catch块来处理这样的场景?