找不到从 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中找不到它。谁能给我一个建议,我做错了什么?或者我如何更改程序以便轻松部署,但我仍然可以找到文件的位置?
处理此问题的最佳方法是在 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);
有关使用设置的参考资料,请参阅此处