2016-11-07 58 views
0

我无法找到我在哪里使用记录器。当然不是在Form1构造函数中。 所以我不明白为什么它甚至在第一个地方进入这个模块,为什么它会抛出这个异常。为什么我在运行程序时得到异常InvalidDeploymentException?

这是模块的代码:

/*---------------------------------------------------------------- 
* Module Name : Logger 
* Description : A logger 
* Author  : Danny 
* Date   : 10/02/2010 
* Revision  : 1.00 
* --------------------------------------------------------------*/ 


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Windows.Forms; 
using System.Drawing; 
using System.Threading; 
/* 
* Introduction : 
* 
* This module is a logger. any module can use this 
* module to log its actions. 
* 
* 
* */ 

     /*---------------------------------------- 
     * P R I V A T E D E F I N I T I O N S 
     * ---------------------------------------*/ 


namespace DannyGeneral 
{ 
    class Logger 
    { 
     /*---------------------------------------- 
     * P R I V A T E  C O N S T A N T S 
     * ---------------------------------------*/ 
     static string log_file_name = @"\logger.txt"; 
     static string full_path_log_file_name; 
     static string path_log; 
     static Mutex mut; 
     /*---------------------------------------- 
     * P R I V A T E  V A R I A B L E S 
     * ---------------------------------------*/ 

     /*--------------------------------- 
     * P U B L I C M E T H O D S 
     * -------------------------------*/ 

     /*---------------------------------------------------------- 
     * Function  : Logger 
     * Description : static Constructor 
     * Parameters : none 
     * Return  : none 
     * --------------------------------------------------------*/ 
     static Logger() 
     { 
      mut = new Mutex(); 
      path_log = Path.GetDirectoryName(Application.LocalUserAppDataPath)+ @"\log"; 
      if (!Directory.Exists(path_log)) 
      { 
       Directory.CreateDirectory(path_log); 
      } 
      full_path_log_file_name = path_log + log_file_name; 
     } 

     /*---------------------------------------------------------- 
     * Function  : Write 
     * Description : writes a string to the log file 
     *    This functions will add time and date and 
     *    end of line chars to the string written to 
     *    the file. 
     * Parameters : string to write to the file. 
     * Return  : none 
     * --------------------------------------------------------*/ 
     public static void Write(string str) 
     { 
      if (mut.WaitOne() == false) 
      { 
       return; 
      } 
      else 
      { 

       using (StreamWriter sw = new StreamWriter(full_path_log_file_name, true)) 
       { 
        sw.Write(DateTime.Now.ToShortDateString() + "--" + DateTime.Now.ToShortTimeString() + " ==> " + str); 
        sw.WriteLine(); 
        sw.Close(); 
       } 
      } 
      mut.ReleaseMutex(); 
     } 
     public static void exist() 
     { 
      if (!File.Exists(path_log + log_file_name)) 
      { 
       StreamWriter sw = new StreamWriter(path_log + log_file_name); 
       sw.Write(DateTime.Now.ToShortDateString()+"--"+DateTime.Now.ToShortTimeString()+" ==> "+"First Time The Log File Was Created"+Environment.NewLine); 
       sw.WriteLine(); 
       sw.Close(); 
      } 
     } 
     public static void newEmptyLine() 
     { 
      StreamWriter sw = new StreamWriter(path_log + log_file_name,true); 
      sw.WriteLine(); 
      sw.Close(); 
     } 

     /*--------------------------------- 
     * P R I V A T E M E T H O D S 
     * -------------------------------*/ 

    } 
} 

唯一的例外是就行:

path_log = Path.GetDirectoryName(Application.LocalUserAppDataPath)+ @"\log"; 

堆栈跟踪:在System.Deployment.Application.ApplicationDeployment.get_CurrentDeployment()

而另一件事情可能是在运行程序之后有一种方法,并且异常会以某种方式发现该程序中称为此模块的内容/位置?

当我使用调试上线

path_log = Path.GetDirectoryName(Application.LocalUserAppDataPath)+ @"\log"; 

一个破发点装上鼠标:LocalUserAppDataPath 我看到的路径:C:\用户\ Chocolade \应用程序数据\本地\ Youtube_Manager \ Youtube- Manager \ 1.0.0.0

但是为什么会这样/显示1.0.0.0的路径?它应该只是:C:\ Users \ Chocolade \ AppData \ Local \ Youtube_Manager \ Youtube-Manager

不知道发生了什么。

回答

0

可以更换

Path.GetDirectoryName(Application.LocalUserAppDataPath) 

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 
相关问题