Как переопределить задачу MsBuild «Построить решение» в Построить конвейер? - PullRequest
0 голосов
/ 05 июня 2019

В моем решении 2 веб-проекта. Когда я собираю их, используя задачу Build SOlution в Build Pipeline, я передаю MS Build Params как «/ p: PackageAsSingleFile = true». После завершения сборки я получаю оба проекта в виде Zip-файлов, как и ожидалось. Но когда я изменяю Param как "/ p: PackageAsSingleFile = false" и reBuild, я получаю только второй проект (в порядке сборки) в папке удаления.

Когда я сравнил файл журнала в обоих случаях, я нашел основную причину. Когда я устанавливаю параметр «/ p: PackageAsSingleFile = false», я вижу, что после создания первого проекта происходит событие «CleanWebsitesPackageCore», удаляя выходные данные сборки первого проекта в файле архива. После этого строится 2-й проект, в результате чего в окончательной папке удаления остается только один результат сборки проекта.

Как переопределить это событие или остановить его удаление? Веб-сайт Microsoft Docs не имеет ничего об этом. Очень плохая документация.


2019-06-03T18: 30: 35.8155256Z CleanWebsitesPackageCore:
2019-06-03T18: 30: 35.8155396Z Удаление каталога "d: \ a \ 4 \ b \ Archive".
2019-06-03T18: 30: 36.2608007Z CleanWebsitesPackage:
2019-06-03T18: 30: 36.2608223Z Удаление файла
"D: \ а \ 4 \ B \ Archive.SourceManifest.xml"
. 2019-06-03T18: 30: 36.2614576Z Удаление файла "d: \ a \ 4 \ b \ Archive.deploy.cmd".
2019-06-03T18: 30: 36.2619115Z Удаление файла "d: \ a \ 4 \ b \ Archive.deploy-readme.txt".
2019-06-03T18: 30: 36.2623864Z Удаление файла
"D: \ а \ 4 \ B \ Archive.SetParameters.xml"

.

Я хочу, чтобы Build производил 2 папки с выходом Build для каждой и не вызывал Delete.

1 Ответ

0 голосов
/ 05 июня 2019

Как переопределить задачу MsBuild «Построить решение» в конвейере сборки?

Когда мы проверяем файл Microsoft.Web.Publishing.targets , мы можем найти следующие сценарии:

  <PropertyGroup>
    <CleanWebsitesPackageCoreDependsOn Condition="'$(CleanWebsitesPackageCoreDependsOn)' == ''">
      GenerateMsDeployManifestSettings;
    </CleanWebsitesPackageCoreDependsOn>
  </PropertyGroup>

  <Target Name="CleanWebsitesPackageCore" DependsOnTargets="$(CleanWebsitesPackageCoreDependsOn)">
    <!--Assertion check-->
    <CheckItemsCount Items="@(_MSDeployPackageLocation)" Condition="$(EnablePackageProcessLoggingAndAssert)">
      <Output TaskParameter="Count" PropertyName="_InternalItemsCount" />
    </CheckItemsCount>

Итак, чтобы решить эту проблему, мы можем попытаться отключить эту цель для выполнения. Вы можете попробовать добавить параметр /p:CleanWebsitesPackageCoreDependsOn=False в аргументах MSBuild.

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

Надеюсь, это поможет.

...