gpt4 book ai didi

xml - Windows应用程序的设计问题,最佳方法?

转载 作者:数据小太阳 更新时间:2023-10-29 02:04:25 24 4
gpt4 key购买 nike

我正在设计一个应用程序,可以让您找到由某些程序制作的图片(屏幕截图)。我将在应用程序本身中提供一些程序的位置,以帮助用户入门。

我想知道随着时间的推移我应该如何添加新位置,我的第一个想法是简单地将其硬编码到应用程序中,但这将意味着用户必须重新安装它才能使更改生效。

我的第二个想法是使用一个 XML 文件来包含所有位置以及其他数据,例如应用程序的名称。这也意味着用户可以根据需要添加自己的位置,也可以通过互联网共享它们。

第二个选项似乎是最好的方法,但我不得不考虑如何在用户计算机上对其进行管理。理想情况下,我只想要一个不依赖任何外部文件(例如 XML)的 .exe,但这会让我回到第一点。

最好只使用 ClickOnce 部署在开始菜单中创建一个条目并创建一个包含 .exe 和文件名的文件夹吗?

感谢您的反馈,在设计确定之前,我不想开始实现应用程序。

最佳答案

通常我不会将任何内容硬编码到应用程序中。正如您正确指出的那样,这会导致设计不灵活。

我通常将此类配置信息存储在 Local Application Data 下的 XML 文件中文件夹。

如果您的用户始终(或经常)连接到互联网,您可以考虑使用替代(或附加)功能在网络服务上存储此类“书签”信息。

编辑:

这是我多年来用于此类事情的代码片段

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml.Serialization;

namespace JTools.IO.Configuration
{
public static class ConfigManager<T> where T : new()
{
private const string FILENAME = "Config.xml";

public static T Load()
{
return Load(ConfigFile);
}

public static T Load(string fileName)
{
T ret = default(T);

try
{
// Open file to read the data from

using (FileStream fs = new FileStream(fileName, FileMode.Open))
{

// Create an XmlSerializer object to perform the deserialization
XmlSerializer xs = new XmlSerializer(typeof(T));

// Use the XmlSerializer object to deserialize the data from the file
ret = (T)xs.Deserialize(fs);
}
}
catch (System.IO.DirectoryNotFoundException)
{
throw new Exception("Could not find the data directory '" + fileName + "'");
}
catch (System.IO.FileNotFoundException)
{
ret = new T();
}

return ret;
}

public static void Save(T config)
{
Save(config, ConfigFile);
}

public static void Save(T config, string fileName)
{
// Create file to save the data to

using (FileStream fs = new FileStream(fileName, FileMode.Create))
{

// Create an XmlSerializer object to perform the serialization
XmlSerializer xs = new XmlSerializer(typeof(T));

// Use the XmlSerializer object to serialize the data to the file
xs.Serialize(fs, config);
}
}

static private string configFile = null;
static public string ConfigFile
{
get
{
if (configFile == null)
{
string appName = typeof(T).FullName;

string baseFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string jFolder = Path.Combine(baseFolder, "JToolsConfig");
string dataPath = Path.Combine(jFolder, appName);

if (!Directory.Exists(dataPath))
{
Directory.CreateDirectory(dataPath);
}

configFile = Path.Combine(dataPath, FILENAME);
}

return configFile;
}
}

}
}

关于xml - Windows应用程序的设计问题,最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com