SVN revize Verze .NET shromáždění w / out CC.NET

hlasů
25

Existuje nějaký způsob, jak zahrnout do SVN počet repository revizi řetězec verze sestavy .NET? Něco podobného Major.Minor.SVNRev

Viděl jsem zmínku o dělá to s něčím, jako CC.NET (ačkoli na ASP.NET vlastně), ale je tam nějaký způsob, jak to udělat bez dalšího softwaru? Udělal jsem podobné věci v C / C ++ před použitím postavit dávkových skriptů, ale bylo provedeno čtení číslo verze, pak má skript vypsat soubor s názvem „ver.h“ pokaždé s něčím, o účinek:

#define MAJORVER 4
#define MINORVER 23
#define SOURCEVER 965

Rádi bychom pak použít tyto definuje generovat řetězec verze.

Je něco takového možné, .NET?

Položena 15/08/2008 v 13:15
zdroj uživatelem
V jiných jazycích...                            


8 odpovědí

hlasů
28

Tady je a C # příklad pro automatické aktualizace informací revize v sestavě. Je založen na odpovědi Will Dean, který není příliš komplikované.

Příklad:

  1. Kopírovat AssemblyInfo.cs na AssemblyInfoTemplate.cs ve složce projektu Vlastnosti .
  2. Změna Sestavit akce na Žádný pro AssemblyInfoTemplate.cs.
  3. Upravte řádek s AssemblyFileVersion na:

    [assembly: AssemblyFileVersion("1.0.0.$WCREV$")]

  4. Zvážit přidání:

    [assembly: AssemblyInformationalVersion("Build date: $WCNOW=%Y-%m-%d %H:%M:%S$; Revision date: $WCDATE=%Y-%m-%d %H:%M:%S$; Revision(s) in working copy: $WCRANGE$$WCMODS?; WARNING working copy had uncommitted modifications:$.")],

    která bude obsahovat informace o stavu revize zdroje Shromáždění bylo vybudovat z.

  5. Přidejte následující Pre-build událost vlastností souboru projektu:

    subwcrev "$(SolutionDir)." "$(ProjectDir)Properties\AssemblyInfoTemplate.cs" "$(ProjectDir)Properties\AssemblyInfo.cs" -f

  6. Zvažte přidání AssemblyInfo.cs do svn seznam ignorovat. Substituované Čísla revize a datum bude upravit soubor, který vyústí v nevýznamných změn a revizí a $ WCMODS $ vyhodnotí na true. AssemblyInfo.cs musí samozřejmě být zahrnuty do projektu.

V reakci na námitky Wim Coenen jsme zjistili, že, na rozdíl od toho, co bylo navrženo Darryl se AssemblyFileVersion také nemá ani podporovat čísel nad 2 ^ 16. Výstavba bude dokončena, ale vlastnost souboru Verze v samotném shromáždění bude AssemblyFileVersion modulo 65536. To znamená, 1.0.0.65536 stejně jako 1.0.0.131072 přinese 1.0.0.0, atd V tomto příkladu, tam je vždy pravdivé číslo revize v objektu AssemblyInformationalVersion. Dalo by se vynechat krok 3. Pokud to považují za významný problém.

Edit: některé další info po použití tohoto řešení na chvíli.

  1. Nyní používají AssemblyInfo.cst nikoli AssemblyInfoTemplate.cs, protože to bude mít automaticky Build Action možnost None , a nebude překážet vám seznam chyb, ale budete ztrácet zvýrazňování syntaxe.
  2. Přidal jsem dva testy na mé AssemblyInfo.cst soubory:

    #if(!DEBUG)    
        $WCMODS?#error Working copy has uncommitted modifications, please commit all modifications before creating a release build.:$ 
    #endif 
    #if(!DEBUG)       
        $WCMIXED?#error Working copy has multiple revisions, please update to the latest revision before creating a release build.:$ 
    #endif
    

    Použití této skutečnosti, budete obvykle muset provést úplnou SVN Update po spáchání a než budete moci provést úspěšnou sestavení vydání. V opačném případě $ WCMIXED bude pravda. To se zdá být způsobeno tím, že se dopustil soubory znovu při revizi hlavy po commitu, ale u ostatních souborů ne.

  3. Měl jsem určité pochybnosti, zda je první parametr subwcrev, „$ (SolutionDir)“, která stanoví rozsah pro kontrolu svn informace o verzi, není vždy fungovat podle potřeby. Možná, že by měl být $ (ProjectDir), pokud jste obsah kdyby každá jednotlivá sestava je v konzistentním revizi.

Přídavek K zodpovězení diskusi @tommylux.

SubWcRev lze použít libovolný soubor ve vás projektu. Chcete-li zobrazit informace revizní na webové stránce, můžete použít tuto šablonu VersionInfo:

public class VersionInfo
{       
    public const int RevisionNumber = $WCREV$;
    public const string BuildDate = "$WCNOW=%Y-%m-%d %H:%M:%S$";
    public const string RevisionDate = "$WCDATE=%Y-%m-%d %H:%M:%S$";
    public const string RevisionsInWorkingCopy = "$WCRANGE$";
    public const bool UncommitedModification = $WCMODS?true:false$;
}

Přidání pre-build událost, stejně jako ten, za AssemblyInfo.cst a budete mít snadný přístup ke všem důležitým Subversion info.

Odpovězeno 07/01/2013 v 13:01
zdroj uživatelem

hlasů
10

Je to možné, ale neměli byste: komponenty sestavy řetězec verze je omezena na 16-bitových čísel (max 65535). Čísla Subversion revizní může snadno stát větší, než je tak v určitém okamžiku kompilátor najednou bude stěžovat.

Odpovězeno 17/03/2009 v 14:51
zdroj uživatelem

hlasů
5

Číst / sbírat tyto dokumenty:

Přístup k repozitář Subversion z .NET pomocí DotSVN

Postup: Napište Úkol

Vložit SVN verzi a číslo v C # AssemblyInfo souboru

Kompilace aplikace s vlastními úkoly pro Microsoft Build Engine

MSBuildCommunityTasks svnversion uvedená v třetím odkazu nebude hrát s svn na Mac 10.5.6 a VS2008 C # projekt vybudovat uvnitř Parallels hostování Vista (tj. Přes OS).

Napište svůj vlastní úkol získat revizi z úložiště pomocí DotSVN:

using System;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using DotSVN.Common;
using DotSVN.Common.Entities;
using DotSVN.Common.Util;
using DotSVN.Server.RepositoryAccess;

namespace GetSVNVersion
{
    public class GetRevision : Task
    {
        [Required]
        public string Repository { get; set; }
        [Output]
        public string Revision { get; set; }

        public override bool Execute()
        {
            ISVNRepository repo;
            bool connected = true;
            try
            {
                repo = SVNRepositoryFactory.Create(new SVNURL(Repository));
                repo.OpenRepository();
                Revision = repo.GetLatestRevision().ToString();
                Log.LogCommandLine(Repository + " is revision " + Revision);
                repo.CloseRepository();
            }
            catch(Exception e)
            {
                Log.LogError("Error retrieving revision number for " + Repository + ": " + e.Message);
                connected = false;
            }
            return connected;
        }
    }
}

Tento způsob umožňuje úložiště cesta je „file: /// Y: / repo“, kde Y: je adresář Mac mapovány do Vista.

Odpovězeno 17/03/2009 v 09:21
zdroj uživatelem

hlasů
5

Podívejte se na SubWCRev - http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html

Čísla sestavení verze jsou obvykle v AssemblyInfo.cs

Odpovězeno 15/08/2008 v 13:29
zdroj uživatelem

hlasů
4

Další odpovědi zmínil, že SVN číslo revize nemusí být dobrý nápad, vzhledem k omezení na velikost čísla.

Následující odkaz obsahuje nejen čísla SNV revize, ale také info šablonu datum verze.

Přidání e-mail .NET projektu je jednoduchý - potřebuje jen velmi málo práce je třeba udělat.

Zde je GitHub projekt, který řeší tento https://github.com/AndrewFreemantle/When-The-Version/downloads

Následující url může se načítat pomalu, ale je to krok za krokem vysvětlení, jak, aby to fungovalo (snadná a krátká 3 nebo 4 stupně)

http://www.fatlemon.co.uk/2011/11/wtv-automatic-date-based-version-numbering-for-net-with-whentheversion/

Odpovězeno 11/02/2012 v 03:40
zdroj uživatelem

hlasů
2

Chcete-li aktualizovat číslo verze v několika projektech AssemblyInfo.cs můžete mít zájem v tomto článku:

CodeProject: Použití Subversion Revizní čísla v Visual Studio Projects

Pokud povolíte SVN klíčová slova pak pokaždé, když check in projekt Subversion skenuje soubory pro některé „klíčová slova“ a nahradí klíčová slova s ​​nějakými informacemi.

Například v horní části svých zdrojových souborů bych vytvořit záhlaví obsahovat následující klíčová slova:

'$ Autor: $
' $ Id: $
‚$ Rev: $

Když jsem tento soubor kontrolovat do Subversion Tato klíčová slova se nahrazuje tímto:

'$ Autor: paulbetteridge $
' $ Id: myfile.vb 145 2008-07-16 15: 24: 29Z paulbetteridge $
‚$ Rev: 145 $

Odpovězeno 12/09/2008 v 06:48
zdroj uživatelem

hlasů
2

svn info, která udává verzi jste, můžete provést „pre-build“ událost v VS na projektu pro generování AssemblyInfo.cs spuštěním svn info a analýza jejích výsledků s domácím vzrostlou příkazového řádku aplikace je.

Udělal jsem to dříve, ale rychle přešel k jen s ccnet předat ji jako proměnnou k Nant.

Odpovězeno 15/08/2008 v 14:51
zdroj uživatelem

hlasů
0

Můžete použít sdílený soubor verze sestavení, které můžete použít ve všech svých projektů.

Uppercut to dělá - http://ferventcoder.com/archive/2009/05/21/uppercut---automated-builds---versionbuilder.aspx

To vám dá představu o tom, co můžete udělat, aby se verze ve vašich sestavách.

Odpovězeno 08/06/2009 v 17:34
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more