Чтобы обработать настройки для различных целей развертывания, я переместил настройки приложения из app.config в его собственный файл и включил этот файл в app.config через configSource. Я также создал файл настроек для каждой цели. Вот иллюстрация:
Project A
app.config (references settings.config)
settings.config
settings.Release.config
settings.Debug.config
Во время пост-сборки я копирую соответствующие настройки. {Configuration} .config в выходной каталог. Пока это работает нормально, и я вижу файл settings.config в выходном каталоге проекта, содержащий настройки для текущей конфигурации сборки: Release, Debug и т. Д.
Однако у меня проблема с проектом установки, который у меня есть для этого проекта (Проект A). Первоначально, это не был файл settings.config. Поэтому я установил действие сборки для файла settings.config как Content и добавил файлы содержимого из Project A в проект установки. Это гарантировало, что файл settings.config был включен в настройку. Однако, поскольку проект установки, по-видимому, выбирает файл settings.config из каталога проекта, а не из выходного каталога, файл settings.config, включенный в установку, не является тем, чем он должен быть. Я хочу, чтобы один из выходного каталога был включен в программу установки, так как он является правильным для текущей конфигурации сборки. Я попробовал следующее:
- Добавлен файл settings.config в виде файла в проект установки. Тем не менее, похоже, что я могу указать только абсолютный путь. Поэтому, когда я добавляю его из выходного каталога конкретной конфигурации сборки (..bin \ debug \ settings.config), он не работает в другой конфигурации сборки, поскольку (..bin \ debug \ settings.config) существует в указанная директория Я рассмотрел использование относительных или динамических путей в проекте установки, где конфигурация сборки может быть указана как часть пути, но я не смог ничего найти.
Я подумал об использовании события предварительной сборки, чтобы фактически изменить файл settings.config в каталоге проекта, а затем скопировать его в выходной каталог, установив его «Копировать в выходной каталог», чтобы всегда копировать или копировать, если он более новый. Это должно гарантировать, что соответствующий файл settings.config будет скопирован в выходной каталог точно так же, как решение после сборки, а также должен убедиться, что содержимое файла settings.config обновлено до его включения в проект установки. Однако мне не нравится это решение, потому что я должен убедиться, что файл settings.config доступен для записи, прежде чем я смогу внести какие-либо изменения, так как он контролируется исходным кодом. Если он доступен только для чтения, мне нужно перевернуть его для записи, внести изменения, а затем снова установить для чтения. Это добавляет дополнительную сложность.
Мне было интересно, если у кого-нибудь есть идея получше или она знает хитрость проекта установки, которая позволяет мне включить файл settings.config, соответствующий текущей конфигурации сборки, в программу установки.
Спасибо