簡體   English   中英

使C#控制台應用程序識別.exe.config文件中的手動編輯的更改

[英]Make C# Console App recognize manually edited changes in .exe.config file

我成功編寫了一個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中打開項目並在本地進行編輯。

那可能嗎?

編輯:

響應於我創建的設置以及獲取文件夾路徑的代碼的請求,請參見下圖:

在這里查看設置 這是代碼:

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()方法。

使用ConfigurationManager.RefreshSection重新加載配置而不重新啟動應用程序

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

豎起大拇指並標記它是否有幫助!

在生產代碼中完成此操作的方式是,我已將Visual Studios添加到App.config ,並使其具有以下格式:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
        <add key="AConnection" value="127.0.0.1"/>
        <add key="Folder01" value="L:\Path\To\A\Thing"/>
        <add key="Folder02" value="L:\Path\To\ASecond\Thing"/>
        <add key="Folder03" value="L:\Path\To\AThird\Thing"/>
        <add key="Folder04" value="L:\Path\To\AFourth\Thing"/>
  </appSettings>
</configuration>

其中<add key="" value="">是您希望為其命名的名稱,而value s是指向正確文件的路徑。


分配:

然后可以將它們分配給變量:

string conStr = ConfiurationManager.AppSettings["AConnection"];
string strFolder1 = ConfigurationManager.AppSettings["Folder01"];
string strFolder2 = ConfigurationManager.AppSettings["Folder02"];
string strFolder3 = ConfigurationManager.AppSettings["Folder03"];
string strFolder4 = ConfigurationManager.AppSettings["Folder04"];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM