App.Config игнорируется после события перед сборкой - PullRequest
2 голосов
/ 16 марта 2011

У меня есть решение с несколькими проектами и несколькими разработчиками, каждый со своей средой (конечно).Чтобы управлять строками соединения между каждой средой, я создал несколько файлов app.config для каждой среды: app.config.dev, app.config.qa и т. Д.

Событие предварительной сборки просто копирует приложение.config. $ (имя_конфигурации) в app.config.Это событие предварительной сборки выполняется для каждого проекта в решении, и строка подключения включается в каждый (включая тестовый проект).

Когда я использую события предварительной сборки для управления файлами app.config, строка подключения не может быть найдена.Я могу заставить тесты нормально запускаться двумя способами: 1. Не используйте события предварительной сборки для управления выбором файла app.config и делайте это самостоятельно или 2. Если я проверяю app.config и делаю его доступным для записи,тогда события перед сборкой работают просто отлично.

Мы используем Visual Studio 2008 с VSS.

Я дошел до последних седых волос, есть идеи?Заранее спасибо!

РЕШЕНИЕ Обновите событие предварительной сборки, чтобы обеспечить возможность записи файла app.config, даже если он отмечен. Событие предварительной сборки используется ниже:
@echo off

attrib -r $(ProjectDir)app.config
if errorlevel 1 goto AttribFailed

copy $(ProjectDir)app.config.$(ConfigurationName) $(ProjectDir)app.config
goto BuildOK

:AttribFailed
echo Attrib -r Failed on $(ProjectDir)app.config
exit 1

:BuildOK
echo Copy Done

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Оставление отмеченных файлов .config имеет один побочный эффект, файлы остаются только для чтения.Который имеет один побочный эффект, вы не можете скопировать файл поверх файла только для чтения, и вы не можете удалить его.Что в значительной степени объясняет, почему вы не можете заставить это работать.

1 голос
/ 16 марта 2011

Похоже, ваш app.config не должен находиться под контролем исходного кода - только файлы конфигурации, специфичные для конфигурации сборки (app.config.dev, app.config.qa и т. Д.).

Сказав это, вы можете сделать зарегистрированные файлы доступными для записи в VSS.Например, с помощью проводника Windows снимите флажок атрибута «Только для чтения» файла.(Вы должны будете делать это каждый раз, когда регистрируетесь.)

...