我有一个命令行winforms可执行文件,它调用到Windows winforms应用程序中。如何检测是否有其他程序集可用于我的应用程序
Occassionally Ops在部署应用程序时忘记将exe包含在命令行exe中,导致出错。
如何优雅的处理这些,并显示一个友好的错误,而不是:
未处理的异常: System.IO.FileNotFoundException:找不到能 无法加载文件或屁股embly“MyappFoo, 版= 5.1。 4303.0,Culture = neutral, PublicKeyToken = null'或其 依赖项之一。系统找不到 指定的文件。文件名: 'MyAppFoo,版本= 5.1.4303.0, 文化=中性公钥=空' 在AppFoo.Program.Main(字串[] args)
WRN:集绑定日志记录是 截止。要启用程序集绑定 失败记录,设置注册表 值[HKLM \ SOFTWARE \中号 icrosoft \融合EnableLog!](DWORD)至1 注:有一些与程序集绑定失败 罗gging关联的性能损失。要关闭此功能 ,请删除注册表值 [HKLM \ Software \ Microsoft \ Fus ion!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;
}
}
犯规writeln无论是。
值得注意的是,如果程序集没有找到,这些函数仍然会抛出FileNotFound异常,但是您可以准确了解它何时会发生。 – 2009-05-29 07:02:21
确实如此,但另一个好处是,如果您尝试使用正常的程序集加载API,应用程序将永远不会再尝试再次探测程序集。 另一个优点是,您可以使用ReflectionOnlyLoadFrom和文件路径,而无需使用绑定上下文。如果将Assembly.LoadFrom与文件路径一起使用,则可以结束加载相同的程序集两次。 – Josh 2009-05-29 07:11:05