我有一個命令行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