Под публикацией я подразумеваю создание каталога со всем кодом приложения Windows, аналогично тому, как веб-приложение публикуется в выделенном каталоге в $(OutDir)\_PublishedWebsites
, когда код создается с данным каталогом (т.е. OutDir являетсяпередано в сборку).
Сейчас я, по сути, «украл» код публикации из Microsoft.WebApplication.targets
и поместил его в наш собственный файл целей, который импортирует проект приложения Windows.Таким образом, мы публикуем некоторые из наших оконных приложений и модульных тестов в специальных каталогах - _PublishedApplications и _UnitTests.
Интересно, как другие решают ту же проблему - вы создаете код с помощью каталога shared bin (используя параметр сборки OutDir) ихочу публиковать материалы, которые не являются веб-приложениями.
РЕДАКТИРОВАТЬ 1
Позвольте мне уточнить.На сервере сборки решение встраивается в общую папку bin.Это связано с тем, что сборка CI устанавливает для свойства сборки OutDir
какое-то значение.Поскольку это значение является общим для всех проектов в решении, все они помещают свои продукты сборки в этот каталог.Для веб-приложения X это означает, что под ним больше нет папки bin.Для проекта библиотеки / exe это означает, что в нем больше нет bin \ Debug (или bin \ Release).Все идет в эту общую корзину.
Однако веб-приложение получает специальную обработку.Как только его продукты сборки помещаются в эту общую корзину, msbuild вызывает цели из Microsoft.WebApplication.targets
, что делает следующее:
- Создает папку
_PublishedWebsites\X
в каталоге общей корзины - Копирует все двоичные файлы, необходимые веб-приложению, в
_PublishedWebsites\X\bin
- Копирует все файлы содержимого, необходимые веб-приложению, в
_PublishedWebsites\X
- Копирует любые другие файлы по мере необходимости либо в
_PublishedWebsites\X
или _PublishedWebsites\X\bin
Это то, что я называю публикацией.На самом деле это не публикация на веб-сервере, это скорее упаковка для развертывания.
Мне нужно то же самое для не веб-приложений.Я реализовал это, создав свой собственный файл целей и по сути продублировав логику Microsoft.WebApplication.targets
, но я не могу быть единственным, кому это нужно, и что все остальные делают то же самое.Должно быть лучше.