Avatar billede nemezis_aalborg Nybegynder
04. november 2004 - 14:58 Der er 17 kommentarer og
1 løsning

Assembly name

Hejsa,
når man laver et assembly har man mulighed for at specificere forskellige informationer om dette assembly, e.g.:
[assembly: System.Reflection.AssemblyTitle("My Title")]
[assembly: System.Reflection.AssemblyDescription(
"Desription")]

Hvis man nu har loaded et assembly a, hvordan får man så fat i disse informationer?
Avatar billede nemezis_aalborg Nybegynder
04. november 2004 - 15:30 #1
Hey kom nu ;)
Avatar billede guidmaster Nybegynder
04. november 2004 - 16:16 #2
Det gør du via reflection. Eks.
Assembly caller = Assembly.GetExecutingAssembly();
Console.WriteLine("caller.FullName");
Avatar billede guidmaster Nybegynder
04. november 2004 - 16:17 #3
Ups. Skulle have været:
Assembly caller = Assembly.GetExecutingAssembly();
Console.WriteLine("Assemblyname: " + caller.FullName);
Avatar billede arne_v Ekspert
04. november 2004 - 16:18 #4
Uden at have prøvet vil jeg gætte på at du kalder Assembly klassens
GetCustomAttributes metode.
Avatar billede nemezis_aalborg Nybegynder
04. november 2004 - 16:24 #5
Men det er jo ikke ExecutingAssembly() jeg skal have.. Og umiddelbart er der ikke nogle af argumenterne til GetCustomAttributes der ser lovende ud :/
Avatar billede guidmaster Nybegynder
04. november 2004 - 16:31 #6
Hvordan har du loadet dit assembly? Det er jo sådan set også ligegyldigt - når du du har fat i det assembly som du ønsker navnet på er det jo stadig bare at bruge .FullName på det.
Avatar billede guidmaster Nybegynder
04. november 2004 - 16:34 #7
Komme jo også lidt an på hvad det er du vil have ud.
Assembly caller = Assembly.GetExecutingAssembly();
Console.WriteLine("Assembly name: " + caller.GetName().Name;);
Avatar billede nemezis_aalborg Nybegynder
04. november 2004 - 16:37 #8
Jeg skal bruge:
Name, Title, Description
Avatar billede nemezis_aalborg Nybegynder
04. november 2004 - 16:38 #9
Assembly.GetExecutingAssembly(); returnerer det assembly, som det nuværende code køres fra ikke. Dette er ikke det samme som de assemblies jeg ønsker information om.
Avatar billede arne_v Ekspert
04. november 2004 - 16:41 #10
Jeg har lige lavet et lille eksempel.

AssemblyInfo.cs:

[assembly: AssemblyTitle("Arnes test")]

Main.cs:

        object[] attrs = asm.GetCustomAttributes(false);
        for(int i = 0; i < attrs.Length; i++)
        {
            if(attrs[i] is AssemblyTitleAttribute)
            {
                AssemblyTitleAttribute title = (AssemblyTitleAttribute)attrs[i];
                Console.WriteLine(title.Title);
            }
        }

output:

Arnes test
Avatar billede guidmaster Nybegynder
04. november 2004 - 16:41 #11
Hvad er det for nogle assemblies du vil have info omkring? Hvis du ønsker alle de assemblies der er i det aktuelle domain kan du bruge følgende:
Assembly[] myAssemblies = Thread.GetDomain().GetAssemblies();
Avatar billede arne_v Ekspert
04. november 2004 - 16:41 #12
Det smager da lidt af fugl ikke ?
Avatar billede arne_v Ekspert
04. november 2004 - 16:44 #13
guidmasters Assembly.GetExecutingAssembly() henter current assembly, nu gætter jeg
udfra andre spørgsmål at du brger Assembly.Load eller Assembly.LoadFile, men
når du har din Assembly så må ovenstående være teknikken.
Avatar billede nemezis_aalborg Nybegynder
04. november 2004 - 16:51 #14
Kigger lige arne...
Avatar billede guidmaster Nybegynder
04. november 2004 - 16:53 #15
Havde læst dit sp. lidt anderledes, men kan nu godt se at arme_v har den rigtige løsning :)
Avatar billede guidmaster Nybegynder
04. november 2004 - 17:06 #16
Følgende skulle give dig de informationer du ønsker:

AssemblyDescriptionAttribute desc;
AssemblyTitleAttribute title;
// Dette er for at få min ref. i testen.
Assembly aAssembly = Assembly.GetExecutingAssembly();

desc = (AssemblyDescriptionAttribute)AssemblyDescriptionAttribute.GetCustomAttribute(aAssembly, typeof (AssemblyDescriptionAttribute));
           
title = (AssemblyTitleAttribute)AssemblyTitleAttribute.GetCustomAttribute(aAssembly, typeof (AssemblyTitleAttribute));
Console.WriteLine(aAssembly.GetName().Name)
Console.WriteLine(title.Title);
Console.WriteLine(desc.Description);
Console.WriteLine();
Avatar billede nemezis_aalborg Nybegynder
04. november 2004 - 22:01 #17
nope guidmaster.. et er stadig ikke ExecutingAssembly og GetName() returnerer alt asssembly info inklusiv culture osv.

Men arne du fik mig på rette spor.. har fået det til at virke.

Smid et svar
Avatar billede arne_v Ekspert
04. november 2004 - 22:03 #18
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