Для простоты я обычно делю большую часть своей конфигурации (то есть содержимое app.config и web.config) на отдельные файлы .config, а затем ссылаюсь на них из основного файла конфигурации с помощью атрибута 'configSource'. Например:
<appSettings configSource="appSettings.config"/>
и затем помещает все пары ключ / значение в этот файл appSettings.config вместо того, чтобы встроить его в основной файл конфигурации:
<appSettings>
<add key="FirstKey" value="FirstValue"/>
<add key="SecondKey" value="SecondValue"/>
...
</appSettings>
Обычно это прекрасно работает с самим приложением, но я сталкиваюсь с проблемами при попытке написать модульные тесты, которые по какой-либо причине должны получить какое-то значение из раздела конфигурации, который хранится в одном из этих внешних файлов. (Я понимаю, что большинство из них можно было бы считать «интеграционными тестами», поскольку они полагаются на систему конфигурации, и у меня также есть «чистые модульные тесты», но это не проблема. Я действительно ищу проверить, правильно ли получены эти значения конфигурации и правильно ли влияет на поведение).
Из-за того, как MSTest компилирует и копирует выходные данные в запутанные папки, которые отличаются от каждого запуска теста (а не в папку «bin», как вы, возможно, думаете), он никогда не сможет найти эти внешние файлы пока выполняются тесты. Я попытался возиться с действиями после сборки, чтобы сделать эту работу, но безуспешно. Есть ли способ скопировать эти внешние файлы в правильную папку вывода во время выполнения?