[プロジェクト] -> [プロパティ] -> [設定] タブに行を追加して、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 ファイルをビルドしない理由がまだわからないため、回避策を検討します。