2012-03-05 88 views
0

我正在編程(這是由其他人編寫的),此程序是使用Visual Studio 2010用C#編寫的。幾乎所有內容都很好(除了一些邏輯問題),直到我嘗試朗姆酒我的程序處於Release模式而不是Debug模式。該程序下載測試模塊(PingTest.dll)並在計算機空閒時運行。調試版將所有文件存儲在正在運行的文件夾中,同時發佈版本「安裝」到c:\ Users \ Macke \ AppData \ Local \ NetMon \中,並從那裏重新運行(所有運行所需的文件也存儲在那裏)。所以當我運行NetMon.exe它崩潰。我添加了一些try/catch並發現錯誤:無法加載文件或程序集或其依賴關係之一。系統找不到指定的文件

無法加載文件或程序集'CountDow_Idle,版本= 1.0.0.2,Culture = neutral,PublicKeyToken = null'或其中一個依賴關係。該系統找不到指定的文件。

導致它的部分代碼: AppDomain aDom = AppDomain.CreateDomain(「TestingDomain」); Assembly testAsm = null;

  using (FileStream fs = File.Open(TMP_MOD_NAME, FileMode.Open)) 
      { 
       using (MemoryStream ms = new MemoryStream()) 
       { 
        byte[] buffer = new byte[1024]; 
        int read = 0; 
        while ((read = fs.Read(buffer, 0, 1024)) > 0) 
         ms.Write(buffer, 0, read); 

        testAsm = aDom.Load(ms.ToArray()); 
       } 
      } 

      INetMonTest iTest = null; 
      foreach (Type type in testAsm.GetExportedTypes()) 
      { 
       if (type.BaseType.FullName == "CountDown_Idle.INetMonTest") 
       { 
        try 
        { 
         iTest = (INetMonTest)aDom.CreateInstanceAndUnwrap(AssemblyName.GetAssemblyName(TMP_MOD_NAME).FullName, type.FullName); 
        } 
        catch (Exception ex) 
        { 
         MessageBox.Show("AppDomain creation failed:\n\n" + ex.Message); 
        } 
        break; 
       } 
      } 

我看了媒體鏈接爲(在AssemblyInfo.cs文件)

所以莫比任何人都可以幫我正確的版本。 Thanx提前

回答

0

問題被發現!檢查你的項目文件的名稱。

調試文件的名稱是CountDown_Idle.exe,而發行文件名是NetMon.exe(它在自動安裝中被重命名)。所以我試圖從我的電腦的任何地方運行調試版本,它工作,但如果我改變它到NetMon.exe(而不是CountDown_Idle.exe)它沒有工作..現在安裝程序保持原來的文件名,一切運行良好。事情是,該程序必須命名爲NetMon.exe,我不能改變它(即使在程序代碼中),它會工作...

相關問題