类型或命名空间名称';产品';命名空间中不存在';Umbraco.Web.PublishedContentModels';

类型或命名空间名称';产品';命名空间中不存在';Umbraco.Web.PublishedContentModels';,umbraco,Umbraco,我正在维护一个Umbraco解决方案(版本7.15.3)。 最近发现了一个bug:导航到某个页面时失败,出现以下错误: 命名空间中不存在类型或命名空间名称“Products” “Umbraco.Web.PublishedContentModels”(是否缺少程序集 参考?) 这并不奇怪,最近有几次版本升级,都是由不在公司的人执行的。例如,ModelBuilder(我相信与此相关)最近从3.0.7版升级到3.0.10版 由于不太了解这个问题,我首先尝试查找Umbraco.Web.Published

我正在维护一个Umbraco解决方案(版本7.15.3)。 最近发现了一个bug:导航到某个页面时失败,出现以下错误:

命名空间中不存在类型或命名空间名称“Products” “Umbraco.Web.PublishedContentModels”(是否缺少程序集 参考?)

这并不奇怪,最近有几次版本升级,都是由不在公司的人执行的。例如,ModelBuilder(我相信与此相关)最近从3.0.7版升级到3.0.10版

由于不太了解这个问题,我首先尝试查找Umbraco.Web.PublishedContentModels。令我惊讶的是,它不在umbraco\umbraco.Web\Lib或umbraco\umbraco.Web\bin中,而且当我构建解决方案时,它没有生成

我最终在一个文件夹中找到了它,看起来像这样:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET 文件\root\74e32662\fd1a65f5\assembly\dl3\09bc313a\c9c37261\u f6d1d501

奇怪的是,虽然UAT服务器有一个这样的位置,但生产服务器有4个这样的位置(路径只在最后一个文件夹名上有所不同)

幸运的是,虽然这个错误出现在生产环境中,而且当我在本地运行项目时,页面只在UAT环境中工作。因此,我从UAT获取dll并复制到生产服务器上的umbraco\UmbracoWeb\bin。这解决了问题,但这只是一个暂时的解决方案。除非我正确地修复它,否则下次有人进行更改并重新部署生产时,问题可能会再次出现

我有一个名为Products.cshtml的页面,前两行有以下内容:

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.Products>
@using ContentModels = Umbraco.Web.PublishedContentModels;
@继承Umbraco.Web.Mvc.UmbracoTemplatePage
@使用ContentModels=Umbraco.Web.PublishedContentModels;
第一行的“Products”位带下划线,它在VS中给出的错误与我在运行时得到的错误相同。由于怀疑ModelBuilder程序集的升级可能是原因,我尝试检查升级之前的版本。但错误仍然存在

该解决方案还有另一个项目,该项目引用自Umbraco项目。它有一个名为Products的类,但我不知道这是否有任何关联。Products类不继承任何内容


我怎样才能解决这个问题?有没有办法重新创建正确的Umbraco.Web.PublishedContentModels dll并正确引用它?

ModelsBuilder由Web.config中的一些设置驱动,可以配置为以多种不同方式运行-请参阅此处以获取参考-

听起来您已经将此设置为
PureLive

我的偏好一直是将它们作为源代码的一部分,当某些内容发生变化时生成它们,并将它们作为解决方案的一部分

无论何时通过Umbraco Admin对文档类型进行更改,这些文件都将重新生成,并可以作为源代码管理的一部分签入。然后可以将它们编译成您选择的dll/项目

希望这有帮助