bağlayıcıyı ASP.NET Çekirdek için yapılandırma Blazor

Bu makalede, uygulama oluştururken Blazor Ara Dil (IL) Bağlayıcısının nasıl denetlenecekleri açıklanmaktadır.

Blazor WebAssembly uygulamanın çıkış derlemelerinden gereksiz IL'yi kırpmak için derleme sırasında Ara Dil (IL) bağlaması gerçekleştirir. Bağlayıcı Hata ayıklama yapılandırmasında oluşturulurken devre dışı bırakılır. Bağlayıcıyı etkinleştirmek için uygulamaların Yayın yapılandırmasında derlenmelidir. Uygulamalarınızı dağıtırken Yayın'da derlemenizi Blazor WebAssembly öneririz.

Bir uygulamanın bağlanması boyut açısından iyileştirir, ancak zarar verici etkileri olabilir. Bağlayıcı bu dinamik davranışı bilmediğinden ve çalışma zamanında yansıma için hangi türlerin gerekli olduğunu genel olarak belirleyemediğinden, yansıma veya ilgili dinamik özellikleri kullanan uygulamalar kırpıldığında bozulabilir. Bu tür uygulamaları kırpmak için bağlayıcının kodda ve uygulamanın bağımlı olduğu paketlerde veya çerçevelerde yansımanın gerektirdiği türler hakkında bilgilendirilmesi gerekir.

Kırpılan uygulamanın dağıtıldıktan sonra düzgün çalıştığından emin olmak için geliştirme sırasında uygulamanın Yayın derlemelerini sık sık test etmek önemlidir.

Uygulamalar için Blazor bağlama şu MSBuild özellikleri kullanılarak yapılandırılabilir:

  • MSBuild özelliğiyle genel olarak bağlamayı yapılandırın.
  • Yapılandırma dosyasıyla derleme başına bağlamayı denetleme.

MSBuild özelliğiyle bağlantı denetimi

Bir uygulama Release yerleşik olarak yapılandırıldığında bağlama etkinleştirilir. Bunu değiştirmek için proje dosyasında MSBuild özelliğini yapılandırın BlazorWebAssemblyEnableLinking :

<PropertyGroup>
  <BlazorWebAssemblyEnableLinking>false</BlazorWebAssemblyEnableLinking>
</PropertyGroup>

Yapılandırma dosyasıyla bağlamayı denetleme

XML yapılandırma dosyası sağlayarak ve dosyayı proje dosyasında MSBuild öğesi olarak belirterek derleme başına bağlamayı denetleyin:

<ItemGroup>
  <BlazorLinkerDescriptor Include="LinkerConfig.xml" />
</ItemGroup>

LinkerConfig.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!--
  This file specifies which parts of the BCL or Blazor packages must not be
  stripped by the IL Linker even if they aren't referenced by user code.
-->
<linker>
  <assembly fullname="mscorlib">
    <!--
      Preserve the methods in WasmRuntime because its methods are called by 
      JavaScript client-side code to implement timers.
      Fixes: https://github.com/dotnet/blazor/issues/239
    -->
    <type fullname="System.Threading.WasmRuntime" />
  </assembly>
  <assembly fullname="System.Core">
    <!--
      System.Linq.Expressions* is required by Json.NET and any 
      expression.Compile caller. The assembly isn't stripped.
    -->
    <type fullname="System.Linq.Expressions*" />
  </assembly>
  <!--
    In this example, the app's entry point assembly is listed. The assembly
    isn't stripped by the IL Linker.
  -->
  <assembly fullname="MyCoolBlazorApp" />
</linker>

Daha fazla bilgi ve örnek için bkz . Veri Biçimleri (dotnet/linker GitHub deposu).

Kitaplığa XML bağlayıcı yapılandırma dosyası ekleme

Bağlayıcıyı belirli bir kitaplık için yapılandırmak için, kitaplığa ekli kaynak olarak bir XML bağlayıcı yapılandırma dosyası ekleyin. Katıştırılmış kaynağın adı derlemeyle aynı olmalıdır.

Aşağıdaki örnekte dosya, kitaplığın LinkerConfig.xml derlemesi ile aynı ada sahip bir ekli kaynak olarak belirtilir:

<ItemGroup>
  <EmbeddedResource Include="LinkerConfig.xml">
    <LogicalName>$(MSBuildProjectName).xml</LogicalName>
  </EmbeddedResource>
</ItemGroup>

Bağlayıcıyı uluslararası hale getirme için yapılandırma

Varsayılan olarak, 'nin uygulamalar için Blazor WebAssembly bağlayıcı yapılandırması, Blazoraçıkça istenen yerel ayarlar dışında uluslararasılaştırma bilgilerini çıkarır. Bu derlemelerin kaldırılması uygulamanın boyutunu en aza indirir.

Hangi I18N derlemelerinin tutulacaklarını denetlemek için proje dosyasında MSBuild özelliğini ayarlayın <BlazorWebAssemblyI18NAssemblies> :

<PropertyGroup>
  <BlazorWebAssemblyI18NAssemblies>{all|none|REGION1,REGION2,...}</BlazorWebAssemblyI18NAssemblies>
</PropertyGroup>
Bölge Değeri Mono bölge derlemesi
all Dahil edilen tüm derlemeler
cjk I18N.CJK.dll
mideast I18N.MidEast.dll
none (varsayılan) None
other I18N.Other.dll
rare I18N.Rare.dll
west I18N.West.dll

Birden çok değeri ayırmak için virgül kullanın (örneğin, mideast,west).

Daha fazla bilgi için bkz . I18N: Pnetlib Uluslararasılaştırma Çerçevesi Kitaplığı (mono/mono GitHub deposu).

Ek kaynaklar