Asp.Net 核心 2 发布后出现错误 "Layout cannot be found"

Asp.Net Core 2 after publishing get error "Layout cannot be found"

发布应用程序后出现错误: “InvalidOperationException:无法找到布局视图‘_Layout’。搜索了以下位置: /Views/Home/_Layout.cshtml /Views/Shared/_Layout.cshtml

Microsoft.AspNetCore.Mvc.Razor.RazorView.GetLayoutPage(ViewContext上下文,字符串executingFilePath,字符串layoutPath)"

布局在 Views/Shared 文件夹中,应用程序在本地使用它,所以这一定是发布有问题。 不幸的是,在已发布的应用程序中,视图似乎全部包含在一个 dll 文件中,我无法采取任何措施来解决该问题。 可能是我的代码中的任何内容导致发布者忘记添加 _Layout.cshtml 视图? 我在 _ViewStart.cshtml 中参考了布局 这应该适用于所有页面。没有 Layout,我的应用注定失败,我不知道该怎么办。

好的,经过多次尝试,我找到了发布不包括我的布局页面的原因!这太棘手了,我很惊讶。我希望这可以帮助其他人! 当您右键单击布局文件(或任何其他文件)时,您会看到带有选项属性的菜单。我打开了布局文件的属性,我注意到那里有一个 "advanced" 选项:"Compilation Action"。我的选项设置为 "none",这意味着该文件未编译,因此未包含在发布中。我放在"Content"上,再次尝试发布,一切顺利,这次布局文件编译并包含在发布中。

在我的例子中,“复制到输出目录”设置为“不复制”,我将其更改为“如果更新则复制”,然后就可以了。