从ASP.Net Core 2 API中删除PrecompiledViews.dll

Jaw*_*ikh 1 razor .net-core asp.net-core-webapi visual-studio-2017 asp.net-core-2.0

在.NET Core 2 Web API应用程序中,MS VS 2017中的发布到文件夹功能产生:

<ProjectAssembly>.PrecompiledViews.dll
<ProjectAssembly>.PrecompiledViews.pdb
Run Code Online (Sandbox Code Playgroud)

官方文档PrecompiledViews相关precompiling Razor Views,但我的API不包含任何视图或静态文件,只返回返回json的REST端点.

使用.Net反射器我发现PrecompiledViews.dll为.

在此输入图像描述

所以我删除PrecompiledViews.dll并测试了我的API,它似乎工作正常,没有任何警告或例外.

如果API不使用任何剃刀视图,删除PrecompiledViews.dll和pdp是否安全?如果是,VS 2017中是否有选项可以停止发布未使用的预编译视图?

Mar*_*ich 7

你是对的,预编译步骤总是发出一个程序集,不检查是否有实际的视图.您可以通过将其放入csproj文件来禁用预编译步骤:

<PropertyGroup>
  <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

然后,这将激活正常的联合上下文保留(refs子文件夹).要停用此功能,请添加

<PreserveCompilationContext>false</PreserveCompilationContext>
Run Code Online (Sandbox Code Playgroud)

到物业集团.