Параметры приложения со ссылкой на библиотеку классов в app.config используются поверх ASP.NET MVC web.config? - PullRequest
0 голосов
/ 16 января 2019

Я поддерживаю проект ASP.NET MVC 4, который ссылается на многие библиотеки классов, которые имеют собственный app.config с настройками, управляемыми через интерфейс Settings.settings.Я прочитал много вопросов о переполнении стека и недавно этой статье и этом ТАКОМ вопросе.

Насколько я понимаю, Web.config веб-приложения в моемПроект MVC 4 будет то, что все проекты ссылаются на настройки.Вам просто нужно убедиться, что в основном классе web.config указаны те же настройки.

Поэтому я создал собственную библиотеку классов с настройками.У меня есть статический класс, который просто печатает информацию нижнего колонтитула для всех приложений:

public static class Footer
{
    public static string DatabaseEnvironment
    {
        get { return new DAL().GetCurrentEnvironment();}
    }
    public static string CurrentApplicationVersion
    {
        get { return Properties.Settings.Default.ApplicationVersion; }
    }
    public static string CurrentYear
    {
        get { return DateTime.Today.Year.ToString(); }
    }
}

В библиотеке классов я установил для параметра ApplicationVersion значение 0. Затем в приложении, ссылающемся на эту библиотеку, я установил правильныйверсия.Хорошо, когда я запускаю приложение, версия показывает 0. Я запутался, поскольку это подрывает все, что я читаю.Я действительно смущен относительно того, какой файл конфигурации имеет приоритет.Я не вижу файл app.config в папке bin или корневой папке проекта встроенного веб-приложения.Я установил точку останова для ссылочного проекта, чтобы увидеть настройки, и он показывает только три настройки, определенные в этом ссылочном проекте, а не те из web.config, которые, как я думал, будут отображаться.

Итак, разве класс Web.config в проекте MVC не имеет приоритета над определенными настройками библиотеки классов в файле app.config?

Обновление открытие Footer.dll, похоже, настройки в него компилируются?

Update2 Что ж, есть свойство GenerateDefaultValueInCode для каждого параметра в файле Settings.settings. Если для него задано значение true (значение по умолчанию), оно генерирует значение в коде.как описано.Предполагается, что это будет запасным значением, когда он не может найти ссылку в другом месте основного проекта.Я не уверен, на что ссылаются другие статьи, но использование пользовательского интерфейса Settings.settings, в котором параметр хранится в файле web.config или app.config, не приводит к ссылочным библиотекам классов, полагающимся на web.config основного файла.веб приложение.Я понимаю, что могу пойти другим путем, но для этого потребуется переработать многие библиотеки классов, чтобы придерживаться нового дизайна.Я надеялся на более прозрачное решение без большого изменения кода.Я также понимаю, что этот материал для некоторых может быть старой новостью, но из результатов поиска мне показалось, что все, что мне нужно было сделать, - это создать тот же параметр в web.config, чтобы переопределить параметры app.config.Я думаю, это не так просто.

Я пытаюсь избавиться от необходимости изменять многие настройки на производственные значения при развертывании на производство против Test.Но это оказывается больше работы, чем первоначально думали.

...