1
votes

Comment mettre à jour la version dans Azure DevOps pour une bibliothèque standard .Net

J'ai une bibliothèque .Net Standard dans GitHub et j'essaie de créer un pipeline de construction et de publication. Cela fonctionne bien, mais j'ai du mal à trouver comment mettre à jour la version dans la construction. Il existe quelques plug-ins MarketPlace disponibles, mais ils semblent tous être orientés vers les applications .Net Framework. Y a-t-il un moyen intégré au DevOps qui permet cela - cela semble être une fonctionnalité standard?


0 commentaires

3 Réponses :


0
votes

Cela dépend bien sûr de la façon dont vous exécutez votre build, vous pouvez faire ce qui suit:

En utilisant la tâche principale .net / dotnet build (cela fonctionne également pour les bibliothèques standard), vous pouvez ajouter la version en tant qu'argument: entrez la description de l'image ici Dans cet exemple, j'utilise le numéro de build mais cela pourrait être ce que vous préférez.


2 commentaires

Quand j'essaye ceci, j'obtiens l'erreur: erreur CS7034: La chaîne de version spécifiée n'est pas conforme au format requis - majeur [.minor [.build [.revision]]]


Le Build.Buildnumber n'était qu'un exemple, mais si vous souhaitez l'utiliser, assurez-vous que le Buildnumber génère une chaîne de semver valide. vous pouvez le configurer dans la section Options de votre définition de build



2
votes

Comme Remco l'a dit ci-dessus, utilisez "dotnet build / p: version = {yourVersionNumber} ..." cela marquera votre build avec le numéro de version donné afin que vous puissiez le voir dans la propriété de version du fichier dll.

Suivi de "dotnet publish --no-build ..." pour qu'il publie vos dll sans reconstruction et version par défaut vers "1.0.0.0". Votre contenu publié conservera le numéro de version que vous avez spécifié dans la compilation dotnet.

Les deux étapes ci-dessus peuvent être effectuées à l'aide de PowerShell.

J'espère que cela aide.

Liens vers la création et la publication de dotnet:

https://docs.microsoft .com / fr-fr / dotnet / core / tools / dotnet-build? tabs = netcore2x https://docs.microsoft.com/ fr-fr / dotnet / core / tools / dotnet-publish? tabs = netcore21


1 commentaires

merci, vous m'avez mis dans la bonne direction pour résoudre ce problème, je n'ai pas dû définir de build sur mon test, emballer et publier des tâches dans azur!



0
votes

Les autres réponses ici n'ont pas fonctionné pour moi car nous sommes maintenant obligés d'utiliser YAML pour tout configurer, mais j'ai concocté une solution alternative dans ma définition de pipeline:

variables:
  projectVersion: '0.0'
  buildNumber: '$(Build.BuildId)'
  versionNumber: '$(projectVersion).$(buildNumber)'

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $input_path = (Get-ChildItem -Path "YourDirectory\" -Include SampleLibrary.csproj -File -Recurse -ErrorAction SilentlyContinue)
      $regex = '(?<=<Version>).*?(?=<\/Version>)'
      $version = Select-String -Path $input_path -Pattern $regex -AllMatches | % { $_.Matches } | % { $_.Value }
      Write-Output "##vso[task.setvariable variable=projectVersion]$version"

Cela définira le numéro de version sur une valeur telle que «1.1.8.547». Vous pouvez masser ces éléments comme bon vous semble, peut-être en les laissant sous forme de valeur en 3 parties avec un numéro de build auto-incrémenté, ou vous pouvez omettre entièrement le numéro de build et vous fier uniquement au numéro de version défini dans le projet lui-même. >

L'essentiel du script PowerShell ici est qu'il va d'abord récupérer le fichier .csproj dans le répertoire spécifié. Ensuite, il utilise une correspondance regex pour extraire la valeur du fichier et la stocke dans la variable $ version. La dernière ligne écrit la valeur de $ version dans la variable projectVersion définie dans YAML, que vous pouvez ensuite référencer sur la ligne.


0 commentaires