Reputation: 17004
I want to deploy my website with precompiled views, for performance reasons. So I have configured UseMerge
and PrecompileBeforePublish
.
This is part of my publishing profile:
<PrecompileBeforePublish>True</PrecompileBeforePublish>
<EnableUpdateable>False</EnableUpdateable>
<UseMerge>True</UseMerge>
<SingleAssemblyName>Conwell.Administration.Views</SingleAssemblyName>
<DeleteAppCodeCompiledFiles>True</DeleteAppCodeCompiledFiles>
In the UI this is reflected:
My Conwell.Administration.Views.dll
gets successfull created. However after publishing, I have for each View an additional .precompiled
file in my bin folder:
The content reads as following:
<?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>
I tried to simple delete them, but then the website shows only a blank page. I don't like that many *.compiled
files. They add up to more than thousand.
For what are they used? ViewEngine? Is it somehow possible to disable them? Maybe a custom ViewEngine?
I have only found this thread so far, but it doesn't give any pointers.
Upvotes: 5
Views: 2233
Reputation: 89
For executable files in an ASP.NET Web application, the compiler assemblies and files with the .compiled file name extension. The assembly name is generated by the compiler. The .compiled file does not contain executable code. Instead, it contains only the information that ASP.NET needs to find the appropriate assembly.
After the precompiled application is deployed, ASP.NET uses the assemblies in the Bin folder to process requests. The precompilation output includes .aspx or .asmx files as placeholders for pages. The placeholder files contain no code. They exist only to provide a way to invoke ASP.NET for a specific page request and so that file permissions can be set to restrict access to the pages.
Source: https://msdn.microsoft.com/en-us/library/e22s60h9(v=vs.85).aspx
You will have to remove the pre-compile steps to remove them, or deploy the source code alone. Use build server to compile real time.
I would just leave them. They cause no harm.
Upvotes: 3