Добавить жестко закодированную конфигурацию без файла app.config в какую-либо сборку - PullRequest
1 голос
/ 16 октября 2011

Мне нужно добавить информацию о конфигурации в саму сборку без включения в нее файла app.config. Как я могу это сделать?

EDIT: Мне нужно что-то вроде этого

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

Установить эту конфигурацию с жестко закодированной строкой в ​​качестве текущей конфигурации сборки

Ответы [ 2 ]

3 голосов
/ 16 октября 2011

Настройки конфигурации, будь то настройки пользователя или приложения, имеют значения по умолчанию, жестко заданные в сборке по умолчанию. Их можно переопределить, добавив 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 из развертывания вашего приложения, значения по умолчанию, которые вы указали при настройке параметров, жестко заданы.

Edit:

Только что заметил, что вы действительно хотите прочитать весь 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");
// ...
0 голосов
/ 16 октября 2011

у вас может быть собственный XML-файл, в котором вы сохраняете свои настройки, а затем устанавливаете его как встроенный ресурс, чтобы он был доступен внутри exe или dll.

см. Здесь: Как получитьвстроенный xml-ресурс? для примера о том, как читать его во время выполнения

Редактировать: и загрузить его как файл пользовательской конфигурации, проверьте здесь: Загрузка файлов пользовательской конфигурации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...