Vb net - 1.1 - ver. assembly - ver cvs !?

martedì 05 giugno 2007 - 12.02

brillant Profilo | Newbie

Ciao a tutti, scrivo da poco in vb net, per cui scusate se la richiesta può sembrarvi banale.
Nelle mie dll, valorizzo i campi nel file "AssemblyInfo.vb".
Durante l'esecuzione della dll, creo un file di log, e come prima istruzione mi piacerebbe
scrivere il valore inserito nel campo "AssemblyVersion".
Questo per identificare la versione della .dll senza dover accedere alla macchina e verificare le
proprietà del file.

Inoltre :DD... utilizzo cvs per il versioning dei file... esiste qualcosa di free per poter reperire
nella dll, la versione cvs, così da scrivere eventualmente anche questa versione?

Ciao a tutti :DD

Simone

munissor Profilo | Senior Member

Dunque..supponiamo tu voglia visualizzare la versione dell'assembly che fa da entry point: scrivo in C# che sono più pratico..

Assembly asm = Assembly.GetEntryAssembly();
Attribute[] att= asm.GetCustomAttributes(typeof(AssemblyVersionAttribute), false);
AssemblyVersionAttribute ver = (AssemblyVersionAttribute)att[0];

Debug.WriteLine( ver.Version );

Per il fatto della versione CVS dovresti creare un tuo attributo in cui salvi la versione CVS (non so bene come funziona, ma se è simole a subversion immagino che a te faccia comodo avere il numero dell'ultimo checkin). Lo applichi all'assembly e poi come sopra lo leggi via reflection e lo stampi. Se non sai come creare attributi dimmi che te lo spiego al volo.

PS: poi se vuoi fare in modo che la versione CVS nell'attributo si aggiorni in automatico dovresti usare un batch o una macro di visual studio, ripeto che non so molto bene come funziona CVS perchè ci ho avuto poco a che fare e prevalentemente in sola lettura ;)

brillant Profilo | Newbie

Ti ringrazio... non mi è molto chiaro quello che mi hai scritto, ma ci provo!

la classe Assembly in vb non l'ho trovata, sembra che nel namespace
system non esista.

Gli attributi li conosco di nome ;D, ma non li ho mai usati e/o creati!

arrivo dal C/Unix..... sorry!!

Ciao e grazie ancora

munissor Profilo | Senior Member

Assembly sta in System.Reflection (sempre in mscorlib, non devi aggiungere riferimenti ad altri assembly).

Come dovresti sapere un assembly .NET non fatto solo di codice, ma contiene anche delle informazioni aggiuntive sul codice chiamate metadati. Attraverso gli attributi puoi aggiungere dei metadati al tuo assembly (ma non solo, anche a moduli, classi, metodi, ecc..). In fondo si tratta di una classe che deriva da System.Attribute. Per applicarlo all'assembly usa una sintassi simile a quella che vedi nel file assemblyinfo.vb?

PS: per provare potresti anche utilizzare C#, visto i tuoi precedenti con C ti sarà sicuramente più intuitivo...almeno per quanto riguarda la sintassi che è molto simile..

brillant Profilo | Newbie

Scusami.... ho fatto un incidente in moto e sono stato via parecchio !!!
ma ora mi sono ripreso e sobno tornato a lavorare.

Questa cosa dei metadati mi sembra mooooollto interessante.
Ti ringrazio per la dritta, ora provo a cercare qualche info su internet,
al limite ti disturberò ancora ;DD

Ciao e grazie!

Simone

munissor Profilo | Senior Member

Beh cavoli..spero sia tutto ok adesso!

Se hai bisogno chiedi pure! Il passaggio da C/C++ a .NET apre delle prospettive interessanti, l'unico svantaggio è l'enorme quantità di ram da usare per fare anche il più stupido dei programmi.. ;)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5