Umbraco 8 模型生成器无法找到 doctype 生成的文件

Posted

技术标签:

【中文标题】Umbraco 8 模型生成器无法找到 doctype 生成的文件【英文标题】:Umbraco 8 Model builder not unable to find doctype generated file 【发布时间】:2020-11-13 11:40:33 【问题描述】:

我正在处理现有的 Umbraco 8 项目,并看到一些非常奇怪的行为。我通过本地主机创建了一个 doctype,它生成了 doctype.generated.cs 文件并将其添加到 Visual Studio,一切都很好。

在部署更改时,我进入模型生成器重新生成模型,看到它们出现在文件夹中,转到页面并得到错误

命名空间“Umbraco.Web.PublishedModels”中不存在名为“Blog”的类型或命名空间(您是否缺少程序集引用?)

我在 AppData 模式下将模型构建器运行到自定义路径,因此它们不会隐藏在 AppData 文件夹中。

我试过重启,把模式改成 PureLive 和 LiveAppData 还是不行

任何帮助将不胜感激

【问题讨论】:

您能解释一下您的环境设置以及您是如何部署网站的吗? 最初它被设置为一个虚拟目录,但现在它已经在 IIS 中移动到它自己的站点,我们通过 FTP 复制文件手动部署 那么您是在部署时通过 FTP 上传整个站点还是只是修补它?如果打补丁,你到底要上传什么?此外,您的本地站点是与实时站点共享相同的数据库,还是运行 2 个单独的数据库? 我们只是上传更改的文件,我们的本地主机和开发环境共享同一个数据库。当我加载开发站点时,它说模型已过时并重新构建它们。遗憾的是它并没有解决问题。 【参考方案1】:

有一件事总是让我感到困惑,如果您要为模型构建器使用 AppData,那么您需要始终跨项目 Dll 进行复制,我认为仅仅因为我正在更新视图我不需要担心,我错了。

跨项目 Dll 复制,错误消失

【讨论】:

确实如此。因此我的问题【参考方案2】:

顺便说一句,如果您与 dev 共享数据库,则无需上传模型 .cs 文件,也不应在服务器上生成它们。只在 dev 上生成然后推送 dll。您只需要 dll,因为模型已编译到 dll 中。不要忘记在部署 dll 之前构建项目。

有时会发生的另一件事(但不会导致任何错误)是您不小心在已发布的内容模型中上传了 ood.flag 文件。如果该文件存在,则模型将始终显示为过期。

【讨论】:

【参考方案3】:

从 PureLive 迁移到 LiveAppData:

    在 web.config 文件的“appSettings”下,“Umbraco.ModelsBuilder.ModelsMode”应设置为“LiveAppData”。

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

    ~/App_Data/Models/ 文件夹的内容应该被删除。

    应该删除~/App_Data/TEMP/文件夹的内容。

    让我们运行我们的项目。让我们转到后台中的设置 > 模型生成器页面,然后按“生成模型”按钮。 (因此,我们的模型将在 ~/App_Data/Models/ 文件夹中创建。但是,我们的项目仍然无法运行。)

    让我们停止我们的项目并将我们的模型包含在我们的项目中。

    让我们运行我们的项目。干得好

我希望它有效

【讨论】:

以上是关于Umbraco 8 模型生成器无法找到 doctype 生成的文件的主要内容,如果未能解决你的问题,请参考以下文章

Umbraco 路由或模型绑定

如何在 umbraco 中设置全球文化?

Umbraco中的部分模型

Umbraco中如何找到home node

csharp 与Umbraco ContentService一起使用的嵌套内容项的模型

无法从Web服务器复制Umbraco.sdf