c# - html agility pack remove tags




Aggiorna automaticamente il numero di versione (5)

Con la funzionalità "Built in", non è possibile, poiché l'utilizzo di 1.0. * O 1.0.0. * Sostituirà la revisione e costruirà i numeri con una data / timestamp codificata, che di solito è anche un buon modo.

Per ulteriori informazioni, consultare la documentazione di Assembly Linker nel tag / v.

Per quanto riguarda l'incremento automatico dei numeri, utilizzare l'attività AssemblyInfo:

Task AssemblyInfo

Questo può essere configurato per incrementare automaticamente il numero di build.

Ci sono 2 Gotcha:

  1. Ognuno dei 4 numeri nella stringa della versione è limitato a 65535. Si tratta di una limitazione di Windows che difficilmente verrà risolta.
  2. L'uso con con Subversion richiede una piccola modifica:

Il recupero del numero di versione è quindi abbastanza semplice:

Version v = Assembly.GetExecutingAssembly().GetName().Version;
string About = string.Format(CultureInfo.InvariantCulture, @"YourApp Version {0}.{1}.{2} (r{3})", v.Major, v.Minor, v.Build, v.Revision);

E, per chiarire: in .net o almeno in C #, la build è in realtà il TERZO numero, non il quarto come potrebbero aspettarsi alcune persone (ad esempio gli sviluppatori Delphi che sono abituati a Major.Minor.Release.Build).

In .net, è Major.Minor.Build.Revision.

Vorrei incrementare la proprietà della versione della mia applicazione per ogni build, ma non sono sicuro su come abilitare questa funzionalità in Visual Studio (2005/2008). Ho provato a specificare AssemblyVersion come 1.0. * Ma non mi ottiene esattamente quello che voglio.

Sto anche usando un file di impostazioni e in precedenti tentativi, quando la versione dell'assembly è cambiata, le mie impostazioni sono state ripristinate ai valori predefiniti poiché l'applicazione ha cercato il file di impostazioni in un'altra directory.

Vorrei essere in grado di visualizzare un numero di versione sotto forma di 1.1.38, quindi quando un utente rileva un problema posso registrare la versione che stanno usando e dire loro di aggiornare se hanno una versione precedente.

Sarebbe anche gradita una breve spiegazione di come funziona il controllo delle versioni. Quando viene incrementato il numero di build e revisione?


Ho scoperto che funziona bene per visualizzare semplicemente la data dell'ultima build usando quanto segue ovunque sia necessaria una versione del prodotto:

System.IO.File.GetLastWriteTime(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString("yyyy.MM.dd.HH.mm.ss")

Invece di tentare di ottenere la versione da qualcosa di simile al seguente:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
object[] attributes = assembly.GetCustomAttributes(typeof(System.Reflection.AssemblyFileVersionAttribute), false);
object attribute = null;

if (attributes.Length > 0)
{
    attribute = attributes[0] as System.Reflection.AssemblyFileVersionAttribute;
}

Quale sistema di controllo del codice sorgente stai usando?

Quasi tutti hanno una forma di tag $ Id $ che viene espansa quando il file viene archiviato.

Di solito uso una qualche forma di pirateria informatica per visualizzarlo come numero di versione.

L'altra alternativa è usare per usare la data come numero di build: 080803-1448


Se si desidera un numero a incremento automatico che si aggiorna ogni volta che viene eseguita una compilazione, è possibile utilizzare VersionUpdater da un evento pre-build. Il tuo evento pre-build può controllare la configurazione della build se preferisci, in modo che il numero di versione aumenti solo per una build di Release (ad esempio).


[Visual Studio 2017, proprietà .csproj ]

Per aggiornare automaticamente la proprietà PackageVersion / Version / AssemblyVersion (o qualsiasi altra proprietà), creare innanzitutto una nuova classe Microsoft.Build.Utilities.Task che otterrà il numero di build corrente e rinvierà il numero aggiornato (si consiglia di crearne uno separato progetto solo per quella classe).

Aggiorna manualmente i numeri major.minor, ma consento a MSBuild di aggiornare automaticamente il numero di build (1.1. 1 , 1.1. 2 , 1.1. 3 , ecc. :)

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;
    }

}

Quindi chiama il processo Task recentemente creato su MSBuild aggiungendo il codice successivo sul tuo file .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>
 ..

Quando si seleziona l'opzione del progetto Visual Studio Pack (basta passare a BeforeTargets="Build" per eseguire l'attività prima di Build) il codice RefreshVersion verrà attivato per calcolare il nuovo numero di versione e XmlPoke attività XmlPoke aggiornerà di conseguenza la proprietà .csproj (sì, esso modificherà il file).

Quando lavoro con le librerie NuGet, invio anche il pacchetto al repository NuGet semplicemente aggiungendo l'attività di generazione successiva all'esempio precedente.

<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 è dove ho il client NuGet (ricorda di salvare la tua chiave API nuget SetApiKey <my-api-key> chiamando il nuget SetApiKey <my-api-key> o di includere la chiave nella chiamata push NuGet).

Nel caso in cui aiuti qualcuno ^ _ ^.





versioning