Suchen nach Assemblydateien
Aktivierungskontexte können dem Ladeprogramm helfen, Assemblydateien zu finden. Wenn das Ladeprogramm nach einer Datei sucht, die anhand des Namens geladen werden soll, sucht es zunächst nach Dateien mit dem angegebenen Namen, auf die von Assemblys verwiesen wird, die Mitglieder des derzeit aktiven Aktivierungskontexts sind. Durch einen Aufruf von SearchPath werden diese Dateien ebenfalls zuerst gesucht. Dateien mit dem angegebenen Namen und dem aktuellen Aktivierungskontext werden vor Dateien mit dem Namen im lokalen Verzeichnis oder in der PATH-Umgebungsvariablen gefunden und geladen. Das bedeutet, dass Sie beim Erstellen von Manifesten alle Dateien auflisten müssen, die Sie mit SearchPath, LoadLibraryoder statischen Importen verwenden möchten.
Beachten Sie, dass diese Dateien nicht automatisch gefunden werden, wenn CreateFile oder andere Funktionen verwendet werden, die nicht nach Dateien suchen. Um diese Dateien mit CreateFile zu verwenden, verwenden Sie zuerst SearchPath, um den Pfad zur isolierten Datei zu suchen, und verwenden Sie dann CreateFile für den zurückgegebenen Pfad.
Diese Methode der Dateisuche hilft, isolierte Anwendungen getrennt zu halten, da sich mehrere Dateien mit demselben Namen dann nur durch ihre Zuordnung zu Assemblys unterschiedlicher Versionsnummern unterscheiden können. Das Betriebssystem kann die richtige Datei finden, die bei Dateivorgängen verwendet werden soll.
Wenn eine DLL auf diese Weise mit LoadLibrarygeladen wird, wird der Einstiegspunkt dieser DLL (DllMain) aufgerufen, während der ursprüngliche Aktivierungskontext aktiv bleibt, es sei denn, die DLL selbst enthält ein Manifest bei einer bestimmten Ressourcen-ID (ISOLATIONAWARE _ MANIFEST RESOURCE _ _ ID, oder 2).