Создание проекта в VSTS не создает все проекты в решении

У меня странная проблема: когда я создаю сборку с помощью «Visual Studio Build» и предоставляю файл *.sln, он делает вид, что собирает все проекты (я вижу это в журнале), но когда дело доходит до публикации артефактов, есть только несколько проектов из решения (в основном тестовые проекты и некоторые разные проекты, но не основные). У меня есть отсортированные зависимости, так как эта сборка отлично работает в VS2015 (в настоящее время я использую WebDeploy). Кто-нибудь видел такое поведение?


person metase    schedule 28.06.2016    source источник


Ответы (2)


Поскольку вы упомянули «WebDeploy», я подозреваю, что вы создаете проект веб-приложения с некоторыми другими проектами в решении. Поведение, которое вы видите, обычно вызвано шаблоном определения сборки Visual Studio по умолчанию. При настройках по умолчанию этого шаблона задача «Копировать файлы» копирует файлы из папки «**\bin\$(BuildConfiguration)**» в папку «$(build.artifactstagingdirectory)», а затем публикует файлы в «$ (build.artifactstagingdirectory)". Но это не применимо к проекту веб-приложения.

Чтобы устранить эту проблему, добавьте следующие аргументы в раздел «Аргументы MSBuild» задачи «Сборка Visual Studio»:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"

Затем вы получите пакет развертывания в артефактах, и вы сможете развернуть его через веб-развертывание.

person Eddie Chen - MSFT    schedule 29.06.2016
comment
Привет, Эдди, я больше не хочу использовать WebDeploy и хотел бы, чтобы он собирал почти то же самое, что и при сборке в VS. - person metase; 29.06.2016
comment
@metase Итак, вам просто нужны выходные файлы dll для проекта? Вы разрабатываете проект веб-приложения? - person Eddie Chen - MSFT; 29.06.2016
comment
да, в значительной степени для создания развертываемого решения для IIS. Да, это проект веб-приложения - person metase; 29.06.2016
comment
@metase Какой метод вы хотите использовать для развертывания в IIS? - person Eddie Chen - MSFT; 30.06.2016
comment
ну, в идеале, просто скопируйте встроенные файлы, так как сайты IIS настроены - person metase; 30.06.2016
comment
@metase Затем просто добавьте аргументы /p:outdir=$(build.artifactstagingdirectory). - person Eddie Chen - MSFT; 30.06.2016
comment
Стоит отметить, что если у вас есть флаг /p PackageLocation..., вам не нужен дополнительный шаг копирования файлов в процессе сборки. - person Patrick Borkowicz; 17.04.2017

У меня тоже была такая проблема (или похожая?) Артефакты для основного проекта не публиковались, только тестовый проект.

При просмотре файла журнала я заметил две вещи.

  1. Скопированы только файлы из тестового проекта

  2. Задача «Копировать файлы в: $(build.artifactstagingdirectory)» искала содержимое с использованием подстановочного знака «\bin\release**», этот путь задается на шаге сборки «Копировать файлы» / «Содержимое» и «\bin\$(BuildConfiguration)**» по умолчанию, что соответствует вашей настройке в «Переменных» / «BuildConfiguration» в этом определении сборки.

Затем я просмотрел настройки проекта в Visual Studio, и по какой-то причине в основном проекте для параметра «Путь сборки / вывода / вывода» было установлено значение «bin \»; изменение этого на «bin\Release» для выпуска и «bin\Debug» для отладки решило мою проблему.

Решение?

а. Установите для параметра проекта VS "Путь сборки/вывода/вывода" значение "bin\Release"

б. (или измените шаг сборки VSTS «Копировать файлы» / «Контент» на «\bin», чтобы поймать все в корзине)

person JimiSweden    schedule 21.07.2016