Vă mulțumim pentru susținere

Actualizați automat numărul versiunii

Aș dori ca proprietatea versiunii aplicației mele să fie incrementată pentru fiecare construcție, dar nu sunt sigur cum să activați această funcție în Visual Studio (2005/2008). Am încercat să precizez AdunareaVersion ca 1.0 *, dar nu mă înțelege exact ce vreau.

De asemenea, folosesc un fișier de setări, iar în încercările anterioare când versiunea de asamblare mi-a schimbat setările, am resetat la implicit, deoarece aplicația a căutat fișierul de setări dintr-un alt director.

Aș dori să pot afișa un număr de versiune sub forma de 1.1.38, astfel încât atunci când un utilizator găsește o problemă, pot să înregistrez versiunea pe care o folosesc și să le spun să facă upgrade dacă au o versiune veche.

O scurtă explicație a modului în care lucrările de versiune ar fi, de asemenea, apreciate. Când crește numărul de construire și de revizuire?

0
adăugat editat
Următoarea întrebare are o soluție simplă convenabilă cu privire la modul de injectare a unui număr de construire în aplicația dvs., generând un fișier sursă într-un eveniment construit. stackoverflow.com/questions/4450231/…
adăugat autor Ashley Davis

11 răspunsuri

According to Wikipedia: "[Game Boy's] monochrome screen, lack of a backlight, and less powerful hardware" is at the root of the problem.

9
adăugat
Uau, am reușit să reușesc într-un fel să trec peste asta când citesc articolul.
adăugat autor Joshua McKinnon
În plus, în timp ce rezoluțiile erau aceleași, Gear-ul avea un ecran mai mare (3,2 "vs 2,6"), care probabil a contribuit și el.
adăugat autor André Paramés

Durata slabă a bateriei pe uneltele de jocuri Sega este cauzată de lumina de fundal de pe ecran. Este un tub fluorescent care mănâncă bateriile în ritm rapid. Recent, câțiva oameni au experimentat înlocuirea tubului fluorescent cu LED-uri, ceea ce duce la o creștere drastică a duratei de viață a bateriei, demonstrând astfel că scurgerea principală a energiei provine din lumina din spate.

5
adăugat

Intelegerea mea este ca, in esenta, LCD-urile de culoare ale vremii erau porci mari de energie. Toate celelalte handheld-uri de culoare care concurează cu Game Boy-ul original sufereau de aceeași problemă. Cei care au oferit iluminarea din spate au suferit de asemenea o scurgere similară a energiei acolo.

Nu pot comenta problema consumului de energie al chipset-urilor, dar aceasta a fost probabil o problemă.

5
adăugat
Lumina de fundal a fost cel mai mare vinovat, cred.
adăugat autor Shinrai

Cred că durata de viață a bateriei este de aproximativ alocarea memoriei cartușelor de joc: uneori este foarte mare, dar foarte rar în timpul redării (de exemplu, Sonic the Hedgehog ).

În plus, culoarea și bateria care durează mai mult de 5 ore reprezintă o glumă.

Editați | ×

Ceea ce vreau să spun este că, în unele jocuri, se folosește o mulțime de memorie din cartuș și, dacă există multe culori, bateriile se scurge repede: este vorba despre câte pixeli, culori și memorie sunt încărcate. Acest lucru este ușor de observat atunci când jocul încetinește.

3
adăugat
Am încercat să citesc acest răspuns de multe ori, dar încă nu înțeleg ce vrei să spui prin "durata de viață a bateriei este aproximativ jocul de memorie alocat este foarte mare uneori, dar foarte rar în timp ce jucați"/i>
adăugat autor Denilson Sá Maia
Ceea ce inseamna ca in unele jocuri, uneori, se incarca de memorie din cartus si in cazul in care alocarea de culori a baut baterii rapid! De fapt, cat de multe pixeli, culori si memorie sunt incarcate. Cel mai usor exemplu de observare este atunci cand Jocul încetinește și este foarte lent! PM acum dacă nu înțelegi! EDIT: Despre încetinirile le vei vedea foarte des în sonic 1 pentru uneltele de joc! Potrivit lui AllieRX87, detecția sa de coliziune numită!
adăugat autor TheAnimeMurder
salut juppoter drăguț să vă aducă la spectacol Știți Frauber Super Mario 64 hacker Dacă îl faci, spune-i să intre pe acest forum pentru a vorbi despre niște hacks!
adăugat autor TheAnimeMurder
citiți răspunsul pe care l-am introdus!
adăugat autor TheAnimeMurder
Bună TheAnimeMurder, bun venit la Gaming! M-am dus înainte și am încorporat al doilea răspuns aici: dacă doriți să vă extindeți răspunsul, faceți clic pe linkul "editați" de mai jos.
adăugat autor user3389
Sunt sigur că răspunsul este incorect. Cantitatea de memorie ROM nu contează pentru scurgerea curentului. Dacă memoria volatilă a fost DRAM, din nou, consumul de energie nu are nicio legătură cu cantitatea de memorie utilizată de joc. Dacă ar fi fost SRAM, atunci consumul ar fi o funcție de câte ori se modifică fiecare bit. Dar, totuși, nu este motivul principal pentru scurgerea energiei mari. Cred că circuitele digitale au drenat puțin curent, în timp ce ecranul LCD și luminile de fundal s-au drenat mult mai mult (sarcină rezistivă).
adăugat autor Denilson Sá Maia

Cu chestiile "Construite", nu poți, ca folosind 1.0. * Sau 1.0.0. *, Să înlocuiți revizia și să construiți numere cu o dată / timestamp codificată, care de obicei este și o modalitate bună.

Pentru mai multe informații, consultați documentația Linker de asamblare în eticheta / v.

În ceea ce privește incrementarea automată a numerelor, utilizați sarcina AssemblyInfo:

Activitate AssemblyInfo

Aceasta poate fi configurată pentru a crește automat numărul de construire.

Există 2 Gotchas:

  1. Each of the 4 numbers in the Version string is limited to 65535. This is a Windows Limitation and unlikely to get fixed.
  2. Using with with Subversion requires a small change:

Recuperarea numărului de versiune este destul de ușoară:

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

Și pentru a clarifica: În .net sau cel puțin în C #, construirea este de fapt numărul THIRD, nu al patrulea, așa cum s-ar putea aștepta unii oameni (de exemplu dezvoltatorii Delphi care sunt obișnuiți cu Major.Minor.Release.Build).

În .net, este Major.Minor.Build.Revision.

0
adăugat
@Jugglingnutnutcase - acea legătură ar fi aproape perfectă, dacă ar fi funcționat pentru versiunile actuale ale studioului vizual
adăugat autor Kraang Prime
@Michael Stum: ați putea actualiza linkul pentru Task AssemblyInfo în răspunsul dvs. vă rog? Pentru mine, nu se încarcă corect.
adăugat autor Matt
Tocmai am găsit acest add-in studio vizual care face ceva similar: autobuildversion.codeplex.com
adăugat autor jrsconfitto
@ SanuelJackson haha! da, ar fi. prea rău nu țin pasul cu comentariile mele din 2010, îmi pare rău! : P Marșul timpului și versiunile ne întristează pe toți.
adăugat autor jrsconfitto
Asta inseamna ca, pe 4 iunie 2179, numerele versiunii implicite Microsoft se vor rupe? (a 65536 a doua zi după anul 2000)
adăugat autor ThePower
Linkul "AssemblyInfo Task" nu funcționează
adăugat autor Alexandre Cavaloti

Cu ceva timp în urmă am scris un exe rapid și murdar care ar actualiza versiunea # într-un assemblyinfo. {Cs / vb} - De asemenea, am folosit rxfind.exe (un instrument simplu și puternic de căutare pe bază de regex) pentru a face actualizare dintr-o linie de comandă ca parte a procesului de construire. Câteva sfaturi de ajutor:

  1. separate the assemblyinfo into product parts (company name, version, etc.) and assembly specific parts (assembly name etc.). See here
  2. Also - i use subversion, so I found it helpful to set the build number to subversion revision number thereby making it really easy to always get back to the codebase that generated the assembly (e.g. 1.4.100.1502 was built from revision 1502).
0
adăugat
Dacă este vorba despre un fișier de cod ( .cs / .vb), ar trebui să utilizați în schimb un șablon T4.
adăugat autor BrainSlugs83

Am descoperit că funcționează bine pentru a afișa ultima dată ultima construcție utilizând următoarele elemente oriunde este nevoie de o versiune de produs:

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

Mai degrabă decât încercarea de a obține versiunea de la ceva de genul:

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;
}
0
adăugat
Cred că vrei să spui asta: yyyy.MM.dd.HHmm nu yyyy.MM.dd.HHMM.
adăugat autor JHubbard80

Ce sistem de control al sursei utilizați?

Aproape toate au o anumită formă de $ Id $ tag care se extinde când fișierul este bifat.

De obicei, folosesc niște forme de hackeri pentru a afișa acest număr ca număr de versiune.

Cealaltă alternativă este folosirea datei ca număr de construire: 080803-1448

0
adăugat
Puteți să vă extindeți "Aproape toți au o formă de $ Id $ tag care se extinde când fișierul este bifat". Mai exact, știi pentru subversiune?
adăugat autor Greg B

VS.NET implică versiunea Adunării la 1.0. * Și folosește următoarea logică atunci când se auto-incrementează: stabilește partea de construire la numărul de zile de la 1 ianuarie 2000 și stabilește partea de revizuire la numărul de secunde de la miezul nopții, ora locală, împărțită la două. Vedeți acest articol MSDN .

Versiunea de asamblare este localizată într-un fișier assemblyinfo.vb sau assemblyinfo.cs. Din fișier:

' 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:
'  

 
 
0
adăugat
Vă mulțumim pentru includerea datei inițiale: 1 ianuarie 2000
adăugat autor kiewic

Dacă doriți ca un număr care crește automat să se actualizeze de fiecare dată când se face o compilare, puteți utiliza VersionUpdater de la un eveniment pre-construit. Evenimentul dvs. pre-build poate verifica configurația de configurare dacă doriți, astfel încât numărul versiunii să crească doar pentru o ediție Release (de exemplu).

0
adăugat
Interesant. Am avut propriile mele de ani de zile cu același nume și nu știam că a existat (deși l-am pus online online): github.com/rjamesnw/VersionUpdater
adăugat autor James Wilkins

[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 ^ _ ^.

0
adăugat