C# 在何处保存与项目相关的文本文件?

C# 在何处保存与项目相关的文本文件?,c#,.net,visual-studio-2010,file,path,C#,.net,Visual Studio 2010,File,Path,出于测试和调试的目的,我只是硬编码了应用程序将使用的文本文件的文件路径,例如 const string CONFIG_FILE_PATH = @"C:\myconfigfile.txt"; 但我不认为把它留在Beta/发布版是个好主意 所以我想知道,保存这些应用程序将使用/读取的配置文件的最佳位置是什么?有什么建议吗 非常感谢。为什么不在项目的“设置”部分保存字符串?在“解决方案资源管理器”中,右键单击项目,选择“属性”,转到“设置”部分,并使用文件路径添加新字符串。然后,在您的代码中,您可以

出于测试和调试的目的,我只是硬编码了应用程序将使用的文本文件的文件路径,例如

const string CONFIG_FILE_PATH = @"C:\myconfigfile.txt";
但我不认为把它留在Beta/发布版是个好主意

所以我想知道,保存这些应用程序将使用/读取的配置文件的最佳位置是什么?有什么建议吗


非常感谢。

为什么不在项目的“设置”部分保存字符串?在“解决方案资源管理器”中,右键单击项目,选择“属性”,转到“设置”部分,并使用文件路径添加新字符串。然后,在您的代码中,您可以这样访问它:

using ProjectName.Properties;

var path = Settings.Default.MySetting;
要更改设置,请执行以下操作:

Settings.Default.MySetting = newPath;
Settings.Default.Save();

为什么不在项目的“设置”部分保存字符串?在“解决方案资源管理器”中,右键单击项目,选择“属性”,转到“设置”部分,并使用文件路径添加新字符串。然后,在您的代码中,您可以这样访问它:

using ProjectName.Properties;

var path = Settings.Default.MySetting;
要更改设置,请执行以下操作:

Settings.Default.MySetting = newPath;
Settings.Default.Save();

与可执行文件位于同一文件夹中

<>但是你应该考虑使用设置类(你可以阅读更多)。Visual Studio可以围绕app.config文件中的节自动创建强类型包装。
设置存储在与可执行文件相同的文件中,但可以覆盖(并从应用程序保存)每个用户的用户配置文件中的匹配文件。

与可执行文件位于同一文件夹中

<>但是你应该考虑使用设置类(你可以阅读更多)。Visual Studio可以围绕app.config文件中的节自动创建强类型包装。
设置存储在与可执行文件相同的文件中,但可以在每个用户的用户配置文件中的匹配文件中覆盖(并从应用程序中保存)。

另一个选项:如果测试配置文件要放在可执行文件旁边,则可以将“现有项…”添加到项目中,然后将其属性更改为“始终复制”或“更新时复制”。在调试期间,可执行文件应该能够在其当前工作目录中找到配置的副本


当有很多测试要做时,这不是一个非常有用的解决方案。

另一个选项:如果测试配置文件打算放在可执行文件旁边,您可以将“现有项…”添加到项目中,然后将其属性更改为“始终复制”或“如果更新,则复制”。在调试期间,可执行文件应能够在其当前工作目录中找到配置的副本


当有很多测试要做时,这不是一个非常有用的解决方案。

对于设置,我当然会使用app.config文件。这是微软提出的,除此之外,它几乎是处理应用程序设置最简单的方法

对于其他文件,我推荐应用程序本地或漫游设置路径,具体取决于您是否只需要本地数据。对于紧凑的本地数据库,我倾向于使用这种方法。阿尔宾建议的应用程序目录是个坏主意。您无法确定用户是否确实被允许写入该目录和/或该目录中的文件(即,该应用程序是由具有提升权限的管理员预安装的)

要获取本地路径的位置,请使用

ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
以及漫游路径

 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming)

有关Windows用户配置文件的更多信息(例如,在不同版本的Windows中的实际路径,您可以在此处找到:

对于设置,我肯定会使用app.config文件。这是由Microsoft提出的,除此之外,它几乎是处理应用程序设置的最简单方法

对于其他文件,我建议使用应用程序本地或漫游设置路径,具体取决于您是否只需要本地数据。对于紧凑的本地数据库,我倾向于使用这种方法。Albin建议的应用程序目录是一个坏主意。您无法确保用户实际上被允许写入该目录和/或该目录中的文件(即,该应用程序由具有提升权限的管理员预安装)

要获取本地路径的位置,请使用

ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
以及漫游路径

 ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming)

有关Windows用户配置文件的详细信息(例如,不同版本的Windows中的实际路径,你可以在这里找到:

你是指
app.config
文件吗?嗯,保存到该文件有什么好处?@woodykiddy这就是它的用途。它是内置的,你可以通过代码或直接修改app.config文件来修改它的内容,这很方便。嗯,这是听起来不错。我将试一试。1另外一个问题,因为我的配置文件几乎只包含一些值,你认为把这些值放在
app.config
中并保存为字符串好吗?这样,我可能根本不需要创建文本文件。你的意见是什么?谢谢。@woodykiddy我真的不知道看看为什么不。我经常使用配置文件,包括字符串和数字数据。这比处理额外的文件更容易(不需要检查它们是否存在,也不需要额外的IO操作)。只是不要过度:).你是说
app.config
文件吗?嗯,保存到该文件有什么好处?@woodykiddy就是它的作用。它是内置的,你可以通过你的代码或直接修改app.config文件来修改它的内容,而且很方便。嗯,这听起来不错。我会试一试。还有一个问题,因为我的配置文件非常方便只包含一些值,你认为把这些值放到
app.config
中并保存为字符串好吗?这样,我可能根本不需要创建文本文件。你怎么看?谢谢。@woodykiddy我真的不明白为什么不可以。我经常使用配置文件,用于字符串和数字数据。这比处理额外的文件更容易(不需要检查它们是否存在,也不需要额外的IO操作)。