将没有app.config文件的硬编码配置添加到某个程序集

时间:2011-10-16 16:53:33

标签: c# .net configuration configuration-files

我需要将配置信息添加到程序集本身,而不包含其app.config文件。 我该怎么办?

修改 我需要这样的东西

 string config = @"<?xml version='1.0' encoding='utf-8'?>
                   <configuration> 
                    .
                    .
                    .
                    .
                   </configuration>";

将此硬编码字符串配置设置为当前程序集配置

2 个答案:

答案 0 :(得分:3)

配置设置是用户或应用程序设置默认情况下在程序集中默认值为“硬编码”。可以通过包含app.config或在运行时修改用户设置并保存到用户配置文件来覆盖它们。

创建项目设置后(在项目属性中并转到“设置”选项卡),将生成一个Settings类,其中包含您配置的默认值的静态属性。

它们可以在整个装配过程中访问,如下所示:

Assert.AreEqual(Properties.Settings.MySetting, "MyDefaultValue");

可以通过app.config重写这些默认值:

<applicationSettings>
    <MyProject.Properties.Settings>
        <setting name="MySetting" serializeAs="String">
            <value>MyDefaultValue</value>
        </setting>
    </MyProject.Properties.Settings>
</applicationSettings>

要回答您的问题:您可以省略从应用程序部署中包含app.config,配置设置时提供的默认值是硬编码的。

修改

注意到你确实想从程序集中读取整个 app.config。 可能的方法如下:

// 1. Create a temporary file
string fileName = Path.GetTempFileName();
// 2. Write the contents of your app.config to that file
File.WriteAllText(fileName, Properties.Settings.Default.DefaultConfiguration);
// 3. Set the default configuration file for this application to that file
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", fileName);
// 4. Refresh the sections you wish to reload
ConfigurationManager.RefreshSection("AppSettings");
ConfigurationManager.RefreshSection("connectionStrings");
// ...

答案 1 :(得分:0)

您可以在自定义XML文件中存储设置,然后将其设置为嵌入式资源,以便在exe或dll中可用。

请参阅此处:How can I retrieve an embedded xml resource?以获取有关如何在运行时读取它的示例

修改并将其作为自定义配置文件加载,请点击此处:Loading custom configuration files