Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Welche Assembly aus dem GAC wird geladen, wenn sich zwei Assemblies nur in der Kultur unterscheiden?
degri2006
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

Welche Assembly aus dem GAC wird geladen, wenn sich zwei Assemblies nur in der Kultur unterscheiden?

beantworten | zitieren | melden

Hallo,
ich habe mal eine Frage zu Assemblies und dem GAC und Assemblies. Jede Assembly hat ja eine Kulturangabe. Was passiert, wenn sich zwei Assemblies nur durch ihre Kulturangaben unterscheiden. Welche Assembly wird denn übernommen? Wie wird es entschieden? Wenn z.B zwei Assemblies die Primärangabe de, Sekunderangabe keine und Primärangabe de , Sekundärangabe ch hat. Von welcher Instanz wird entschieden, welche Assembly genommen wird? Steht denn irgendwo in der Datenbank der GAC drin, in welcher Reiehenfolge man die Kulturangaben berücksichtigen soll??
private Nachricht | Beiträge des Benutzers
kleines_eichhoernchen
myCSharp.de - Member

Avatar #avatar-2079.jpg


Dabei seit:
Beiträge: 4055
Herkunft: Ursprünglich Vogtland, jetzt Much

beantworten | zitieren | melden

Es wird immer die Assembly (GAC oder nicht auch lokal) geladen, gegen die du dein Projekt kompiliert hast. Das ganze nennt sich vollqualifizierender Assemblyname. Dabei müssen Name der Assembly, Kultur, Version und PublicToken exakt übereinstimmen. Das laden übernimmt für dich dann die CLR.

Möchtest du eine andere Vorgehensweise, musst du dein Projekt auf Late-Binding umbauen und die entsprechende Assembly selbst laden.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
private Nachricht | Beiträge des Benutzers
degri2006
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

beantworten | zitieren | melden

Hallo,
damit ich das richtig verstehe. Es wird immer das Assembly genommen, dessen Kultur mit den Assemblies aus meinem Projekt übereinstimmen?
Wenn ich z.B. ein Programm in C# schreibe und in dem Quelltext schreibe, dass er noch eine Assembly aus dem GAC laden soll, diese aber zweimal in dem GAC existiert, nur in verschiendenen Kulturversionen, dann wird immer das Assembly genommen, dessen Kultur mit Kultur aus der AssemblyInfo.cs aus meinem Projekt übereinstimmt. Ist das so richtig?
private Nachricht | Beiträge des Benutzers
kleines_eichhoernchen
myCSharp.de - Member

Avatar #avatar-2079.jpg


Dabei seit:
Beiträge: 4055
Herkunft: Ursprünglich Vogtland, jetzt Much

beantworten | zitieren | melden

Nein, wenn du ein Projektverweis auf eine Assembly hast, wird immer der vollqualifizierende Assembly-Name in deiner Anwendung/Bibliothek gespeichert. Das gleiche wenn du Assembly.Load (nicht Loadfrom) benutzt. Im vollqualifizierenden Namen ist u.a. die Kultur enthalten. Die CLR sucht an anschließend beim Laden (entweder Assembly.Load oder Programmstart) nur nach diesem vollqualifizierenden Assemblynamen.

Der vollqualifizierende Assembly kann quasi als eindeutige ID betrachtet werden.

Verwendest du hingegen Assembly.Loadfrom musst du selbst auf den vollqualifizierenden Assemblynamen achten.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
private Nachricht | Beiträge des Benutzers