Для простоты я обычно разделяю большую часть своей конфигурации (т.е. содержимое 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", как вы думаете), похоже, что они никогда не могут найти эти внешние файлы в то время как тесты выполняются. Я попытался возиться с действиями post build, чтобы сделать эту работу, но не повезло. Есть ли способ, чтобы эти внешние файлы копировались в правильную папку вывода во время выполнения?