2

私は Visual Studio 2005 を使用しており、「App.config」ファイルを使用して 1 つのアプリケーションを作成しました。そのApp.configファイルを編集して新しい値を追加しようとすると、エラーが表示されます助けてください..

私のapp.configファイルには以下が含まれています:

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
  <appSettings>
   <add key="keyvalue" value="value"/>
    <add key="keyvalue1" value="value1"/>
 </appSettings>
 <mySettings>
   <add name="myname" myvalue="value1"/>
 </mySettings>
</configuration>

次のようなエラーが表示されます。

Could not find schema information for the element "mySettings"
Could not find schema information for the element "add"
Could not find schema information for the element "myvalue"
4

2 に答える 2

6

「MySettings」グループを作成しないでください。必要なものは何でも AppSettings グループに入れます。

mySettings グループを作成できますが、カスタム (非標準) 構成セクションを含める場合は、ここまたはここで説明されているように configSections 要素で宣言する必要があります。

ただし、それが本当に必要かどうかは疑問ですが、カスタム セクションを追加する正当な理由がない限り、最初の回答を使用します。通常の基準に従う方がよいからです。これにより、将来のメンテナンス プログラマーが簡単になります。

于 2012-03-28T14:05:27.190 に答える
3

通常の構成ファイルの一部ではない新しいセクションを定義しています。

 <mySettings> 
   <add name="myname" myvalue="value1"/> 
 </mySettings> 

独自のセクションを組み込むには、特定のセクションを読むために何かを書く必要があります。次に、セクションを処理するハンドラーへの参照を次のように追加します。

<configuration>
    <configSections>
       <section name="mySettings" type="MyAssembly.MySettingsConfigurationHander, MyAssembly"/>
    </configSections>
    <!-- Same as before -->
</configuration>

サンプル コード サンプルは次のようになります。

public class MySettingsSection
{
     public IEnumerable<MySetting> MySettings { get;set; }
}

public class MySetting
{
    public string Name { get;set; }
    public string MyValue { get;set; }
}

public class MySettingsConfigurationHander : IConfigurationSectionHandler
{
     public object Create(XmlNode startNode)
     {
          var mySettingsSection = new MySettingsSection();

          mySettingsSection.MySettings = (from node in startNode.Descendents()
                                         select new MySetting
                                         {
                                            Name = node.Attribute("name"),
                                            MyValue = node.Attribute("myValue")
                                         }).ToList();

         return mySettingsSection;
     }
}

public class Program
{
    public static void Main()
    {
        var section = ConfigurationManager.GetSection("mySettings") as MySettingsSection;

        Console.WriteLine("Here are the settings for 'MySettings' :");

        foreach(var setting in section.MySettings)
        {
            Console.WriteLine("Name: {0}, MyValue: {1}", setting.Name, setting.MyValue);
        }
    }
}

構成ファイルを読み取る方法は他にもありますが、これはフリーハンドで入力する最も簡単な方法です。

于 2012-03-28T14:13:54.923 に答える