Я пытаюсь использовать преобразования конфигурации в непрерывной среде интеграции.
Мне нужен способ сказать агенту сборки TFS выполнять преобразования. Я был видом надежды, что он будет просто работать после обнаружения, что конфигурация преобразовывает файлы (web.qa-release.config, web.production-release.config, и т.д....). Но это не делает.
У меня есть определение сборки TFS, которое создает правильные конфигурации (быстродействующий выпуск, производственный выпуск, и т.д....), и у меня есть некоторые определенные .proj файлы, которые создаются в рамках этих определений, и они содержат некоторую среду определенные параметры, например:
qa.web
...
production.web
...
Я знаю от вывода, что корректные конфигурации создаются. Теперь я просто должен изучить, как инициировать преобразования конфигурации. Есть ли некоторый фокус-покус, который я могу добавить к финалу .proj в сборке, чтобы начать преобразование и сдуть отдельные файлы преобразования?
Все, что вам нужно сделать, это настроить, какая конфигурация должна использоваться в определении сборки TFS.
В моем случае я установил конфигурацию специально для CI, которая затем выполняет правильные преобразования web.config. Убедитесь, что вы добавили файл преобразования "CI", и все будет готово.
Мне наконец удалось заставить это работать. Я использую TFS 2008, но также использую MSBuild 4.0, поэтому он должен работать на вас.
Сначала добавьте этот импорт в TFSBuild.proj:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
Затем добавьте цель BeforeDropBuild:
<Target Name="BeforeDropBuild">
<TransformXml Source="$(SolutionRoot)\MySite\Web.config"
Transform="$(SolutionRoot)\MySite\Web.QA.config"
Destination="$(OutDir)\_PublishedWebsites\MySite\Web.QA.config.transformed" />
</Target>
Затем вы можете скопировать Web.QA.config.transformed туда, куда вам нужно.