Как опубликовать приложение для Windows так, как веб-приложение публикуется в .NET? - PullRequest
0 голосов
/ 04 декабря 2018

Под публикацией я подразумеваю создание каталога со всем кодом приложения 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, что делает следующее:

  1. Создает папку _PublishedWebsites\X в каталоге общей корзины
  2. Копирует все двоичные файлы, необходимые веб-приложению, в _PublishedWebsites\X\bin
  3. Копирует все файлы содержимого, необходимые веб-приложению, в _PublishedWebsites\X
  4. Копирует любые другие файлы по мере необходимости либо в _PublishedWebsites\X или _PublishedWebsites\X\bin

Это то, что я называю публикацией.На самом деле это не публикация на веб-сервере, это скорее упаковка для развертывания.

Мне нужно то же самое для не веб-приложений.Я реализовал это, создав свой собственный файл целей и по сути продублировав логику Microsoft.WebApplication.targets, но я не могу быть единственным, кому это нужно, и что все остальные делают то же самое.Должно быть лучше.

1 Ответ

0 голосов
/ 04 января 2019

С помощью dotnet все просто - используйте команду публикации.

Это будет та же самая командная строка, что и для dotnet build, только замените build на publish.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...