Netcore 3.1发布时,如何发布Views文件夹

这个问题,很好解决

在csproj文件中加入

  <RazorCompileOnBuild>false</RazorCompileOnBuild>
  <RazorCompileOnPublish>false</RazorCompileOnPublish>

这就能发布了。

 

但是我在发布的时候shared文件夹里我做了两个layout文件,我一般习惯自己在view里设定布局页面。

 

@{
    Layout = "~/Views/Shared/_layoutWeb.cshtml";
    ViewData["Title"] = "小确幸";
}

但是在发布的时候,view里就一直发布不出来这个layoutweb文件,导致每次输出,都有有一个500错误。

提示如下:

An unhandled exception has occurred while executing the request.
System.InvalidOperationException: The layout view '~/Views/Shared/_layoutWeb.cshtml' could not be located. The following locations were searched:
~/Views/Shared/_layoutWeb.cshtml

所以就换个思路。

 

还是要理解view的规则

View的查找规则: 先查找Controller对应的文件夹, 若未找到则到Shared文件夹查找, 若最终未找到则提示错误。

所以还是听他的 规则,不必自己指定。否则输出不出来了。

 

但是即便在对应文件夹里layout,也还是无法输出,需要手动拷贝。 

 

最后再检查csproj文件里的

  <ItemGroup>
    <Content Remove="Views\Shared\_layoutWeb.cshtml" />
  </ItemGroup>

这个属性,你会发现移除了这个文件,删除这个,就可以正常发布了。

 

这个都不知道是什么时候添加进去的,只要是你手动删除文件,这个就会自动生成一条记录,如果在创建这个文件也不会自动删除,需要手动删除。

 

感觉这就是个坑,是个大BUG。


版权声明:本文为jorzen1984原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。