Avatar billede microjet Nybegynder
18. januar 2010 - 15:25 Der er 18 kommentarer og
1 løsning

hvordan auto-increment af build/versions nummer

Hejsa

Jeg har siddet og fumlet lidt med hvordan man kan få vist versionsnummeret i titel og det virker også.. gøres sådan her:

String strVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
           
this.Text = "ver: "+strVersion;

Problemet er bare at versionsnummeret ikke er korrekt... jeg kan heller ikke få versionsnummeret til at tælle op, selv om jeg har sat flueben i "autoincrement" i fanebladet publish for selve applikationen/formen, her har jeg skrevet 1.1.1.1 i versionsnummeret... men det tæller ikke om når jeg builder/rebuilder

Der bliver ved med at stå 1.0.0.0 i title i formen!

Håber der er en der har lidt mere check på det end mig :-)

M.v.h

Tue
Avatar billede Syska Mester
18. januar 2010 - 15:35 #1
Dim myBuildInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Application.ExecutablePath)

MsgBox("Product build part number: " &  myBuildInfo.ProductBuildPart)

Godt nok i VB ... men måske dette virker.

( håber du selv kan lave det om til C#, eller må du sige til )
Avatar billede bitmatic Nybegynder
18. januar 2010 - 15:56 #2
Visual studio kører med flere forskellige versionsnummereringer.....

Den du får med System.Reflection.Assembly.GetExecutingAssembly().GetName().Version er den er er defineret i AssemblyInfo.cs og hedder AssemblyVersion.
Den kan du sætte til at autoincrementere ved at ændre i AssemblyInfo.cs.

AssemblyFileVersion og den version du sætter inde under Publish i projekt-properties er noget andet.

Dejlig forvirrende ikke :-)
Avatar billede microjet Nybegynder
18. januar 2010 - 15:59 #3
Hej Buzzz

Jeg kan godt få versionsnummeret frem i title. Men det passer bare ikke med det der jeg har valgt i publish =1.1.1.1

jeg har prøvet at ændre på følgende:

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyFileVersion("1.0.*")]

Det giver følgende output i title på form:ver: 1.0.3670.28613

Hvis jeg siger build all er næste output: ver: 1.0.3670.28629

Dvs 16 højere... jeg har 16 projekter der compilere sammen med formen...måske har det noget med det at gøre, men jeg ville jo gerne have at disse tal fulgte følgende 1.0.0.1....1.0.0.2....1.0.0.16... osv.
Avatar billede microjet Nybegynder
18. januar 2010 - 16:16 #4
Ahhhaaa! Bitmatic... du er genial!

Så kan jeg bedre forstå forvirringen :-) det forklare jo en del

Kan du fortælle mig hvordan jeg får AssemblyFileVersion ud som streng... vel og mærke applikationens versions nummer
Avatar billede bitmatic Nybegynder
18. januar 2010 - 16:50 #5
Jo da.

Du kan få fat i alle tre med:

Assembly asm = Assembly.GetExecutingAssembly();
            String AssemblyVersion = asm.GetName().Version.ToString();
            String AssemblyFileVersion = FileVersionInfo.GetVersionInfo(asm.Location).FileVersion;
            String PublishVersion = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();

Vær dog opmærksom på, at den sidste kun virker hvis din applikation rent faktisk køres published.
Avatar billede bitmatic Nybegynder
18. januar 2010 - 16:52 #6
f*** det er grimt... Burde vi ikke have et tag til kode ???
Avatar billede microjet Nybegynder
18. januar 2010 - 16:54 #7
Hmmm! Hvad skal jeg inkludere for at få "FileVersionInfo".... er det "using System" eller "using System.IO" ???... her kan jeg nemlig ikke finde den.
Avatar billede microjet Nybegynder
18. januar 2010 - 17:05 #8
OK det er Namespace Diagnostic... prøver lige at få det til at virke
Avatar billede microjet Nybegynder
18. januar 2010 - 17:13 #9
He He! Så virker det næsten!

har skrevet følgende:


            String AssemblyFileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion;
            this.Text = "Ver: " +AssemblyFileVersion;

(Helt enig! ...koderne bliver pænt ulæselige så snart man har pastet dem)

MEN...nu refererer ovenstående kode til: AssemblyInfo.cs
[assembly: AssemblyFileVersion("1.2.3.4")]

og ikke til min publish version

Er der virkelig 3 versions numre????
Avatar billede microjet Nybegynder
18. januar 2010 - 17:20 #10
Altså ovenstående viser blot den tekst der står i:AssemblyInfo.cs
[assembly: AssemblyFileVersion("1.2.3.4")]

Hvis jeg skrev "børge" ville det også virke... Har prøvet med publish eks... men kan ikke få det til at virke... desuden kan jeg heller ikke få publish ver. til at tælle op når jeg builder???
Avatar billede Syska Mester
18. januar 2010 - 17:47 #11
[code]
Folk skriver at div tag kan bruges ... lad og se om det virker bitmatic
[/code]


Folk skriver at div tag kan bruges ... lad og se om det virker bitmatic


Både div og code virker BB-tags
Avatar billede microjet Nybegynder
19. januar 2010 - 13:51 #12
Hej Bitmatic

følgende kode:

String PublishVersion = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();


giver følgende fejl:

System.Deployment.Application.InvalidDeploymentException was unhandled
  Message="Programmet er ikke installeret."
  Source="System.Deployment"
  StackTrace:
      ved System.Deployment.Application.ApplicationDeployment..ctor(String fullAppId)
      ved System.Deployment.Application.ApplicationDeployment.get_CurrentDeployment()
      ved DOP3.MDIParent1..ctor() i D:\CSharp\DOP3\DOP3\DOP3\MDIParent1.cs:linje 57
      ved DOP3.Program.Main() i D:\CSharp\DOP3\DOP3\DOP3\Program.cs:linje 17
      ved System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
      ved System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
      ved System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
      ved System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
      ved System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
      ved System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
      ved System.Activator.CreateInstance(ActivationContext activationContext)
      ved Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
      ved System.Threading.ThreadHelper.ThreadStart_Context(Object state)
      ved System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
      ved System.Threading.ThreadHelper.ThreadStart()
  InnerException:
Avatar billede microjet Nybegynder
19. januar 2010 - 13:52 #13
Buzzz:
Hvilke tags benytter du til kode??
Avatar billede bitmatic Nybegynder
19. januar 2010 - 14:25 #14
String PublishVersion = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString()

Virker kun hvis din applikation er published. Ellers kaster den en exception.
Avatar billede Syska Mester
19. januar 2010 - 14:34 #15
microjet:

div og code ... med [ og ] uden om ... næsten ligesom html.

dvs. <code>koden</code> bare med de andre klammer, altså hårde parenteser som nogen vist kalder dem.

mvh
Avatar billede microjet Nybegynder
19. januar 2010 - 15:12 #16
Bitmatic... tusind tak for hjælpen!... nu har jeg fundet ud af hvordan det virker med c#'s 3 versions nummereringer

... og det virker også med publish ver. nr.... når bare man lige husker at man kun kan få adgang til dette versionsnummer når programmet køres fra installationen...(fatter ikke helt ideen med denne begrænsning)

Følgende virker nu for mig:
<code>            String PublishVersion = "";
            try { PublishVersion = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString(); }
            catch { }

            this.Text = "ver: " + PublishVersion;</code>

Så post et svar! :-)
Avatar billede microjet Nybegynder
19. januar 2010 - 15:19 #17
Øhhh lidt for hurtigt...

Følgende virker nu for mig:
[code]            String PublishVersion = "";
            try { PublishVersion = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString(); }
            catch { }

            this.Text = "ver: " + PublishVersion;[/code]
Avatar billede microjet Nybegynder
19. januar 2010 - 15:27 #18
Buzzzz:

Tak for tippet... ovenstående kode skrives som følgende:

[div ][code ]
....selve koden....
[/code][/div]

NB! Husk at fjerne mellemrummet efter "div" og "code" i første linie

Men det ser ud til at der er problemer med ""... det bruges jo ret tit i kode!
Avatar billede bitmatic Nybegynder
19. januar 2010 - 15:49 #19
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester