Использование Azure предопределенной переменной в файле .pub xml в Azure конвейере YAML - PullRequest
0 голосов
/ 29 января 2020

У меня есть конвейер YAML, который создает и публикует проект CS. Я попытался поместить предопределенную переменную в профиле publi sh, однако он выдает ошибку. Я хотел бы, чтобы опубликованные файлы помещались в папку $(Build.ArtifactStagingDirectory), чтобы я мог использовать задачу Publi sh Build Artifact.

Я не уверен, почему при запуске в каталоге агента переменная в профиле publi sh не работает должным образом.

Ошибка:

Ошибка MSB4184: выражение "" ".ArtifactStagingDirectory" не может быть оценены. Метод 'System.String.ArtifactStagingDirectory' не найден

YAML:

  - task: MSBuild@1
    displayName: '${{ parameters.Site }} - Publish'
    inputs:
      solution: '*${{ parameters.Location }}/${{ parameters.Site }}.csproj'
      msbuildVersion: '15.0'
      msbuildArchitecture: 'x64'
      platform: 'anycpu'
      configuration: '${{ parameters.Configuration }}'
      msbuildArguments: '/p:PublishProfile=$(Build.SourcesDirectory)\${{ parameters.Location }}\Properties\PublishProfiles\STARS.Website.Publish.Profile.pubxml'


  - task: PublishBuildArtifacts@1
    displayName: 'Publish Artifacts'
    inputs:
      pathtoPublish: '$(Build.ArtifactStagingDirectory)' 
      artifactName: '${{ parameters.Site }}'

pub xml:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <PublishProvider>FileSystem</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>True</ExcludeApp_Data>
    <publishUrl>$(Build.ArtifactStagingDirectory)</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
  </PropertyGroup>
</Project>

1 Ответ

1 голос
/ 29 января 2020

Вы можете переопределить publishUrl в аргументах сборки:

/p:publishUrl=$(Build.ArtifactStagingDirectory)

Поэтому поместите заполнитель в ваш паб xml:

<publishUrl>Placeholder-You-Want</publishUrl>

И в своем YAML:

msbuildArguments: '/p:PublishProfile=$(Build.SourcesDirectory)\${{ parameters.Location }}\Properties\PublishProfiles\STARS.Website.Publish.Profile.pubxml /p:publishUrl=$(Build.ArtifactStagingDirectory)'
...