找不到从 ClickOnce 部署的程序的输出文件

本文关键字:程序 文件 输出 部署 ClickOnce 找不到 | 更新日期: 2023-09-27 18:36:38

我有一个程序,基本上可以从数据库创建一个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,我不明白的是我的程序似乎没有自己的文件夹,而只是我的开始菜单上的快捷方式,但程序运行正常。令人困惑的是我找不到输出文件的位置。在其中一个XP站中,我能够通过搜索找到它,但它在某个随机文件夹中,但我在Windows 7中找不到它。谁能给我一个建议,我做错了什么?或者我如何更改程序以便轻松部署,但我仍然可以找到文件的位置?

找不到从 ClickOnce 部署的程序的输出文件

处理此问题的最佳方法是在 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); 

有关使用设置的参考资料,请参阅此处