Проблема с Team Build 2010 и преобразованием web.config - PullRequest
4 голосов
/ 25 ноября 2010

Я изо всех сил стараюсь, чтобы преобразования web.config работали с автоматическими сборками.

У нас есть достаточно большое решение, содержащее одно веб-приложение ASP.NET и восемь библиотек классов.Над проектом работают три разработчика, и до сих пор каждый из них «опубликовал» решение в локальной папке, а затем использовал копию файла для развертывания на тестовом сервере.Я пытаюсь внедрить автоматизированное решение для сборки / развертывания с использованием TFS 2010.

Я создал определение сборки и добавил вызов msdeploy.exe в шаблон процесса сборки, чтобы приложение было развернуто натестовый сервер.Пока все хорошо!

Затем я попытался реализовать преобразования web.config, и я просто не могу заставить их работать.Если я собираю и публикую локально на моем ПК, в папке «publish» будет правильный преобразованный файл web.config.

При использовании команды build преобразование просто не происходит, и у меня просто есть базовая сеть.файл конфигурации.

Я попытался добавить шаг после сборки в файл проекта веб-приложения, как предлагали другие, аналогично:

<target name="AfterBuild">
<TransformXml Source="Web.generic.config"
             Transform="$(ProjectConfigTransformFileName)"
             Destination="Web.Config" />
</target>

, но это не удалось из-за исходного web.configВ файле есть раздел «applicationSettings».Я получаю сообщение об ошибке

Не удалось найти информацию о схеме для элемента applicationSettings.

Я видел предположения о добавлении аргументов в задачу MSBuild в определении сборкикак

/t:TransformWebConfig /p:Configuration=Debug

Но это происходит, когда создаются проекты библиотеки классов, предположительно потому, что у них нет файла web.config.

Есть идеи?Как и другие, я думал, что это будет «просто работать», но, видимо, нет.Это последняя часть, которая мне нужна, чтобы работать, и это сводит меня с ума.Я не эксперт по MSBild, поэтому просто и понятно, пожалуйста!

Заранее спасибо.

Doug

Ответы [ 2 ]

3 голосов
/ 01 декабря 2010

Я только что прошел это.Наша сборка была немного более сложной, так как у нас есть 8 библиотек классов и 9 веб-приложений в одном решении.Но поток тот же.

Прежде всего избавьтесь от своей цели после сборки.Вам это не понадобится.

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

Обратите внимание, что рассматриваемый сервер ДОЛЖЕН быть правильно настроен с правильными правами пользователя.Следующие сайты помогли мне настроить это правильно.

http://william.jerla.me/post/2010/03/20/Configuring-MSDeploy-in-IIS-7.aspx
http://vishaljoshi.blogspot.com/2010/11/team-build-web-deployment-web-deploy-vs.html
Как мне заставить TFS2010 запускать MSDEPLOY для меня через MSBUILD?

Следующая часть требует, чтобы в вашем определении сборки были установлены правильные параметры MSBuild для публикации.Эти параметры вводятся в строке Process> 3.Advanced> MS Build Arguments определения сборки.Вот подсказка:

(don't change the following for any reason)
/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=False 
/p:MSDeployPublishMethod=WMSVC 
/p:SkipExtraFilesOnServer=True
/p:AllowUntrustedCertificate=True 

(These control where it's going)

/p:MSDeployServiceUrl="https://testserver.domain:8172/msdeploy.axd" 
/p:UserName=testserver\buildaccount 
/p:Password=buildacctpassword 
/p:DeployIisAppPath="MyApp - TESTING" 

Очевидно, что пользователь должен будет настроить IIS на целевом сервере, чтобы ему был разрешен доступ к этому аксоду (см. Предыдущие ссылки).И IisAppPath - это имя веб-сайта на целевом сервере.

Вам не нужно будет делать ничего особенного для преобразований конфигурации, поскольку сама сборка позаботится об этом за вас.Просто укажите правильную настройку в строке «Процесс»> «1. Требуется»> «Элементы для сборки»> «Конфигурации для сборки».

1 голос
/ 01 декабря 2010

Вместо того чтобы пытаться выполнить развертывание, добавляя задачи самостоятельно в шаблон процесса сборки, я последовал совету в блоге Вишала Джоши здесь .

Теперь весь проект собран и развернут, также работают преобразования web.config. Brilliant!

Теперь мне нужно решить еще одну проблему! Веб-приложение ссылается на веб-сервисы, и процесс сборки приводит к созданию библиотеки DLL XmlSerializer. Тем не менее, хотя он построен нормально, он не развертывается на веб-хосте. Я думаю, что для этого нужен новый пост!

Doug

...