我已经编写了一个WPF应用程序,它根据用户与UI的交互对字典进行了一些工作。我将对字典所做的更改保存到在解决方案中手动创建的txt文件中。
我现在想部署我的应用程序,使它可以在另一台机器上安装和使用。为此,我使用Visual Studio安装模板创建了一个安装项目。在我的机器上安装后,程序崩溃了。我怀疑这是因为文件无法访问。
我的问题是,我如何才能让我的项目附带一个空的文本文件,该文件将出现在客户端的计算机中,并在其中保存对字典所做的更改?我的目标是使用txt文件,我将与我的项目船withing安装。
public Dictionary<string, string> LoadDictionary()
{
Dictionary<string, string> dictionary = new Dictionary<string, string>();
if (File.Exists(FilePath))
{
using (StreamReader reader = new StreamReader(FilePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
string[] parts = line.Split('=');
if (parts.Length == 2)
{
string key = parts[0];
string value = parts[1];
dictionary[key] = value;
}
}
}
}
return dictionary;
}
字符串
这是我用来加载字典的load方法。当文本文件存在于解决方案目录中时,文件路径没有问题,但是我如何确保程序总是获得属于安装程序中的txt文件的路径?
string installationFolder = AppDomain.CurrentDomain.BaseDirectory;
string filePath = System.IO.Path.Combine(installationFolder, "Logs.txt");
InstallationFolder = installationFolder;
FilePath = filePath;
型
这就是在我的应用程序的MainWindow()构造函数中初始化路径的方式。FilePath和InstallationFolder是在MainWindow()构造函数外部定义的字符串属性。
1条答案
按热度按时间s8vozzvw1#
我不知道你想达到什么目的,也不知道你面临什么问题,所以我将根据这些假设提供一些建议。
1.尝试使用AppData位置的文件,是用在你的应用程序(除非你是针对旧的Windows版本)。要执行此操作,请使用“Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)”而不是“AppDomain.CurrentDomain.BaseDirectory”
1.除非你必须在你的应用中提供预定义的数据集,否则我建议在它们丢失的情况下生成文件(在你的情况下是 *.txt)。请记住,文件可能会损坏,删除,重命名等。3.我从来没有使用VS安装程序模板,但我建议移动到第三方安装程序,因为他们提供了更多的灵活性,并且更容易在CI/CD中实现它们