[Visual Studio 2017, proprietăți .csproj ]
Pentru a actualiza automat proprietatea PackageVersion / Version / AssemblyVersion (sau orice altă proprietate), creați mai întâi o nouă clasă Microsoft.Build.Utilities.Task
care va obține numărul dvs. actual de construcție și trimite înapoi numărul actualizat (Vă recomandăm să creați un proiect separat pentru acea clasă).
Actualizăm manual numerele major.minor, dar permiteți MSBuild să actualizeze automat numărul de construire (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;
}
}
Apoi, apelați task-ul dvs. recent creat pe MSBuild adăugând următorul cod în fișierul .csproj:
...
...
..
1.1.4
..
Când alegeți opțiunea de proiect Visual Studio Pack (doar modificați la BeforeTargets = "Build"
pentru a executa sarcina înainte de Build), codul RefreshVersion va fi declanșat pentru a calcula noul număr de versiune și XmlPoke < code> task va actualiza în mod corespunzător proprietatea .csproj (da, va modifica fișierul).
Când lucrez cu bibliotecile NuGet, trimit și pachetul la depozitul NuGet adăugând următoarea sarcină de construire la exemplul anterior.
c:\nuget\nuget
is where I have the NuGet client (remember to save your NuGet API key by calling nuget SetApiKey
or to include the key on the NuGet push call).
Doar în cazul în care îi ajută pe cineva ^ _ ^.