2016-11-03 1 views
1

Ich habe LiveDll für meine Umbraco.ModelsBuilder.ModelsMode in web.config aktiviert, um stark typisierte Modelle zu bekommen. Wie Sie vielleicht wissen oder nicht, erzeugt dies eine DLL auf der Festplatte Umbraco.Web.PublishedContentModels im Ordner bin der Umbraco Website.Umbraco LiveDll Referenzierung von separaten Controller-Projekt

Mein Problem ist, dass ich nicht verstehe, wie man eine "saubere" Referenz von meinem (separaten) Controller-Projekt bekommt. (Ich genieße nicht besonders die Aussicht auf die Modelle dll verweisen "wie es ist" in der Website bin Ordner.)

Wer weiß, wie dies eingerichtet werden soll?

+0

Legen Sie es als AppData fest und rendern Sie die Modelle. Kopieren Sie diese anschließend in ein separates Projekt und verweisen Sie diese dann auf Ihr Controller-Projekt. – Mivaweb

Antwort

0

Wenn Sie die Umbraco.Web.PublishedContentModels.dll von Ihrem Controller-Projekt referenzieren, dann verursachen Sie einen Zirkelverweis, so dass es nicht funktioniert.

Die Art, wie wir sie haben Arbeit ist durch die ModelsBuilder

<add key="Umbraco.ModelsBuilder.ModelsMode" value="Dll" /> 

Wir haben dann einen Library Ordner DLL Einstellung und kopiert die DLL in diesem Ordner festgelegt. Das andere Projekt verweist dann auf die DLL in der Bibliothek, sodass wir keinen Zirkelverweis erhalten.

So ist unsere Projektstruktur ist so etwas wie

MySolution 
    UmbracoWebProject 
    ControllersProject 
    Library 

Wir wollen nicht die DLL in die Bibliothek kopieren jedes Mal, wenn wir die modelsbuilder laufen, so haben wir eine Pre-Build-Ereignis die DLL für uns zu kopieren auf jedem Build.

Um das Pre-Build-Ereignis zu erstellen, klicken Sie mit der rechten Maustaste auf das Umbraco-Projekt in Visual Studio und wählen Sie Eigenschaften. Wählen Sie Build Events und fügen Sie dem Pre-Build folgendes hinzu, vorausgesetzt, Ihre Projektstruktur ist wie oben.

IF EXIST "$(ProjectDir)bin\Umbraco.Web.PublishedContentModels.dll" xcopy "$(ProjectDir)bin\Umbraco.Web.PublishedContentModels.dll" "$(SolutionDir)Library" /y 

Dll-Modus verwenden, müssen Sie explizit die Modelle Builder von Umbraco ausgeführt, wenn Sie Ihre DocTypes ändern

Dies funktioniert gut für uns, aber es fühlt sich, als ob es ein Bereich ist, der muss noch etwas mehr von Umbraco und der Gemeinde gedacht werden. Es wäre schön, eine "Install and Forget" -Lösung dafür zu haben.

+0

Vielen Dank für Ihre Antwort! Vielleicht denke ich nicht gerade, aber ich kann die zirkuläre Referenz nicht sehen - die 'PublishedContentModels.dll' würde meine Controller-Bibliothek nicht bemerken, nicht wahr? Wie auch immer, was Sie vorschlagen, ist nah an dem, was ich mir vorgestellt habe. Es ist schade, dass "Pre-Build" die einzige verfügbare Option ist. –

+0

Ich schätze, der Kreisreflex könnte einspringen, wenn du anfängst, deine von Umbraco generierten Modelle in deinen Controllern zu verwenden ... das wird dich fast irgendwann beißen :) – wingyip