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

Razor 从ASP.Net Core 2 API中删除PrecompiledViews.dll,razor,.net-core,visual-studio-2017,asp.net-core-webapi,asp.net-core-2.0,Razor,.net Core,Visual Studio 2017,Asp.net Core Webapi,Asp.net Core 2.0,在.NET Core 2 Web API应用程序中,在MS VS 2017中发布到文件夹功能: <ProjectAssembly>.PrecompiledViews.dll <ProjectAssembly>.PrecompiledViews.pdb 表示预编译视图与预编译Razor视图相关,但我的API不包含任何视图或静态文件,只包含返回json的REST端点 使用.Net reflector,我发现PrecompiledViews.dll为空 因此,我删除了Pre

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

<ProjectAssembly>.PrecompiledViews.dll
<ProjectAssembly>.PrecompiledViews.pdb
表示预编译视图与预编译Razor视图相关,但我的API不包含任何视图或静态文件,只包含返回json的REST端点

使用.Net reflector,我发现PrecompiledViews.dll为空

因此,我删除了PrecompiledViews.dll并测试了我的API,它似乎工作正常,没有任何警告或异常


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

您是对的,预编译步骤始终会发出程序集,并且不会检查是否确实存在视图。您可以通过将其放入csproj文件中来禁用预编译步骤:

<PropertyGroup>
  <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>

到属性组。

您说得对,预编译步骤始终会发出程序集,并且不会检查是否确实存在视图。您可以通过将其放入csproj文件中来禁用预编译步骤:

<PropertyGroup>
  <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>

到属性组。

刚刚打开了GH问题,用于在无视图站点上禁用预编译。刚刚打开了GH问题,用于在无视图站点上禁用预编译。不,这还不够好,它生成了包含148个文件的“refs”子文件夹!在更改csproj之前,如您所述,没有生成“refs”子文件夹。将其添加到回答中哦,不,这还不够好,它会生成包含148个文件的“refs”子文件夹!如前所述更改csproj之前,未生成“refs”子文件夹。已将其添加到答案中