Я пытаюсь переключить нашу сборку с CruiseControl.NET, запускающей собственный файл .msbuild для Team Build 2010. Скомпилированное приложение представляет собой решение VS2008 с многочисленными проектами, два из которых являются веб-проектами.Как мне заставить Team Build 2010 публиковать веб-приложения как не обновляемые?
Использование DefaultTemplate.xaml, кажется, что два веб-проекта развернуты до Binaries\_PublishedWebsites\(ProjectName)
. Это местоположение по умолчанию прекрасное. Однако содержимое выходных каталогов представляется обновляемым, как будто aspnet_compiler.exe
был вызван с -u
или как если бы задача MSBuild <AspNetCompiler>
использовалась с Updateable="true"
. Итак, два вопроса:
- Как создать сборку Team Build для вывода не обновляемого вывода в каталог
_PublishedWebsites
? Как я могу также установить IIS виртуальный_путь, как если бы я делал следующее в задаче MSBuild:
<AspNetCompiler Clean="true" Force="true" VirtualPath="/My-IIS-Virtual-Path" />
я нашел в более раннем устранении неполадок, что единственный способ, которым я могу получить IIS 6 к обслуживать веб-службу, скомпилированную с aspnet_compiler.exe
в не обновляемом режиме, является указание виртуального пути в команде, поэтому я спрашиваю о # 2.
Edit:
Увидев один ответ до сих пор, я понял, что я должен был быть гораздо яснее, о чем речь идет. Я понимаю, что если я могу что-то сделать в MSBuild, я могу просто вызвать MSBuild из шаблона сборки. Тем не менее, мне интересно узнать, как изменить то, что происходит, чтобы скопировать вывод в каталог _PublishedWebsites
. «Найти задачу, которая копирует веб-сайт и изменить ее», будет работать хорошо, за исключением того, что я не вижу, что на самом деле копирует вывод в _PublishedWebsites
. То, что я действительно хочу сделать, - это изменить шаг в шаблоне, который это выполнит.
В журнале сборки указан объект компиляции с именем _CopyWebApplication
, который, как представляется, выполняет работу по копированию файлов, необходимых для веб-приложения. Однако я не уверен, как изменить эту цель компиляции, поскольку я не вижу ее нигде в шаблоне сборки и ни в одном файле в решении. Кроме того, все, что запускается _CopyWebApplication
, похоже, работает только для проектов веб-приложений, а не для многих других проектов в решении. Это хорошо, за исключением того, что я не знаю, где существует логика, которая определяет, следует ли использовать _CopyWebApplication
.
Возможно, есть файл MSBuild по умолчанию, который мне не хватает? Какой параметр сборки я могу использовать? Как изменить вышеупомянутый шаг сборки?
Теперь мы добираемся куда-нибудь, но возможно ли изменить флаги по умолчанию, не редактируя файл? Я бы подумал, что использование '/ p: Disable_CopyWebApplication = True' в качестве параметра MSBuild будет делать трюк, но до сих пор, независимо от того, где я пытался установить параметр, он не остановил цель' _CopyWebApplication'. Остановить его _might_ будет приемлемым, потому что тогда было бы проще просто добавить шаг MSBuild после всей компиляции, чтобы сделать AspNetCompile. – Andrew
'Disable_CopyWebApplication = True' предотвращает публикацию веб-приложения. Вы уверены, что двоичные файлы, которые вы видите, не из предыдущего запуска? Также попробуйте передать 'IsDesktopBuild = True' – KMoraz
Нашел часть проблемы в еще одном тестировании ... Team Build использует целевой файл v9.0, а не v10.0. Это имеет смысл, поскольку это решение VS2008. На первый взгляд, я не вижу аналогичного параметра. – Andrew