2014-10-09 47 views
0

我們的一些應用程序依賴於用於記錄和配置的通用dll。這個通用的dll被添加到我們的服務器上的GAC,並且不包含在我們部署的bin文件夾中。儘管FileNotFoundException運行控制檯應用程序

我想寫一個簡單的控制檯應用程序來檢查common.dll是否已經添加到服務器上的GAC。 我有沒有運氣檢查這個編程方式使用融合或assembly.load:Check GAC for an assembly

我的想法是,包括本地的DLL的引用,請務必複製本地關閉,然後嘗試趕上FileNotFoundException異常的服務器上時,調用是在dll中的一個方法。

像這樣的事情

static void Main() 
     { 
      try 
      {     
       Common.Logger.LogInfo("Testing logger."); //call to the dll 
       Console.WriteLine("loaded successfully"); 
       Console.ReadLine(); 
      } 
      catch (System.IO.FileNotFoundException e) 
      { 
       Console.WriteLine("Common dll missing!" + e.Message); 
       Console.ReadLine(); 
      } 
     } 

但由於DLL不存在的應用程序會崩潰,甚至打擊的主要方法之前拋出一個FileNotFoundException異常。我假設有一些初始檢查,當運行.exe時,所有dll都存在 - 是否有辦法禁用它?

回答

1

嘗試將其移動到一個單獨的方法:

static void Main() 
{ 
    try 
    {  
     CheckLogger();    
     Console.WriteLine("loaded successfully"); 
     Console.ReadLine(); 
    } 
    catch (System.IO.FileNotFoundException e) 
    { 
     Console.WriteLine("Common dll missing!" + e.Message); 
     Console.ReadLine(); 
    } 
} 

static void CheckLogger() 
{ 
    Common.Logger.LogInfo("Testing logger."); //call to the dll 
} 

您需要Main方法來啓動運行進入try/catch塊,如果它不能是不會發生(JIT)編譯。但由於每種方法都是單獨編譯的,所以這應該起作用。在編譯直接依賴於程序集的方法時會觸發缺失程序集的FileNotFoundException

+0

工作就像一個魅力,謝謝 – woggles 2014-10-10 06:39:10

相關問題