【问题标题】:Umbraco LiveDll referencing from Separate Controller Project来自独立控制器项目的 Umbraco LiveDll 引用
【发布时间】:2016-11-03 11:06:15
【问题描述】:

我在web.config 中为我的Umbraco.ModelsBuilder.ModelsMode 启用了LiveDll,以获得强类型模型。您可能知道也可能不知道,这会在 Umbraco 网站的 bin 文件夹中的磁盘上生成一个名为 Umbraco.Web.PublishedContentModels 的 dll。

我的问题是我不明白如何从我的(单独的)控制器项目中获得“干净”的引用。 (我并不特别喜欢在网站bin 文件夹中“按原样”引用模型 dll。)

有人知道这是怎么设置的吗?

【问题讨论】:

  • 将其设置为 AppData 并渲染模型。之后将它们复制到一个单独的项目中,然后将它们引用到您的控制器项目中。

标签: umbraco umbraco7


【解决方案1】:

如果您引用 Umbraco.Web.PublishedContentModels.dll 从您的控制器项目中,然后您将导致循环引用,因此将无法正常工作。

我们的工作方式是将 ModelsBuilder 设置为 Dll

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

然后我们设置了一个Library 文件夹并将 dll 复制到该文件夹​​。然后另一个项目引用库中的 dll,因此我们不会得到循环引用。

所以我们的项目结构是这样的

MySolution
   UmbracoWebProject
   ControllersProject
   Library

我们不想在每次运行模型构建器时都将 dll 复制到库中,因此我们创建了一个 Pre-Build 事件来在每次构建时为我们复制 dll。

要创建 Pre-Build 事件,请在 Visual Studio 中右键单击 Umbraco 项目并选择属性。假设您的项目结构如上,选择 Build Events 并将以下内容添加到 Pre-Build。

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

使用 Dll 模式,您必须在更改 DocType 时从 Umbraco 显式运行模型构建器

这对我们来说效果很好,但它确实感觉好像这是一个仍然需要 Umbraco 和社区多考虑的领域。最好有一个“安装后忘记”的解决方案。

【讨论】:

  • 感谢您的回答!也许我没有想清楚,但我看不到循环引用的发生——PublishedContentModels.dll 不会知道我的控制器库,不是吗?不管怎样,你的建议和我自己想象的很接近。可惜“预构建”似乎是唯一可用的选项。
  • 我猜当你开始尝试在你的控制器中使用你的 Umbraco 生成的模型时,循环引用可能会启动......它几乎肯定会在某个时候咬你:)
猜你喜欢
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
相关资源
最近更新 更多