• S
    Single-File: Process bundles in the framework (#34274) · 78b303df
    Swaroop Sridhar 提交于
    * Single-File: Process bundles in the framework
    
    This change implements the host changes proposed in the [design](https://github.com/dotnet/designs/blob/master/accepted/2020/single-file/design.md#startup)
    
    The main changes for single-file bundles are:
    * Bundle processing code is moved from apphost to hostpolicy
    * HostFxr and HostPolicy process deps.json and runtimeconfig.json files directly from the bundle.
    * HostPolicy performs verification wrt deps.json based on the contents of the single-file bundle.
    * AppContext.BaseDirectory is set as explained [here](https://github.com/dotnet/designs/blob/master/accepted/2020/single-file/design.md#appcontextbasedirectory)
    
    Currently, all files except deps.json and runtimeconfig.json are extracted to disk.
    Once the runtime is able to processing assemblies directly from the bundle, they will no longer be extracted.
    
    Notable details:
    * The bundle driver (formarly runner.cpp) is divided into two parts:
       * bundle::info which describes basic information about the bundle available from the headers only
       * bundle::runner which has information about all embedded files, and the ability to drive extraction
      This facilitates linking only parts of the bundle handling code with hostfxr, while all code is linked with hostpolicy.
    * The AppHost only links with bundle_marker to identify itself as a single-file bundle.
    * If the AppHost is a single-file bundle, it notifies hostfxr using the new hostfxr_main_bundle_startup_info() API
    * The HostFxr comminucates the single-file-information with HostPolicy using the host_interface_t structure.
    
    Fixes https://github.com/dotnet/runtime/issues/32821
    78b303df
info.h 2.8 KB