Ich habe eine Assembly vollständig mit Klassen gefüllt, die Schnittstellen in einer anderen Assembly implementieren. Zum Beispiel:Assembly wird von Build optimiert
Main Assembly (Reference to both assemblies)
Shared Assembly
-----IModule
Class Assembly (Reference to shared assembly)
-----unknownType : IModule
-----unknownType2 : IModule
Die Hauptbaugruppe hat keinen direkten Bezug auf einen der Typen in der Klassenbaugruppe. Ich suche nach der Art, wie so:
// Load all referenced assemblies:
Assembly.GetExecutingAssembly().GetReferencedAssemblies()
.Except(AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName()))
.Distinct()
.ToList()
.ForEach(act => Assembly.Load(act));
// Find all instances of IModule in loaded assemblies:
var modules = from asm in AppDomain.CurrentDomain.GetAssemblies()
from provider in asm.GetTypes()
where typeof(IModule).IsAssignableFrom(provider)
...instantiate type etc...
Wenn ich einen Verweis auf nur eine beliebige Art in der Klasse Assembly habe, dann zeigt es in GetReferencedAssemblies up, werde geladen und wieder korrekt - aber sobald i Entfernen Sie den Verweis auf den Typ, es wird nicht in das Erstellungsverzeichnis übertragen oder als referenzierte Assembly angezeigt, die zum Fehlschlagen des Ladevorgangs führt.
Gibt es eine Möglichkeit, VS zu zwingen, diese Assembly in das Ausgabeverzeichnis aufzunehmen? Die Hauptanwendung sollte keinen der Typen innerhalb der Klassenassemblierung kennen.
Ich erinnere mich, ein ähnliches Problem zu haben, und die einzige Lösung, die ich fand, war, einen Dummy - Aufruf zu den referenzierten Assemblys im Projekt hinzuzufügen ... –
@KevinD: Da die Hauptbaugruppe nicht wissen soll, was in der class assembly, kann ich keinen Dummy-Verweis realistisch hinzufügen, es sei denn, dass ein Typ in der Klassenassemblierung speziell für diesen Zweck erstellt wird. Das Problem besteht darin, dass das Beispiel hier vereinfacht dargestellt ist, und dies würde dem Design unnötige Komplikationen und Schmutz hinzufügen. – caesay
Ist dies ein lösungsspezifisches Problem oder können Sie Schritte zur Reproduktion in einem beliebigen Kontext bereitstellen? – Grx70