Hallo,
Ich hatte ein Problem, welches sich einigermassen als tückisch herausstellte. Ich habe es nun gelöst, allerdings konnte ich im Netz nirgens eine Lösung finden. Daher dachte ich, ich stelle das Problem sowie die Lösung hier kurz rein - evtl. hilft es jemandem in Zukunft.
Sollten Beiträge in dieser Art hier unerwünscht sein (oder an anderer Stelle besser aufgehoben), bitte ich einen Mod mir das mitzuteilen
Problem:
In einer WPF Anwendung mit Plugins wird in den Plugins selber auf Librarys mit XAML Views (UserControls) verwiesen und diese im Plugin instanziert/genutzt. Die gleichen Librarys werden auch von der MainApp referenziert und verwendet. Beim Instanzieren im Plugin einer solchen View erscheint dann bei InizializeComponent()-des Views die spärliche Fehlermeldung:
Zitat: |
Die Komponente Bla.Bla.Bla verfügt nicht über eine Ressource, die vom URI /la.Bla.Bla;component/controls/bla.xaml identifiziert wird.
|
In der Main Applikation wird diese View also problemlos verwendet, im Plugin scheitert der Versuch aber kläglich.
Lösung:
Das Problem liegt in der Tatsache begraben, dass der XAML loader intern eindeutige URIs haben muss. Wie uneindeutige URIs in dem Falle zustande kamen war mir lange ein Rätzel.
Da das Plugin eine Referenz auf die CustomControls.dll (eine Lib mit meinen Custom UserControls) hatte, und diese Library beim Build ebenfalls ins Plugindir kopierte, wurde beim laden des Plugins die CustomControls.dll anscheinend ein zweitesmal geladen.
Um das zu verhindern gibt es mehrere Möglichkeiten - ich habe bei den Pluginprojekten einfach bei sämtlichen referenzierten Assemblys das Property "Copy Local" auf false gesetzt, damit war das Problem behoben.
Grüsse