c# - 使 C# 控制台应用程序识别 .exe.config 文件中手动编辑的更改

标签 c# console config edit

我成功地编写了一个 C# 控制台应用程序,它从不同位置收集 .XML.ZIP 文件并将它们复制到一个目的地。这些位置作为用户范围的设置存储在设置中(例如,“Folder01 C:\Data1\”“Folder02:\Data2”)。您可能已经知道,构建项目会在 /bin/Debug 文件夹中生成一个 [ProjectName].exe.config 文件。

现在,问题是我无法让控制台应用程序识别我在 .exe.config 文件中所做的任何更改。比如说,我想将 "Folder 03 C:\Data3\" 添加到设置或编辑 "Folder02" 路径到 "C:\DataEdited\",控制台应用程序仍将循环遍历代码中最初设置的设置(“Folder01 C:\Data1\”和“Folder02 C:\Data2\”)。

我还注意到,即使在删除 .exe.config 文件后,控制台应用程序仍在运行,就好像它根本不依赖于该文件一样。我想进行更改而不必在 Visual Studio 中打开项目并在本地进行编辑。

这可能吗?

编辑:

响应我创建的设置和获取文件夹路径的代码的请求,请参见下图:

See Settings here 这是代码:

string[] acceptedExtensions = new[] { ".xml", ".zip" };
string[] settingsToSkip = new[] { "RootFolder", "ArchiveFolder" };

// Collect data
var filteredSettings = Properties.Settings.Default.Properties
    .Cast<SettingsProperty>()
    .Where(p => !settingsToSkip.Contains(p.Name));

filteredSettings 收集 Folder01、Folder02、Folder03 和 Folder04,我循环遍历这些以查找具有 acceptedExtensions 的文件。

最佳答案

我相信您期待 c# ConfigurationManager 的这个功能。您可能在应用程序启动后删除了 *.exe.config。 *.exe.config 在应用程序启动后不会被锁定或需要,除非您调用 configurationmanager.refreshsection() 方法。

Reloading configuration without restarting application using ConfigurationManager.RefreshSection

https://learn.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager.refreshsection?view=netframework-4.7.2

如果对您有帮助,请点个赞!

关于c# - 使 C# 控制台应用程序识别 .exe.config 文件中手动编辑的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53819406/

相关文章:

c# - WPF&MVVM : access to Controls from RelayCommand()

c# - 为什么 ValueTypes 在像 C#、Java 这样的面向对象语言中

c# - 创建新文件夹时如何复制安全信息?

php - 如何在不重新安装的情况下将 osticket 从一台服务器转移到另一台服务器?

python - 如何为Python脚本编写配置文件

c# - 如何从 tiff 图像中裁剪一部分

javascript - 用于显示实时消息控制台的 Django(Dajax/Jquery?)插件

c++ - 在 gtest 中显示失败的函数而不是宏

java - 用于控制台输入的 Java 扫描仪类的替代品

php - composer config 添加不带名称的存储库位置