2016-11-03 6 views
1

Umbraco.ModelsBuilder.ModelsModeweb.configに設定した場合は、LiveDllを有効にしました。あなたが知っているかどうか分からない場合、UmbracoのWebサイトのbinフォルダにあるUmbraco.Web.PublishedContentModelsという名前のディスク上にdllが生成されます。Umbraco LiveDllがSeparate Controller Projectから参照しています

私の問題は、私の(別の)コントローラプロジェクトから "クリーン"リファレンスを取得する方法を理解できないことです。 (特に私はモデルdllを "現状のまま" Webサイトbinフォルダに参照する見込みはありません)

これはどのように設定されているのでしょうか?

+0

AppDataとして設定し、モデルをレンダリングします。その後、それらを別々のプロジェクトにコピーし、コントローラプロジェクトに参照してください。 – Mivaweb

答えて

0

コントローラプロジェクトからUmbraco.Web.PublishedContentModels.dll を参照すると、循環参照が機能しないようになります。

我々はそれが働いている方法は、我々はその後、Libraryフォルダを設定し、そのフォルダにDLLをコピーしたDllファイル

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

をModelsBuilderを設定することです。他のプロジェクトは、ライブラリ内のdllを参照するため、循環参照を取得しません。

だから、私たちのプロジェクトの構造は、私たちは私たちのためにdllファイルをコピーするビルド前のイベントを作成しましたので、私たちは図書館に我々はmodelsbuilderを実行するたびに、DLLをコピーしたくない

MySolution 
    UmbracoWebProject 
    ControllersProject 
    Library 

のようなものですすべてのビルドで。

プレビルドイベントを作成するには、Visual StudioでUmbracoプロジェクトを右クリックし、[プロパティ]を選択します。 [ビルドイベント]を選択し、プロジェクト構造が上記のようになっていることを前提として、次のものをビルド前に追加します。 Dllファイルモードを使用して

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

、あなたはあなたのdoctype

これが私たちのためにうまく機能を変更するたびに、明示的にUmbracoからモデルビルダーを実行する必要がありますが、それはまだ必要のある領域であるかのようにそれは感じませんウンブラとコミュニティによってもう少し考えてみてください。このために「インストールして忘れる」ソリューションを用意することはうれしいことです。

+0

お返事ありがとうございます!たぶん私はまっすぐ考えるつもりはないが、私は循環参照が起こっているのを見ることができない - 'PublishedContentModels.dll'は私のコントローラライブラリを知らないだろう?とにかく、自分が想像していたものに近いと思います。残念ながら、 "プレビルド"は利用可能な唯一のオプションのようです。 –

+0

Umbracoがコントローラで生成したモデルを試してみると、循環参照が入り込むかもしれませんね...いつかあなたを噛んでしまうでしょう:) – wingyip

関連する問題