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

时间:2009-05-29 06:44:14

标签: .net exception assemblies

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

偶尔Ops忘记在部署应用程序时使用命令行exe包含windows exe,从而导致错误。

如何优雅地处理并显示错误而不是:

  

未处理的例外情况:   System.IO.FileNotFoundException:可以   不加载文件或屁股'MyappFoo,   版本= 5.1.4303.0,文化=中立,   PublicKeyToken = null'或其中一个   依赖。系统找不到   指定的文件。文件名:   'MyAppFoo,版本= 5.1.4303.0,   Culture = neutral,PublicKeyToken = null'   在AppFoo.Program.Main(String [] args)

     

WRN:程序集绑定日志记录是   关掉。要启用程序集绑定   失败日志记录,设置注册表   价值[HKLM \ Software \ M.   icrosoft \ Fusion!EnableLog](DWORD)来   注意:程序集绑定会导致一些性能损失   失败了。要转动此功能   关闭,删除注册表值   [HKLM \ SOFTWARE \微软\毕淑敏   离子!EnableLog]。

编辑:

为了澄清一下,当

时,如何拦截FileNotFoundExcception
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 个答案:

答案 0 :(得分:4)

您可以使用.NET 2.0中引入的仅反射加载功能。这允许您加载程序集以进行检查,而无需将其实际加载到appdomain中。

Assembly.ReflectionOnlyLoad

Assembly.ReflectionOnlyLoadFrom

答案 1 :(得分:0)

你能不能简单地用FileInfo.Exists查找文件?