出于性能原因,我想使用预编译视图部署我的网站。所以我已经配置了UseMerge和PrecompileBeforePublish。
这是我的出版档案的一部分:
<PrecompileBeforePublish>True</PrecompileBeforePublish>
<EnableUpdateable>False</EnableUpdateable>
<UseMerge>True</UseMerge>
<SingleAssemblyName>Conwell.Administration.Views</SingleAssemblyName>
<DeleteAppCodeCompiledFiles>True</DeleteAppCodeCompiledFiles>在UI中,这反映了:

我的Conwell.Administration.Views.dll成功地创建了。但是,在发布之后,我在bin文件夹中为每个视图提供了一个额外的.precompiled文件:

内容如下:
<?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?有可能让他们停用吗?也许是定制的ViewEngine?
到目前为止,我只找到了这条线,但它没有给出任何指示。
发布于 2017-09-20 15:34:36
对于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
您必须删除预编译步骤以删除它们,或者单独部署源代码。使用生成服务器实时编译。
我只想离开他们。它们不会造成任何伤害。
https://stackoverflow.com/questions/46325148
复制相似问题