无法从ClickOnce部署的程序中找到输出文件

时间:2012-06-08 12:23:56

标签: c# .net

我有一个基本上从数据库创建CSV文件的程序。以下是我使用的代码

public void ExportToCSV(string row, int rowNo)
{
  FileStream aFile;
  try
  {
    if (rowNo == 0)
      aFile = new FileStream(@"..\..\Check.txt", FileMode.Create);
    else
      aFile = new FileStream(@"..\..\Check.txt", FileMode.Append);

    StreamWriter sw = new StreamWriter(aFile);
    sw.WriteLine(row);
    sw.Close();
  }
  catch (IOException ex)
  {
    MessageBox.Show("An IO exception has been thrown!");
    MessageBox.Show(ex.ToString());
  }

}

如果我从VS2010运行它,代码就可以了。 CSV文件在程序文件夹下创建。现在我希望能够将此程序安装到其他PC,因此我使用ClickOnce。现在使用ClickOnce,我不明白的是,我的程序似乎没有自己的文件夹,只是我的startmenu上的一个快捷方式,但程序运行正常。令人困惑的是我无法找到输出文件的位置。在其中一个XP工作站,我能够使用搜索找到它,但它在一些随机文件夹中,但我在Windows 7中找不到它。任何人都可以给我一个建议我做错了什么?或者我如何更改程序以便轻松部署,但我仍然可以找到文件的位置?

1 个答案:

答案 0 :(得分:3)

解决此问题的最佳方法是在app.config中预先配置路径 此路径可以位于Environment.SpecialFolder枚举

中描述的众所周知的文件夹中

在运行时,您可以通过这种方式获得文件夹的完整路径

string myFolderName = Properties.Settings.Default.OutputFolder;
string documentsFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string finalPath = Path.Combine(documentsFolder, myFolderName);

if (rowNo == 0) 
   aFile = new FileStream(Path.Combine(finalPath, "Check.txt", FileMode.Create); 
else 
   aFile = new FileStream(Path.Combine(finalPath, "Check.txt", , FileMode.Append); 

请参阅此处了解working with Settings

上的参考资料