2013-07-12 91 views
1

我創建了一個設置文件。修改app.config中的設置

有一個字段UseXmlPatternForTestServer,我是一個布爾。我將範圍設置爲appplication並將其值設置爲True。我可以看到它向.config文件添加了一些內容。

編譯經過修改build目錄config文件:

<configuration> 
    <applicationSettings> 
     ... 
     <Logic.Properties.Settings> 
      <setting name="UseXmlPatternForTestServer" serializeAs="String"> 
       <value>False</value> // **modified to false** 
      </setting> 
     </Logic.Properties.Settings> 
    </applicationSettings> 
</configuration> 

即使該值設置爲False,線下返回True。爲什麼?我怎樣才能從配置文件中獲取當前值?

Properties.Settings.Default.UseXmlPatternForTestServer // returns true 

編輯

上面的所有設置都是由我的應用程序所引用的類庫項目。也許這就是問題所在?

+1

右鍵單擊在解決方案資源管理器中的項目,然後單擊屬性的新標籤應該在中間打開,然後在標籤上左鍵點擊設置。看看那裏顯示的是什麼值,並確保它更新到你想要的值。它甚至可能會彈出,並說一個設置被修改,你想更新它或沿着這些線來。 – Bearcat9425

+0

它被設置爲True,因爲它應該是。事情是我想在構建之後手動將其更改爲false。 – gisek

+0

我相信將範圍設置爲應用程序會使值爲只讀。 – Logarr

回答

1

嘗試直接使用設置而不使用類庫項目,或者將UseXmlPatternForTestServer的範圍更改爲User而不是Application

User Settings in C#

1

我遇到同樣的問題,因爲範圍的「用戶」我沒有工作,要麼,我結束了創建我自己的XML配置,我可以序列化/反序列化和管理我怎麼想它成爲。 這也很好,因爲你可以在你的配置文件中存儲任何你想要的東西(例如對象列表)。


基本上你的模型可能是這個樣子:

public class Config 
{ 
    public string UseXmlPatternForTestServer {get;set;} 
    //your properties to store 

} 

串行類加載/保存您的配置:

public static class XmlConfigSerializer 
    { 

     public static Config DeSerialize() 
     { 
       try 
       {   
        if (!File.Exists("config.xml")) { return null; } 

        XmlSerializer serializer = new XmlSerializer(typeof(Config)); 
        using (var fs = new FileStream("config.xml", FileMode.Open)) 
        { 
         return (Config) serializer.Deserialize(fs); 
        }     
       } 
       catch (Exception ex) 
       { 
        //log error 
        return null; 
       } 
     } 

     public static void Serialize(Config config) 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(Config)); 
      using (var fs = new FileStream("config.xml", FileMode.Create)) 
      { 
       serializer.Serialize(fs, config); 
      } 
     } 
    }