如何从bin文件夹中删除* .compiled文件?

时间:2017-09-20 14:44:20

标签: c# asp.net asp.net-mvc razor asp.net-mvc-5

出于性能原因,我想部署带有预编译视图的网站。所以我配置了UseMergePrecompileBeforePublish

这是我的发布资料的一部分:

<PrecompileBeforePublish>True</PrecompileBeforePublish>
<EnableUpdateable>False</EnableUpdateable>
<UseMerge>True</UseMerge>
<SingleAssemblyName>Conwell.Administration.Views</SingleAssemblyName>
<DeleteAppCodeCompiledFiles>True</DeleteAppCodeCompiledFiles>

在UI中反映出来:

checkbox

我的Conwell.Administration.Views.dll已成功创建。但是在发布之后,我在每个View中都有一个额外的.precompiled文件在我的bin文件夹中:

*.compiled files

内容如下:

<?xml version="1.0" encoding="utf-8"?>
<preserve resultType="2" virtualPath="/Areas/Bookings/Views/SepaDebits/Detail.cshtml" hash="fffffffff9d57aef" filehash="1737cd4f2d0e" flags="110000" assembly="Conwell.Administration.Views" type="ASP._Page_Areas_Bookings_Views_SepaDebits_Detail_cshtml">
  <filedeps>
    <filedep name="/Areas/Bookings/Views/SepaDebits/Detail.cshtml" />
  </filedeps>
</preserve>

我试图简单地删除它们,但随后网站只显示一个空白页面。我不喜欢那么多*.compiled个文件。它们总计超过一千个。

他们用的是什么?视图引擎?是否有可能禁用它们?也许是自定义的ViewEngine?

到目前为止我只找到this thread,但它没有给出任何指示。

1 个答案:

答案 0 :(得分:1)

  

对于ASP.NET Web应用程序中的可执行文件,编译器   具有.compiled文件扩展名的程序集和文件。该   程序集名称由编译器生成。 .compiled文件可以   不包含可执行代码。相反,它只包含信息   ASP.NET需要找到合适的程序集。

     

部署预编译的应用程序后,ASP.NET使用   Bin文件夹中的程序集用于处理请求。预编译   输出包括.aspx或.asmx文件作为页面的占位符。该   占位符文件不包含代码。它们的存在只是为了提供一种方法   为特定页面请求调用ASP.NET以及该文件   权限可以设置为限制对页面的访问。

来源:https://msdn.microsoft.com/en-us/library/e22s60h9(v=vs.85).aspx

您必须删除预编译步骤才能删除它们,或单独部署源代码。使用构建服务器实时编译。

我会离开他们。它们不会造成伤害。