VS2017でASP.NETCore 2.0プロジェクトを作成しました。プロジェクトを公開すると、Views
フォルダーはありませんが、wwwroot
フォルダーはあります。
これは、.csprojファイルで次のように設定できます。
<ItemGroup>
<Content Update="appsettings.json;web.config" CopyToOutputDirectory="PreserveNewest"/>
<Content Update="Views\**\*" CopyToOutputDirectory="PreserveNewest" />
<Content Update="wwwroot\**\*" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
しかし、動作しませんでした。
ASP.NET Core MVCには precompilation 機能があり、Microsoft.AspNetCore.Mvc.Razor.ViewCompilation
パッケージを参照することで追加できます。 MvcRazorCompileOnPublish
プロパティで構成された機能の有効化/無効化は.csprojです。
また、デフォルトでは、パッケージはASP.NET Core 2.0MVCアプリケーションに追加されています。
Netcoreapp2.0でASP.NETCore 2.0以降を対象としている場合、 Microsoft.AspNetCore.Mvc.Razor.ViewCompilation パッケージへの参照がMicrosoft.AspNetCore.Allによって追加されますが、追加されません。明示的に参照する必要があります。
および プリコンパイルが有効になっています :
ASP.NET Core 2.xプロジェクトテンプレートは、デフォルトで
MvcRazorCompileOnPublish
を暗黙的にtrueに設定します。これは、このノードを.csprojファイルから安全に削除できることを意味します。<PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish> </PropertyGroup>
出力フォルダを公開すると、<project_name>.PrecompiledViews.dll
witchのようなdllにビューが含まれていることがわかります。
3.1では、.cshtmlファイルが表示されない状態で、上記のすべてを試しました。興味深いことに、.csファイルをコピーしてフォルダーを公開します。つまり、私のcsprojでは、最初の2つは機能しますが、もう1つは機能しません
<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>
ファイルを手動でコピーすると、動的再コンパイルが発生するようにファイルを変更できます(予想どおり)。注:.cshtmlにはファイルの背後にコードがありません(長い話)。
その他の提案?
デフォルトで<project_name>.Views.dll
を生成している可能性があります。プロジェクトの.csproj
ファイルにMvcRazorCompileOnPublish
property false
を設定する必要があります。デフォルトではtrue
です。
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>