У меня есть конвейер 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>