代码之家  ›  专栏  ›  技术社区  ›  WOPR

如何检测其他程序集是否可用于我的应用程序

  •  1
  • WOPR  · 技术社区  · 15 年前

    我有一个命令行winforms可执行文件,它调用Windows winforms应用程序。

    有时,在部署应用程序时,操作系统会忘记将Windows exe与命令行exe包含在一起,从而导致错误。

    我该如何优雅地处理这个问题并显示一个好的错误而不是:

    未处理的异常: System.IO.FileNotFoundException:未能 不加载文件或加载“myappfoo”, 版本=5.1.4303.0,文化=中性, publicKeyToken=空或其一个 依赖关系。系统找不到 指定的文件。文件名: 'myappfoo,版本=5.1.4303.0, 区域性=中性,PublicKeyToken=空' 在appfoo.program.main(string[]参数)

    警告:程序集绑定日志记录为 关掉了。启用程序集绑定 记录失败,设置注册表 值[hklm\software\m ICrosoft\Fusion!启用日志(dword)到 1。注意:有一些与程序集绑定相关的性能惩罚 故障记录。要打开此功能 关闭,删除注册表值 [hklm\software\microsoft\fus 离子!EnabeloGo]

    编辑:

    要澄清一点,我如何截取文件NotFoundException,何时

    static int Main(string[] args)
    {
       try
       {
          Console.WriteLine"MyPhooApp Command Line (c) PhooSoft 2008");
       }
       catch (System.IO.FileNotFoundException fe)
       {
          Console.WriteLine("Unable to find foo.exe");
          return -1;
       }
    }
    

    也不写。

    2 回复  |  直到 15 年前
        1
  •  4
  •   Josh    15 年前

    您可以使用.NET 2.0中引入的仅反射加载功能。这允许您在不将程序集实际加载到AppDomain的情况下加载程序集进行检查。

    Assembly.ReflectionOnlyLoad

    Assembly.ReflectionOnlyLoadFrom

        2
  •  0
  •   Colin Desmond    15 年前

    你不能简单地查找fileinfo.exists文件吗?