WedX - журнал о программировании и компьютерных науках

Как указать MSBuild публиковать множество веб-проектов в один каталог?

Я запускаю автоматические сборки с TFS 2010. В решении у меня есть несколько веб-приложений, которые все расположены в одном корневом каталоге, например:

Корневой каталог ->

   WebApplicationProject1.csproj
   WebApplicationProject2.csproj
   ...

Когда я запускаю автоматическую сборку, я устанавливаю следующие аргументы для MSBuild:

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;_PackageTempDir="\computer\Builds\Published" /p:SkipExtraFilesOnServer=true

Однако MSBuild не сохраняет существующее содержимое в этой папке, и с каждым проектом содержимое в этой папке удаляется. Последний проект, который будет построен, становится победителем.

Могу ли я заставить MSBuild не удалять содержимое в этой папке, а только заменять существующие файлы?

Спасибо за любую информацию по этому вопросу.

22.12.2010

Ответы:


1

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

04.01.2011

2

Вам нужно сообщить MSBuild о ваших нескольких целях

Пытаться

<Target Name="Build" DependsOnTargets="T1, T2">
</Target>

MSBuild позволяет вам определить цель по умолчанию и определить зависимости между вашими целями. Если значение по умолчанию не определено, выполняется первое найденное. Используя DefaultTargets, вы можете вызывать несколько:

<Project DefaultTargets="T1;T2">

Цель должна выполнить все один четко определенный шаг. Например, цель «Очистить» удалит все необходимые файлы и папки, необходимые для очистки проекта. Компиляция скомпилирует все библиотеки DLL и т. д.

Ваши цели обычно должны объявлять свои собственные зависимости:

<Target Name="CI" DependsOnTargets="T1, T2">
</Target>

В противном случае ваша цель должна содержать все отдельные шаги, которые вы хотите выполнить:

<Target Name="XX">
    <CallTarget Targets="T1"/>
    <CallTarget Targets="T2"/>
</Target>

если вы все еще сталкиваетесь с путаницей, перейдите по этой ссылке

06.01.2011
  • Привет @Анна, спасибо за ответ. Я не совсем понял, что нужно сделать. Ссылка тоже не помогла. Можете ли вы объяснить больше, пожалуйста? 18.01.2011

  • 3

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

    29.12.2010
  • Спасибо за ответ. Но я не хочу этого. Это означает иметь отдельные сборки в TFS. Я хочу, чтобы одна конфигурация сборки создавала несколько веб-проектов, которые сосуществуют в одном каталоге. При публикации я хочу, чтобы они также были опубликованы в одном каталоге. 30.12.2010
  • вы можете написать пакетный скрипт или что-то, что будет запускать все отдельные сборки, а затем копировать их. 30.12.2010

  • 4

    Кажется, это именно то, чего хочет Microsoft. Я обнаружил, что то же самое верно и в VS2008. Сборка проекта уничтожит всю папку, включая .svn.

    Мое решение состоит в том, чтобы создать событие после сборки, чтобы скопировать файлы из каждого места в общую папку. Это не идеально, но работает без серьезных зависаний, которые я обнаружил.

    04.01.2011
    Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]