Certain Razor views not publishing

2019-05-07 10:18发布

问题:

Using VS 2017 with MVC 5 Razor views. When I publish my application, a handful of specific views do not get copied over.

I'd discovered several SE questions on this same issue from back in the 2010-2011 timeframe. At the time, the issue was that Build Action in the file's properties was not set to Content due to a bug in some early RC which has since been resolved. Well, all of mine already do day Content for Build Action.

Any reason why only a small number of views are not making it in the publish?

回答1:

As far as I'm aware, there are only 2 things that can cause this to happen.

  1. As you say in the question, the build action for each view needs to be set to "Content"
  2. The view files need to be included in the project file, so in the .csproj file there should be a line like this:

    <Content Include="Views\ControllerName\Index.cshtml" />
    


回答2:

Another one would be to set this in your csproje file. This was missing in mine, which caused it to make a precompiledviews.dll in my publish:

<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>

Set it to false explicitely in order to publish .cshtml files.



回答3:

Depending on the version of Visual Studio, excluding and then including partial view or its folder may work or not. The most certain way to do it is to remove it from .csproj file and then include it again.

lets say _LoginPartial is not updated after publishing (especially if you have some razor code).

First open '.csproj' file, and remove

<Content Include="Views\Shared\_LoginPartial.cshtml" />

The build the project, and then add it again to .csproj, and rebuild and publish.