Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


AssemblyName

Postades av 2004-05-16 16:13:20 - Johan Segolsson, i forum c# (c-sharp), Tråden har 23 Kommentarer och lästs av 771 personer

Hur kan man få tag i fulla namnet för t ex den assembly som innehåller namespacet "System.Windows.Forms"?


Svara

Sv: AssemblyName

Postades av 2004-05-16 17:16:45 - Patrik Löwendahl

System.Windows.Forms.dll heter den ;)

Nä men om du har en instans av ett objekt kan du använda obj.GetType().ToString()

eller så plockar du fram typ informationen <b>Type t = typeof(Form)</b>.


Svara

Sv: AssemblyName

Postades av 2004-05-16 17:54:03 - Johan Segolsson

Men om jag inte har någon instans av någon klass som finns i den assemblyn då... och inte heller vet vilka klasser den innehåller... Jag antar att jag får loopa igenom AppDomain.CurrentDomain.GetAssemblies() tills jag hittar rätt...


Svara

Sv: AssemblyName

Postades av 2004-05-16 18:12:02 - Andreas Håkansson

<b>Dagens .NET Trivia:</b> När laddas en assembly in i huvud-appdomainen?

<b>(a)</b> Vid programuppstart då det finns en referens till den i mitt projekt.

<b>(b)</b> När den behövs för första gången- något annat vore slöseri på minne.

Om du svarade <b>(a)</b> på ovanstående fråga har du ett problem. Svaret är <b>(b)</b> vilket gör att om du inte har någon objekt av en typ som finns i assemblyn så kan du inte heller hitta den i din AppDomain. Så du får antingen se till att du har ett objekt, eller explicit ladda in den i din AppDomain. Tänk på att en assembly som du laddar in i en AppDomain kan inte frigöras förrens AppDomainen förstörs, så om du bara skall udnersöka en godtycklig assembly och sen kasera den så skapa en ny AppDomain du kan skrota sen när du är klar.

Dagens .NET Trivia presenterades i sammarbete med Pellesoft och Cloetta Kexchocklad =)

//Andreas


Svara

Sv: AssemblyName

Postades av 2004-05-16 23:53:23 - Mattias Sjögren

Det kan du generellt inte, eftersom namespaces kan spänna över flera assemblies, och det finns ingen garanti att namnen överensstämmer.


MS


Svara

Sv: AssemblyName

Postades av 2004-05-17 00:01:10 - Andreas Håkansson

Mattias,

Ahh hemliga svars alternativ <b>(c)</b> som kombinerade mitt <b>(b)</b> med ditt svar ;-) Men du har så rätt så, tänker nästan aldrig på det fast än flera av mina namespaces ligger i flera assemblies :-D

//Andreas


Svara

Sv: AssemblyName

Postades av 2004-05-17 14:14:07 - Johan Segolsson

Hur skulle man kunna kolla vilken assembly en klass ligger i (har endast en sträng, t ex System.Windows.Forms.Label) och ta reda på dess assemblyname, endast strängen räcker ju inte om man vill använda Type.GetType(sträng) utan man verkar ju behöva assemblyname också, rätta mig om jag har fel...


Svara

Sv: AssemblyName

Postades av 2004-05-17 17:03:28 - Johan Bovin

du skall kunna ladda en type med bara Type.GetType("System.Windows.Forms.Label");
men om inte Assemblyn som den klassen ligger i är laddad så kommer du få ett exception. Du kan ladda assemblyn med System.Reflection.Assembly.Load(namnet);
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemReflectionAssemblyClassLoadTopic3.asp?frame=true


Svara

Sv: AssemblyName

Postades av 2004-05-17 17:19:00 - Andreas Håkansson

Johan,

Orginal frågan var att han ville veta just vilken assembly typen fanns i .. då blir det lite lurigare ;)

//Andreas


Svara

Sv: AssemblyName

Postades av 2004-05-17 18:18:48 - Johan Bovin

Jo, jag vet... men det var mer svaret på Type.GetType()
Det borde vara omöjligt att veta assemblyn om den inte är laddad... Systemet kan ju inte gärna gissa ;-)

http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemTypeClassAssemblyTopic.asp?frame=true

Type myType=Type.GetType("System.Windows.Forms.Label");
string assemblynamn=myType.Assembly.FullName.ToString(); 


Svara

Sv: AssemblyName

Postades av 2004-05-17 18:26:12 - Andreas Håkansson

Precis, finns den inte laddad eller kunner i någon av probe sökvägarna är man nog toast =)

//Andreas


Svara

Sv: AssemblyName

Postades av 2004-05-17 19:42:14 - Oskar Johansson

om man har mycket tid och prestanda över så kan man ju alltid loopa igenom hela gac:en samt alla möjliga kataloger i microsoft.net\framework\v1.*\* samt ev. bin-kataloger till programmet eller liknande... ;)


Svara

Sv: AssemblyName

Postades av 2004-05-17 19:46:42 - Andreas Håkansson

Och om man vill hitta en 3e parts typ? Loopa igenom alla paritioner och undersöka alla essmeblys ? låter som en roligt sak "vänta söker igenom hela din dator .. detta kan ta upp till en timme beroenbde på hur stora hårdsiskar du har" :-D

//Andreas


Svara

Sv: AssemblyName

Postades av 2004-05-17 20:23:40 - Johan Segolsson

Assemblyn är laddad i AppDomain men inte i ExecutingAssembly vilket gör att Type.GetType inte verkar hitta den...


Svara

Sv: AssemblyName

Postades av 2004-05-17 21:18:48 - Johan Bovin

Ok, jag har för mig att jag hade samma problem. Vet inte vad det beror på men jag har för mig att jag löste det enligt följande:

Assembly ass=Assembly.Load("myassembly.dll");
Type myType=ass.GetType("MyType");


Förmodligen kan man göra nåt mer optimalt men testa om inte det fungerar för dig...


Svara

Sv: AssemblyName

Postades av 2004-05-17 21:20:44 - Johan Segolsson

hur kan man ta reda på filnamnet (hela filnamnet) för en dll fil som ligger i gac:en t ex System.Windows.Forms.dll då?


Svara

Sv: AssemblyName

Postades av 2004-05-17 22:08:50 - Johan Bovin

Ok, nu kommer säker nån att skrika men testa med Assembly ass=Assembly.LoadWithPartialName("System.Windows.Forms");
Inget som kanske rekommenderas och det finns säkert nån bättre lösning...


Svara

Sv: AssemblyName

Postades av 2004-05-17 22:20:00 - Oskar Johansson

Titta på metoden GetAssemblies i AppDomainen. Den returnerar samtliga laddade assemblies. Sedan är det ju en smalsak att leta igenom de assemblierna efter några typer...


Svara

Sv: AssemblyName

Postades av 2004-05-17 23:50:15 - Andreas Håkansson

Nä han vill juh veta vilken assembly som innehåller en sak, då kan han juh inte göra det för det är juh inte säkert att den är laddad i appdomainen och sen sa han faktiskt i sitt andra inlägg

<b>Jag antar att jag får loopa igenom AppDomain.CurrentDomain.GetAssemblies() tills jag hittar rätt... </b>

Men som sagt, funkar bara om du har ett objekt av en klass i assemblyn eller om du explicit laddat in den i din appdomain =)

//Andreas


Svara

Sv: AssemblyName

Postades av 2004-05-18 19:07:57 - Oskar Johansson

som JohanS skrev förut:
>Assemblyn är laddad i AppDomain men inte i ExecutingAssembly vilket gör att Type.GetType inte verkar hitta den...

så fungerar det med den metoden :)


Svara

Sv: AssemblyName

Postades av 2004-05-18 22:28:59 - Johan Segolsson

mmm... det gör att man måste lägga till assemblynname till klassnamnet när man ska använda Type.GetType...

Måste ju (borde iallafall) finnas något enkelt sätt att kontrollera vilken assembly den tillhör och därav få ut assemblyname om man bara har en sträng med klassnamnet (tex "System.Windows.Forms.Label") och man vet att assemblyn är laddad i AppDomain...


Svara

Sv: AssemblyName

Postades av 2004-05-18 22:36:07 - Andreas Håkansson

Johan,

20 inlägg i tåden - då blir det dags för den obligatoriska "Kan du beskriva vad det är du vill göra och varför så vi kan sätta det i ett sammanhang". Genom att ventilea vad och varför du vill göra så kanske en lämplig (alternativ) lösning kan uppdagas.

//Andreas


Svara

Sv: AssemblyName

Postades av 2004-05-20 10:22:41 - Johan Segolsson

Okej, jag försöker göra en egen enkel implementation av xaml. Som input har jag en xml-fil som innehåller typ:

<code>
<control name="Form">
<property name="Text">blabla</property>
<property name="Controls">
<control name="Label">
<property name="Text">blabla</property>
</control>
</property>
</control>
</code>

I det här fallet har jag begränsat mig så jag vet att alla kontroller, finns i System.Windows.Forms, även om inte alla property's gör det så är det enkelt att få ut dom med text GetProperty. Jag förutsätter också i mitt fall att assemblyn redan är laddad.... allt det här fungerar, var faktiskt otroligt enkelt... krävde typ 100 rader....

Problemet är om man ska introducera kontroller och klasser som inte tillhör System.Windows.Forms, hur ska jag utifrån namespacet och classnamnet ta reda på AssemblyName, möjligtvis lägger jag till att man måste skriva in namnet på dll filen också, i det här fallet System.Windows.Forms.dll, problemet är att alla sätt jag vet för att ladda en assembly kräver en absolut eller relativ sökväg till dll-filen. Det fungerar väl om den ligger i samma katalog som xml-filen men om dll-filen ligger i GAC:en hur tar jag reda på sökvägen då?

Hoppas det här hjälper er (att hjälpa mig :) )


Svara

Sv: AssemblyName

Postades av 2004-05-20 12:08:01 - Andreas Håkansson

Johan,

XAML mappar upp XML namespaces mot Namespace/Assembly par genom att göra följande

   <?Mapping XmlNamespace="animC" ClrNamespace="MSAvalon.Windows.Media.Animation" 
                               Assembly="PresentationCore" ?>
   <?Mapping XmlNamespace="animF" ClrNamespace="MSAvalon.Windows.Media.Animation" 
                               Assembly="PresentationFramework" ?>


De visar hur under <b>Animations</b> på http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnintlong/html/longhornch03.asp

Du kan troligen hitta mer information om <?Mapping> genom att använda Google/Google Groups eller titta i Longhorn SDK:n.

Men kontentan är att du måste ange <b>både</b> namespace och assembly name för att kunna använda kontrollerna i ditt XAML dokument, sen snyggar de till det genom att mappa till olika XML namespaces så man inte råkar ut för kollisioner med att klasser heter samma sak i olika namespaces.

Hoppas det löser sig!

//Andreas


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 156
27 952
271 704
13 882
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies