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

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

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


person Gonzalo    schedule 23.02.2011    source источник


Ответы (3)


Можно использовать преобразования 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>

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

person Enrico Campidoglio    schedule 23.02.2011
comment
Именно то, что мне нужно. Спасибо! - person Gonzalo; 23.02.2011
comment
Я тоже нашел это: frankmao.com/2011/07/15/, что, по-видимому, указывает на то, что это можно сделать для любого XML-файла. - person Kit; 01.08.2011
comment
Вместо того, чтобы делать это вручную, вы можете использовать visualstudiogallery.msdn.microsoft.com / - person Wouter de Kort♦; 27.12.2011
comment
Да, вместо этого следует использовать SlowCheetah - person Sayed Ibrahim Hashimi; 28.04.2012
comment
SlowCheetah, безусловно, является отличным решением, если вы не хотите вручную редактировать файл проекта. Однако для этого в порядок работать. Я бы сказал, что оба решения одинаково жизнеспособны в зависимости от требований или личных предпочтений. - person Enrico Campidoglio; 29.04.2012
comment
Единственное, что делает расширение VS, — это добавляет элементы меню в Visual Studio. В остальном все MSBuild. Поэтому, если вы не хотите, чтобы всем приходилось устанавливать расширение, вы можете просто проверить файлы, чтобы увидеть больше на sedodream.com/2011/12/12/. - person Sayed Ibrahim Hashimi; 30.04.2012
comment
SlowCheetah, по-видимому, ограничен трансформациями, привязанными к конфигурациям проекта, то есть App.Debug.config. Используя описание Энрико, я смог легко сделать то же самое для файлов, которые не соответствуют соглашению о конфигурации. Спасибо! - person galaktor; 21.08.2012

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

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

person Sayed Ibrahim Hashimi    schedule 30.01.2012

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

person Morten    schedule 23.02.2011
comment
Это хороший выбор, но я надеялся на решение Visual Studio (например, проект развертывания). Спасибо! - person Gonzalo; 23.02.2011