Avatar billede Slettet bruger
26. november 2005 - 10:33 Der er 5 kommentarer og
2 løsninger

Get AssemblyInfo.cs info

Hej Eksperter,
Jeg er lige kørt fast i hvordan jeg henter versionsnummer, produktnavn ect fra min AssemblyInfo.cs i et C# windows app.

Jeg skal have hentet det fra en form hvor jeg vil udskrive det i eks en label.

Hvordan henter jeg indholdet af eks:

[assembly: AssemblyVersion("0.0.1")]

Over i min form, på forhånd tak
Avatar billede nielle Nybegynder
26. november 2005 - 10:48 #1
Hvis det er en Windows-applikation:

MessageBox.Show(this.ProductVersion);
Avatar billede Slettet bruger
26. november 2005 - 10:55 #2
Hej nielle, tak, hvad med de andre info?

[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
Avatar billede nielle Nybegynder
26. november 2005 - 11:30 #3
De nemme:

AssemblyTitle - ?
AssemblyDescription - ?
AssemblyConfiguration - ?
AssemblyCompany - Application.CompanyName
AssemblyProduct - Application.ProductName eller this.ProductName
AssemblyCopyright - ?
AssemblyTrademark - ?
AssemblyCulture - Application.CurrentCulture
AssemblyVersion - Application.ProductVersion eller this.ProductVersion

Resten kan man med garaenti også få fat på, inklusive dem du selv måtte finde på at lægge der ind, men dette kræver noget Reflektion som jeg ikke lige har styr på lige nu og her.
Avatar billede driis Nybegynder
26. november 2005 - 14:08 #4
Assembly a = Assembly.GetExecutingAssembly();
object [] attributes = a.GetCustomAttributes(false);

Så har du alle attributterne. Hvert object i attributes er af en type der arver fra System.Attribute (f.eks. System.Reflection.AssemblyKeyNameAttribute), og hvert af objekterne har en property, der angiver indholdet af attributten.
Avatar billede driis Nybegynder
26. november 2005 - 14:26 #5
Der lader ikke til at være en nem måde at få fat på navn og indhold af alle attributterne, da property'en, der returnerer indholdet, hedder noget forskelligt fra attribut til attribut. Men du kan gøre noget i retning af:

using System;
using System.Reflection;

namespace apptest
{   
    public class Test
    {
        public static void Main(string [] args)
        {
            Assembly a = Assembly.GetExecutingAssembly();
            object [] attributes = a.GetCustomAttributes(false);
            foreach(object o in attributes)
                Console.WriteLine(o.ToString() + "\t: " + GetAttributeContent((Attribute)o));
        }

        public static string GetAttributeContent(Attribute att)
        {
            Type t = att.GetType();
            PropertyInfo [] props = t.GetProperties();
            if ( props != null && props.Length > 0 )
            {
                MethodInfo mi = props[0].GetGetMethod();
                return mi.Invoke(att,null) as string;
            }
            else
                return null;
        }
    }
}
Avatar billede Slettet bruger
26. november 2005 - 21:12 #6
Niellse smid også lige et svar, så deler i, tak for svarene
Avatar billede nielle Nybegynder
26. november 2005 - 22:03 #7
Oki, men giv du bare de fleste til driis :^)
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