Views not being copied when publish the project in netcore 2.0 visual studio 2017

前端 未结 4 1095
野趣味
野趣味 2020-12-15 08:12

I have createa a ASP.NET Core 2.0 project in VS 2017. When I publish my project the Views folder are not there but the wwwroot folder is.

T

相关标签:
4条回答
  • 2020-12-15 08:36

    In .Net core 3.1, we need to add the following code in .csproj

     <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      <CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>
      </PropertyGroup>
    
    0 讨论(0)
  • 2020-12-15 08:40

    ASP.NET Core MVC has a precompilation feature, that could be added by referencing the Microsoft.AspNetCore.Mvc.Razor.ViewCompilation package. Feature enabling/disabling configured by MvcRazorCompileOnPublish property is .csproj.

    And by default, the package is added in ASP.NET Core 2.0 MVC applications:

    If you're targeting ASP.NET Core 2.0 or higher on netcoreapp2.0, a reference to the Microsoft.AspNetCore.Mvc.Razor.ViewCompilation package is added by Microsoft.AspNetCore.All and you do not need to explicitly reference it.

    and precompilation is enabled:

    The ASP.NET Core 2.x project templates implicitly set MvcRazorCompileOnPublish to true by default, which means this node can be safely removed from the .csproj file:

    <PropertyGroup>
        <TargetFramework>netcoreapp2.0</TargetFramework>
        <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
      </PropertyGroup>
    

    If you go to publish output folder, you will see dll like <project_name>.PrecompiledViews.dll which contains your views.

    0 讨论(0)
  • 2020-12-15 08:40

    On 3.1, I have tried all of the above with no .cshtml files appearing. Interesting, I do get .cs files copied across to publish folders. i.e. in my csproj, the first two work - the other does not

       <ItemGroup>
        <Compile Update="Pages\AisLayout.cs">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Compile>
        <Compile Update="Pages\Application.cs">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Compile>
      </ItemGroup>
    
      <ItemGroup>
        <Content Update="Pages\ApplicationState.cshtml">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Content>
        <Content Update="Pages\Cookies.cshtml">
          <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </Content>
    

    If I manually copy the files, I am able to modify them with dynamic recompile occurring (as expected). Note: The .cshtml has no code behind files (long story).

    More suggestions?

    0 讨论(0)
  • 2020-12-15 08:41

    It might be generating <project_name>.Views.dll by default. You need to set MvcRazorCompileOnPublishproperty false in your project .csproj file. By default it is true.

    <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>    
    </PropertyGroup>
    
    0 讨论(0)
提交回复
热议问题