[Visual Studio 2017, .csproj propriétés]
Pour mettre à jour automatiquement votre PackageVersion / Version / propriété AssemblyVersion (ou tout autre bien), tout d' abord, créer une nouvelle Microsoft.Build.Utilities.Task
classe qui permettra à votre numéro de build en cours et renvoyer le numéro mis à jour (je vous recommande de créer un projet distinct seulement pour cette classe).
Mettre à jour manuellement les numéros MAJOR.MINOR, mais laissez - MSBuild mettre à jour automatiquement le numéro de build (1.1. 1 , 1,1. 2 , 1.1. 3 , etc. :)
using Microsoft.Build.Framework;
using System;
using System.Collections.Generic;
using System.Text;
public class RefreshVersion : Microsoft.Build.Utilities.Task
{
[Output]
public string NewVersionString { get; set; }
public string CurrentVersionString { get; set; }
public override bool Execute()
{
Version currentVersion = new Version(CurrentVersionString ?? "1.0.0");
DateTime d = DateTime.Now;
NewVersionString = new Version(currentVersion.Major,
currentVersion.Minor, currentVersion.Build+1).ToString();
return true;
}
}
Ensuite, appelez votre récemment créé la tâche sur le processus MSBuild ajoutant le code suivant sur votre fichier .csproj:
<Project Sdk="Microsoft.NET.Sdk">
...
<UsingTask TaskName="RefreshVersion" AssemblyFile="$(MSBuildThisFileFullPath)\..\..\<dll path>\BuildTasks.dll" />
<Target Name="RefreshVersionBuildTask" BeforeTargets="Pack" Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<RefreshVersion CurrentVersionString="$(PackageVersion)">
<Output TaskParameter="NewVersionString" PropertyName="NewVersionString" />
</RefreshVersion>
<Message Text="Updating package version number to $(NewVersionString)..." Importance="high" />
<XmlPoke XmlInputPath="$(MSBuildProjectDirectory)\mustache.website.sdk.dotNET.csproj" Query="/Project/PropertyGroup/PackageVersion" Value="$(NewVersionString)" />
</Target>
...
<PropertyGroup>
..
<PackageVersion>1.1.4</PackageVersion>
..
Lors de la cueillette l' option de projet Visual Studio Pack ( il suffit de changer à BeforeTargets="Build"
pour exécuter la tâche avant de Construire) le code RefreshVersion sera déclenché pour calculer le nouveau numéro de version, et XmlPoke
tâche de mettre à jour votre propriété .csproj en conséquence (oui, il modifiera le fichier).
Lorsque vous travaillez avec des bibliothèques NuGet, je vous envoie aussi le paquet au dépôt NuGet en ajoutant simplement la tâche suivante de construction à l'exemple précédent.
<Message Text="Uploading package to NuGet..." Importance="high" />
<Exec WorkingDirectory="$(MSBuildProjectDirectory)\bin\release" Command="c:\nuget\nuget push *.nupkg -Source https://www.nuget.org/api/v2/package" IgnoreExitCode="true" />
c:\nuget\nuget
est où j'ai le client NuGet (souvenez - vous d'enregistrer votre clé API NuGet en appelant nuget SetApiKey <my-api-key>
ou pour inclure la clé sur l'appel push NuGet).
Juste au cas où il aide quelqu'un ^ _ ^.