Замены App.config для модульных тестов

мой сервер непрерывной интеграции (TeamCity) настроен для запуска всех модульных тестов в нашем приложении при сборке. Перед запуском этих тестов мне нужно изменить некоторые из параметров приложения, чтобы сделать их действительными для нашего CI-сервера. Я добился чего-то подобного для моего веб-проекта, используя проект развертывания, предоставляемый Visual Studio. Могу ли я сделать то же самое для тестового проекта?

Спасибо, Гонсало

Ответ 1

Возможно, использовать преобразования Web.config для файлов App.config с помощью обходного пути.

Вам просто нужно вызывать соответствующие задачи MSBuild на правильной стадии процесса сборки.
Добавьте этот фрагмент кода в файл проекта:

<UsingTask
    TaskName="TransformXml"
    AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

<Target Name="AfterCompile" Condition="exists('App.$(Configuration).config')">
    <!-- Generates the transformed App.config in the intermediate directory -->
    <TransformXml
        Source="App.config"
        Destination="$(IntermediateOutputPath)$(TargetFileName).config"
        Transform="App.$(Configuration).config" />
    <!-- Forces the build process to use the transformed configuration file -->
    <ItemGroup>
        <AppConfigWithTargetPath Remove="App.config"/>
        <AppConfigWithTargetPath
            Include="$(IntermediateOutputPath)$(TargetFileName).config">
            <TargetPath>$(TargetFileName).config</TargetPath>
        </AppConfigWithTargetPath>
    </ItemGroup>
</Target>

Затем добавьте дополнительные файлы App.config в ваш проект для каждой конфигурации сборки, где вы хотите применить преобразование. Например:

<ItemGroup>
    <None Include="App.config" />
    <None Include="App.Release.config">
        <DependentUpon>App.config</DependentUpon>
    </None>
</ItemGroup>

Связанные ресурсы:

Ответ 2

Я создал добавление Visual Studio, в котором можно использовать для преобразования app.config таким же образом, что и web.config. Вы можете найти надстройку, SlowCheetah, в http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5.

Я разместил блог о том, как также получить эту работу на сервере сборки.

Ответ 3

Я предлагаю вам обернуть ваши поиски в config, извлечь интерфейс и заглушить это при тестировании.