Я сам не тестировал этот метод, но вам может пригодиться маленький трюк Эрика де Каруфеля:
http://blog.decarufel.net/2007/10/getting-access-to-settings-in-another.html
Исходная ссылка кажется мертвой, поскольку он перешел на новый блог и удалил старый контент.
Оригинальный контент ниже:
Получение доступа к настройкам в другом проекте
Четверг, 25 октября 2007 г.
Одной из новых интересных функций Visual Studio 2005 является новый редактор свойств. С помощью этого редактора свойств вы можете легко добавить настройки в ваше приложение. Но проблема заключается в том, как это происходит. Позвольте мне объяснить вам, почему.
Обычно настройки относятся к конкретному проекту. Когда вы добавляете параметр в проект, специальный пользовательский инструмент, связанный с файлом настроек, генерирует новый класс, который вы можете использовать для доступа к нему. Что хорошего в этом классе, так это его строгая типизация. Но за кулисами он просто получает ключ из XML-файла. Этот сгенерированный класс установлен как «внутренне запечатанный». Это предотвращает доступ к любой другой сборке. Что делать, если вы хотите централизовать, где вы редактируете эти настройки.
После многих попыток разоблачить его я нашел быстрый и легкий способ сделать это. Допустим, у нас есть 2 проекта в нашем решении: Engine и WinApp. У каждого есть настройки, но мы хотим, чтобы они были редактируемыми из WinApp. Вот как это выглядит.
Если вы хотите получить доступ к настройкам движка, вот вам хитрость: Добавьте файл ссылки.
Файл ссылки будет скомпилирован как часть вашего проекта WinApp. Класс настройки будет по-прежнему внутренним и закрытым, но для проекта WinApp вместо Engine.
Вот окончательный результат:
Обратите внимание, что я добавляю фоллер с тем же именем, что и мой проект Engine. Это будет полезно, если вы хотите добавить настройки из многих проектов.
Имея это, вы можете получить доступ к своему движку, устанавливая путь от вашего класса движка как от вашего класса WinApp. Вы можете опустить часть «Engine» в вашем классе двигателя, потому что вы должны находиться в том же пространстве имен. Вот как это должно выглядеть:
namespace WinApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void AccessConfig()
{
Engine.Properties.Settings.Default.EngineSetting = "test";
}
}
}