2012-03-05 91 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,我不能改变它(即使在程序代码中),它会工作...

相关问题