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

时间:2017-10-12 02:21:16

标签: 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

Offical docs表示与precompiling Razor Views相关的预编译视图,但我的API不包含任何视图或静态文件,只返回返回json的REST端点。

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

enter image description here

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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

<PreserveCompilationContext>false</PreserveCompilationContext>

到物业组。