В чем разница в результатах публикации между Visual Studio 2017 и Azure DevOps в .NET Core 2.1?

Когда я пытаюсь опубликовать мое приложение mvc .net core в папке, оно поддерживает IIS, тогда как когда я пытался опубликовать тот же источник в конвейерах azure DevOps, он создает почти сотни файлов, которые не подходят для IIS. Почему и то, и другое отличается или что мне нужно сделать, чтобы публикация в лазурном режиме работала так же, как и визуальные студии.

Выполнили устранение неполадок в Azure документация и не нашел полезного для решения этой проблемы.

Добавление содержимого azure-pipeline.yml ниже

    trigger:
    - dev

    pool:
      vmImage: 'Ubuntu-16.04'

    variables:
      buildConfiguration: 'Release'
      a: dotnet --version

    steps:
    - script: dotnet build --configuration $(buildConfiguration)
      displayName: 'dotnet build $(buildConfiguration)'
    - bash: echo $(a)

    - task: DotNetCoreCLI@2
      inputs:
        command: publish
        publishWebProjects: True
        arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: True

    - task: PublishBuildArtifacts@1
      inputs:
        pathtoPublish: '$(Build.ArtifactStagingDirectory)' 
        artifactName: 'Vinocopia_Redesign'

    - task: FtpUpload@1
      inputs:
        credentialsOption: 'inputs'
        serverUrl: 'ftp://xx.xx.xx.xx'# Required when credentialsOption == Inputs
        username: 'username'# Required when credentialsOption == Inputs
        password: 'pwd'# Required when credentialsOption == Inputs
        rootDirectory: 
        filePatterns: '**' 
        remoteDirectory: '/upload/$(Build.BuildId)/' 
        #clean: false 
        #cleanContents: false # Required when clean == False
        overwrite: false 
        #preservePaths: false 
        #trustSSL: false 

person timblistic    schedule 29.08.2019    source источник
comment
Вы только что сказали о другом, но не указали, что они разные, и как вы опубликовали это в DevOps Azure? Ваш вопрос слишком широкий, чтобы дать на него ответ. Итак, предоставьте другой вывод и определение сборки для задачи сборки / публикации. Это поможет нам найти причину этого другого.   -  person Levi Lu-MSFT    schedule 30.08.2019
comment
/ но вы не указали, что они разные / ... Подсчет файлов и дружественные к IIS (когда мы указываем приложению IIS в опубликованную папку, для которой оно работает, по сравнению с публикацией, тогда как публикация azure DevOps не работает). Добавим сюда код azure-pipeline.yml   -  person timblistic    schedule 30.08.2019
comment
@ArulManivannan нет публикации azure DevOps, но публикации dotnet;) и да, публикация dotnet и публикация vs - это разные методы публикации, поэтому, пожалуйста, не пытайтесь их сравнивать ... либо используйте метод vs publish в DevOps, либо попробуйте получить dotnet publish-method для локального запуска по назначению, чтобы вы могли обновить шаг публикации dotnet в yaml   -  person D.J.    schedule 30.08.2019
comment
vs publish будет msbuild xxx.sln / p: deployonbuild = true в задаче командной строки с дополнительными свойствами, но это вам предстоит выяснить   -  person D.J.    schedule 30.08.2019


Ответы (1)


В чем разница в результатах публикации между Visual Studio 2017 и Azure DevOps в .NET Core 2.1?

Как указал Диджей:

"dotnet publish" и "vs publish" - разные методы публикации

Если вы хотите получить тот же результат, что и при публикации Visual Studio, вам следует использовать публикацию Visual Studio / MSBuild вместо публикации в dotnet, поэтому нам нужно использовать сборку Visual Studio с аргументами MSBuild, например:

- task: VSBuild@1
  displayName: 'Build solution'
  inputs:
    solution: NetCoreMVC/NetCoreMVC.sln
    msbuildArgs: '/p:DeployOnBuild=true  /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:publishUrl="$(Build.ArtifactStagingDirectory)\\"'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

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

person Levi Lu-MSFT    schedule 30.08.2019
comment
Спасибо за уточнение. Нужно ли мне заменить dotnet publish на vs publish? если я это сделаю, я получаю команду, которая неверна. - person timblistic; 05.09.2019
comment
@ArulManivannan, да, нужно заменить. - person Leo Liu-MSFT; 06.09.2019