Я помогаю команде, чьи сборки начали сбой из-за сбоев теста.Откуда эта конфигурация?
Ошибки вызваны отсутствием конфигурации строки подключения. Я проверил обычные проблемы в отношении файла конфигурации, чтобы убедиться, что строка соединения была указана именно с правильным именем.
В конце концов я получил полный путь к файлу конфигурации, чтобы проверить, что на сервере сборки содержится точная конфигурация, которая ожидалась.
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
Путь не указывает на файл TestProject.exe.config
, но вместо этого указал на vstest.executionengine.x86.exe.Config
по следующему адресу:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.x86.exe.Config
Этот файл не содержит строк подключения на всех.
Когда я пишу из всех доступных строк подключения от конфигурации, я получаю строку соединения по умолчанию:
Имя: LocalSqlServer подключения:. Источник данных = \ SQLEXPRESS Интегрированное Security = SSPI; AttachDBFilename = | DataDirectory | aspnetdb.mdf; Пользователь Экземпляр = истина. Прекращение выполнения теста.
Это файл machine.config
(kudos petelids).
Так что большой вопрос:
Почему vstest.executionengine.x86.exe.Config
используется, а не app.config
(во время выполнения TestProject.exe.config
)? (Я могу догадаться, что это связано с тем, что запущен процесс - это тестовый бегун, но я считаю справедливым сказать, что вы ожидаете, что тестирующее средство предложит тестовому проекту использовать собственный конфигурационный файл, что обычно происходит).
Как правило, может быть определено, что оно определено в реестре –
Возможно, он исходит из файла machine.config? - '% windir% \ Microsoft.NET \ Framework \ [версия] \ config \ machine.config' или'% windir% \ Microsoft.NET \ Framework64 \ [версия] \ config \ machine.config' для 64-битного – petelids
@ petelids - пятно сверху. Он использует это потому, что в 'vstest.executionengine.x86.exe.Config' нет строки соединения, поэтому почему же он использует' vstest.executionengine.x86.exe.Config', а не app.config для теста проект? – Fenton