2009-07-09 83 views
0

我有一个写入C:\驱动器上的文件夹的应用程序。该程序在我的电脑上正常工作,但在另一台笔记本电脑上运行.exe(另一台笔记本电脑没有Visual Studio等)时,我得到了一个filenotfoundexception,我无法在错误报告中找到发生这种情况的代码行。C#WriteDirectory问题

下面是创建目录(假设这是问题)

 try 
     { 
      WriteDirectory = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\SMS Notifier\"); 
      if (!WriteDirectory.Exists) 
       WriteDirectory.Create(); 
     } 
     catch (Exception e) 
     { 
      throw e; 
     } 

任何想法什么问题可能是代码? 我应该检查写入权限吗?!

帮助非常感谢!

回答

2

我的猜测是,这不是真正的问题;既不DirectoryInfo.Create也不 Directory.CreateDirectory抛出一个FileNotFoundException。

最好的办法是建立调试应用程序,然后将该文件与它的所有一起复制。pdb文件;希望这会给你错误信息中的方法和行号。

您可能还会考虑为任何未处理的异常添加处理程序;可以处理AppDomain.UnhandledException,以便您可以为在应用程序中任何位置运行的任何未处理的异常添加自己的事件处理程序;

将这样的东西添加到您的主要功能;

System.AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler); 

然后编写你自己的错误处理程序;

static void MyHandler(object sender, UnhandledExceptionEventArgs args) { 
    Exception e = (Exception) args.ExceptionObject; 
    Console.WriteLine("MyHandler caught : " + e.Message); 
} 
1

此路径是否存在于笔记本电脑上?

Environment.SpecialFolder.ApplicationData 

请在这一行就像一个messagebox.show一个的Debug.WriteLine和看到的,路径是什么? 此外,如果存在的路径可能是一个权限issue..most可能

+0

不要认为它会影响是否存在特殊文件夹作为它的检查将“WriteDirectory.Exists”将覆盖。问题是尝试写入C驱动器的权限问题。 – James 2009-07-09 09:50:44

+0

是的,同意有一个权限问题,但这可能是由于试图在错误的地方创建文件夹,所以它是值得检查的路径是预期的一个 – Calanus 2009-07-09 09:53:15

1

我可能会做(用于调试)的第一件事情是插入一个

MessageBox.Show(WriteDirectory.FullName); 

你尝试创建目录只是之前看看这个“特殊”路径是否是你认为的!

1

使用throw;而不是throw e;将保持在异常的原始堆栈跟踪。

将一个Console.WriteLine(e.ToString());(或一个MessageBox等价物)放在catch块中将会输出堆栈跟踪,然后在那里(你需要一个调试版本来获得大多数信息)。

如果一切都失败,跟踪语句Console.WriteLine("about to do x");帮助的旧标准 - 从一个命令行启动应用程序。

5

如果部署.pdb文件与您的.dll一起,你会得到行号的异常消息!

try..catch块没有做任何有用的事情,所有正在正在吞噬堆栈跟踪,所以你不能看到发生了什么事!我建议完全删除try..catch块。

throw e;会导致丢失堆栈跟踪,使用throw;来保护它。

此外,你应该使用System.IO.Path.Combine()追加目录根和子目录名称,这样你就不必担心自己做\和可能犯了一个错误。

0

安装在笔记本电脑上的.Net框架?

其他可能性:plateform不支持​​这个目录。检查MSDN上的兼容平台

+0

。NET框架安装,它创建目录文件夹成功。然后它似乎无法写入它......但是未选中该文件夹上的只读框!? – Goober 2009-07-09 10:37:43