2

[プロジェクト] -> [プロパティ] -> [設定] タブに行を追加して、VS2010 の C# プロジェクトに設定を追加し始めました。Settings.settings ファイル (Settings.Designer.cs ファイルを含む) が [プロパティ] の下に自動的に生成されました。

しかし、コード内のいくつかの設定にアクセスしようとすると、ConfigurationManager.AppSettings["NameOfSetting"]常に null が返されます。AppSettings.Count は常に 0 です。さらに、bin フォルダーを確認したところ、プロジェクトをビルドすると、そこに MyProjectName.exe.config ファイルまたは app.config ファイルがありません。

VS プロジェクトの何が問題なのですか? 想定どおりに.exe.configファイルを強制的に作成するにはどうすればよいですか?

アップデート:

プロジェクトから app.config および Settings ファイルを完全に削除/削除し、プロジェクトのプロパティに 1 つの設定を再度追加して、最初から再作成しました。プロジェクトを再度ビルドすると、今度は ProjectName.exe.config ファイル\bin フォルダーにあります。しかし、私のコードでは同じ結果が得られます: ConfigurationManager.AppSettings["MySetting"] は null で、AppSettings.Count = 0 です。

プロジェクト フォルダーにある自動生成された app.config ファイルは、ビルドで作成された Project.exe.config ファイルと同じです。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="MyDarnProject.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
</configSections>
<applicationSettings>
    <MyDarnProject.Properties.Settings>
        <setting name="MySetting" serializeAs="String">
            <value>21937058</value>
        </setting>
    </MyDarnProject.Properties.Settings>
</applicationSettings>
</configuration>

要素の名前が、予想どおりの appSettings ではなく、applicationSettings であることに気付きました。<add key="MySetting" value="21937058"/>そして、他の例のようなものではなく、要素と子要素を使用して、設定自体がまったく異なります。Visual Studio Professional 2010、バージョン 10.0.40219.1 SP1Rel を使用しています

Settings.Designer.cs コードには、以下に示す例とまったく同じものがすべて含まれていますが、get に使用するセットがないことを除いて、それは大したことではないと思います。

[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("21937058")]
public long MySetting {
    get {
        return ((long)(this["MySetting"]));
    }
}

MyProject.Properties.Settings.Default.MySetting設定値にアクセスします! だから私はそのようにしなければならないかもしれないと思います。これまでに作成した他のすべてのプロジェクトと同じように、プロジェクトが ProjectName.exe.config ファイルをビルドしない理由がまだわからないため、回避策を検討します。

4

3 に答える 3

3

このプロパティから取得します。

YourAppNamespace.Properties.Settings.Default.NameOfSetting

Settings.Designer.csファイルを詳しく見ると、値を参照する方法を簡単に確認できます。

namespace YourAppNamespace.Properties {


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

        public static Settings Default {
            get {
                return defaultInstance;
            }
        }

        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("asas")]
        public string NameOfSetting {
            get {
                return ((string)(this["NameOfSetting"]));
            }
            set {
                this["NameOfSetting"] = value;
            }
        }
    }
}
于 2012-12-05T23:33:34.477 に答える
0

あなたが持っていることを確認してくださいApp.configファイルのセクション

ここにあなたが従うことができる例があります

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="somesetting" value="7"/>
    <add key="somelocation"  value="abc.txt"/>
  </appSettings>
</configuration>

you read the above using code shown below

string configvalue1 = ConfigurationManager.AppSettings["somesetting"];
string configvalue2 = ConfigurationManager.AppSettings["somelocation"];

設定内のプロパティにアクセスしたい場合は、これを行うことができます

Properties.Settings.Default.<Your_Setting_Name>
于 2012-12-05T23:35:22.327 に答える
0
var value = ConfigurationManager.AppSettings["NameOfSetting"]

ファイル内の<appSettings>セクションを探しますApp.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="NameOfSetting" value="Foo"/>
  </appSettings>
</configuration>

ファイル使用の設定にアクセスするにSettings.settingsは (Visual Studio は、プロジェクトのフォルダーにあるクラスの名前空間を解決するのに役立ちます) Settings。クラスには、[プロジェクト] -> [プロパティ] -> [設定] タブに追加したすべての行の厳密に型指定されたプロパティがあります。PropertiesSettings

var value = Settings.Default.NameOfSetting;
于 2012-12-05T23:32:34.880 に答える