ich habe eine Anwendung in C# geschrieben, die einige andere Assemblies einbindet. Standardmäßig werden diese leider im selben Verzeichnis wie die Anwendung abgelegt. Ein auslagern in den Global Assembly Cache möchte ich nicht!
Nach kurzer Recherche im Web, habe ich erfahren, dass man einen "private binpath" setzen kann, der dann als Root-Suchpfad für diese Application benutzt wird. Leider steht nicht mit dabei wo man diesen setzt. Ich würde dann ein Unterverzecihnis anlegen, wo die ganzen Assemblies rein kommen.
Habe da mal bei den Verweispfaden rumgespielt...nur leider werden diese immer absolut übernommen ...ich bräuchte das aber relativ zum ApplicationPath. Wo könnte man das setzen?
Funktioniert es denn, wenn du die Assemblies in dasselbe Verzeichnis wie deine Applikation legst? Eventuell ist gar nicht das Probing das Problem, sondern das Nachladen funktioniert generell nicht. Andere Frage: Bekommst du irgendeine Exception?
Ja es funktioniert alles wenn die Assemblies mit dem Programm selbst im gleichen Verzeichnis liegen, aber genau das möchte ich nicht - einfach aus organisatorischen Gründen. So habe ich alle "Bibliothek-Assemblies" im Unterverzeichnis "shared" und alle Programme eine Ebene höher. ;-) Exception, tritt keine auf, es sei denn er kann die Assemblies nicht finden. Mit dem Eintrag in der app.conf stelle ja ich das aber sicher. Was ich mich nur noch frage ist, warum das Prefix "asm:" bei mir verwendet werden muß, damit es funktioniert.
Auf deinen ersten Link bin ich auch gestoßen, nur leider funktioniert das bei mir irgendwie nicht. Das mit der AppendPrivatePath() ist laut MSDN depricated. Allerdings schreibt Microsoft auch, dass man AppDomainSetup stattdessen verwenden soll, aber die Änderunegn sich dann nicht mehr auf eine bestehende AppDomain beziehen ;-(
Ich glaube, dass das dann geht, wenn Du für die hinzuzuladenden Assemblies eine eigene AppDomain verwendest. Beim Erzeugen und Konfigurieren der AppDomain kannst Du diese Pfade einstellen.
Allerdings hat das glaube ich den Nachteil, dass die Objekte dann von
MarshalByRefObject
abstammen müssen, weil Sie bei Kommunikation zwischen AppDomains serialisiert und deserialisiert werden - oder so ähnlich hab ich da was in Erinnerung...