2015-12-14 158 views
1

使用此答案:https://stackoverflow.com/a/453230/3012708我想我已經成功實現了在我的C#應用​​程序中保存設置。使用Properties.Settings保存應用程序設置不起作用?

但是,節約似乎永遠不會發生 - 應用程序配置文件永遠不會更新,如果我添加一些代碼從SettingChangingEventHandler或SettingsSavingEventHandler調用,它永遠不會被調用。

我添加了上面引用的答案中描述的設置。 「User」範圍中有4個bool值,Access Modifier的設置保留在「Internal」處。

在我的代碼我呼籲:

Using MyApplication.Properties; 

然後設置設置 「間隔」,我做的:

Settings.Default.Interval = true; 

,並保存:

Settings.Default.Save(); 

如果我檢查MyApplication.exe.config文件,我看到設置在那裏,如:

<userSettings> 
    <MyApplication.Properties.Settings> 
     <setting name="Interval" serializeAs="String"> 
      <value>False</value> 
     </setting> 
    </MyApplication.Properties.Settings> 
</userSettings> 

但是,它仍然有它的原始值 - 錯誤。

任何想法?

我想沒有「使用...」的代碼,並使用完整的代碼更新:

MyApplication.Properties.Settings.Default.Interval = true; 
MyApplication.Properties.Settings.Default.Save(); 

我也嘗試運行的應用程序作爲管理員的Visual Studio之外 - 沒有運氣。

+2

確定沒有設置設置?注意:它們將被設置在用戶的配置文件下,而不是在解決方案文件夾中。一般在'c:\ Users \ \ AppData \ Local \ '(AppData是一個隱藏文件夾)。 – Matthew

+0

其他信息:面向.NET Framework 4.5 – user3012708

+0

@Matthew你實際上是完全正確的......我是如何忽略它的? 這是越來越晚我猜:/ 轉發,我會標記爲答案。 – user3012708

回答

3

確定沒有設置設置?注意:它們將被設置在用戶的配置文件下,而不是在解決方案文件夾中。一般在c:\Users\<username>\AppData\Local\<appname>(AppData是一個隱藏文件夾)。

3

MyApplication.exe.config是一個用於部署的文件。您正確地保存設置,但exe.config文件包含原始值,因此您沒有看到任何更改。

如果你想檢查它是否正確保存只寫

if(Properties.Settings.Default.Interval) 
{ 
    throw new Exception("Is True"); 
} 

從MSDN:

這些應用有兩個配置文件:一個源配置文件,它是由開發商在開發過程中修改,以及隨應用程序分發的輸出文件。

當你在Visual Studio中開發,將源配置文件在項目目錄您的應用程序,並設置其複製到輸出目錄屬性始終複製或是否有更新的複製。配置文件的名稱是擴展名爲.config的應用程序的名稱。例如,名爲myApp.exe的應用程序應該有一個名爲myApp.exe.config的源配置文件。

Visual Studio自動將源配置文件複製到編譯程序集所在的目錄,以創建與應用程序一起部署的輸出配置文件。在某些情況下,Visual Studio可能會修改輸出配置文件;有關更多信息,請參閱Redirecting Assembly Versions文章的應用程序級別部分中的重定向程序集版本。

+0

非常感謝! :) – user3012708