[英]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重新加載配置而不重新啟動應用程序
豎起大拇指並標記它是否有幫助!
在生產代碼中完成此操作的方式是,我已將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.