ich eine 3-Schicht-Web-Anwendung (web api ->Logik ->DAL) gemacht haben. Ein freigegebenes Projekt enthält alle Schnittstellen, die für die Injektion der Abhängigkeiten zwischen den Layern verwendet werden. Ich lade meine Layer als Komponenten mit MEF (Reflection). Somit hat das Web-API-Projekt keine Bauzeitabhängigkeit zu den anderen Layern! Dies bedeutet, dass die DLLs (logic.dll + DAL.dll) nicht im Ordner/bin der Web-API vorhanden sind - und somit wird das MEF meine DLLs nicht finden und laden..NET MEF laden unreferenced .dll
Alles funktioniert, wenn ich nur einen (unbenutzten) Verweis zwischen den Projekten in der Lösung hinzufüge - aber es macht keinen Sinn für mich, diese Abhängigkeit zu haben ... Der ganze Zweck der Verwendung von MEF-Komponenten war, alles zu entkoppeln und über Schnittstellen zu kommunizieren . :-)
Ich sehe. Aber ich bin immer noch verwirrt. Muss ich einen Ordner erstellen (zB '@" Z: \ MyAssemblies "') wo ich meine DLLs speichere? Bedeutet das, dass ich meine gewünschten DLLs manuell dort hineinlegen muss? Ich benutze einen TFS-Build-Server. Wenn ich meine Anwendung auf dem IIS-Server erstelle - würde dieser Ordner dort nicht existieren, oder? –
Sie können einen Ordner in Ihrem Projekt erstellen und dort DLLs hinzufügen und relative Pfade verwenden. Das habe ich gemacht – taquion
'Path.Combine (Environment.CurrentDirectory," CoolDirName ");' zum Beispiel – taquion