Почему Azure Devops изменяют дату на dll, скачанных с Nuget? - PullRequest
0 голосов
/ 24 апреля 2020

Я заметил, что файлы, такие как EntityFramework.Dll, развернуты с текущим временем. Я столкнулся с этой ошибкой , и я решил ее, скопировав dll-файлы со своего компьютера разработчика на перезаписанные развернутые dll-файлы.

Что вызывает изменение даты в dll-файлах?

azure -pipelines.yml -

trigger:
- master

pool:
  vmImage: 'VS2017-Win2016'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Debug'

steps:
- task: NuGetToolInstaller@0

- task: NuGetCommand@2
  inputs:
    restoreSolution: '**\*.sln'
    feedsToUse: config

    nugetConfigPath: 'MyService.ServiceHost/nuget.config'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: |
     $(Build.SourcesDirectory)\MyService.ServiceHost\bin\debug\**\*.*

    TargetFolder: '$(build.artifactstagingdirectory)'

- task: PublishBuildArtifacts@1
  inputs:
    artifactName: 'drop'

мои ссылки на nuget.config

и личный канал в https://pkgs.dev.azure.com

[ Обновление]

Я попытался добавить preserveTimestamp: True для задачи CopyFiles@2, но это не имело никакого значения

- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: |
     $(Build.SourcesDirectory)\MyService.ServiceHost\bin\debug\**\*.*
    TargetFolder: '$(build.artifactstagingdirectory)'
    preserveTimestamp: True

[Обновление]

Лео советует обходной путь. Однако мне интересно, как разархивировать файл для выпуска В настоящее время мой конвейер выпуска содержит

copy C:\azagent\A2\_work\r1\a\_PreMyFolder\drop\MyService.ServiceHost\bin\Debug\*.* "C:\Program Files (x86)\MyCompany\MyService Service"

1 Ответ

1 голос
/ 27 апреля 2020

Почему Azure Devops изменяют дату на dll, загруженных из Nuget?

Это потому, что значение по умолчанию значения preserveTimestamp параметр False в задаче Копирование файлов .

- task: CopyFiles@2
  inputs:
    #sourceFolder: # Optional
    #contents: '**' 
    targetFolder: 
    #preserveTimestamp: false # Optional

Чтобы решить эту проблему, вам просто нужно изменить значение на True.

- task: CopyFiles@2
  inputs:
  sourceFolder:
  contents: '**' 
  targetFolder: 
  preserveTimestamp: True

Обновление:

Я пытался добавить preserveTimestamp: True для задачи CopyFiles@2, но это не имело никакого значения

Когда я Сначала проверив эту проблему, я обнаружил, что copy task изменит Timestamp файла. Это действительно так. И нашел решение, используя опцию preserveTimestamp. Я думал, что это была целая проблема, пока Кирстен Жадность не ответила мне, что это решение не работает.

Мне пришлось снова протестировать проблему и обнаружить, что задача PublishBuildArtifacts также изменит Timestamp файл, но нет такой опции preserveTimestamp, как задача копирования. Мы могли бы найти похожую нить здесь и здесь , но ни одна из них не дает решения / обходного пути.

Обходной путь, о котором я сейчас думаю, состоит в том, что вы можете попытаться Объедините артефакты в сжатый zip-файл, а затем распакуйте его при использовании.

Итак, я использую Архивные файлы вместо задачи копирования:

- task: ArchiveFiles@2

  displayName: 'Archive $(Build.SourcesDirectory)\TestSample\TestSample\bin\Debug'

  inputs:

    rootFolderOrFile: '$(Build.SourcesDirectory)\TestSample\TestSample\bin\Debug'

    archiveFile: '$(Build.ArtifactStagingDirectory)/Test.zip'

Затем опубликуйте sh этот zip-файл как артефакт:

- task: PublishBuildArtifacts@1

  displayName: 'Publish Artifact: drop'

Теперь я могу сохранить метку времени для файлов:

enter image description here

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

...