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.
This I can setup in my .csproj file with the following:
<ItemGroup>
<Content Update="appsettings.json;web.config" CopyToOutputDirectory="PreserveNewest"/>
<Content Update="Views\**\*" CopyToOutputDirectory="PreserveNewest" />
<Content Update="wwwroot\**\*" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
but didn't work.
On the computer where you have the ASP.NET project open in Visual Studio, right-click the project in Solution Explorer, and choose Publish. If you have previously configured any publishing profiles, the Publish pane appears. Click New or Create new profile. Select the option to import a profile.
pubxml and are located in the PublishProfiles folder. The PublishProfiles folder is under Properties in a C# web application project, under My Project in a VB web application project, or under App_Data in a web site project. Each . pubxml file contains settings that apply to one publish profile.
Basic command-line publishing 2\publish\. The dotnet publish command calls MSBuild, which invokes the Publish target. Any parameters passed to dotnet publish are passed to MSBuild.
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.
In .NET Core 3.1 or later, we need to add the following code in .csproj:
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>
</PropertyGroup>
According to the docs:
When
true
, copiesRazorGenerate
items (.cshtml) files to the publish directory. Typically, Razor files aren't required for a published app if they participate in compilation at build-time or publish-time. Defaults tofalse
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With