ASP.NET Core için bağlayıcı yapılandırma Blazor

Blazor WebAssembly uygulamanın çıkış derlemelerinden gereksiz Il 'yi kırpmak için bir derleme sırasında ara dil (IL) bağlamayı gerçekleştirir. Hata ayıklama yapılandırmasında oluşturulurken bağlayıcı devre dışı bırakıldı. Bağlayıcı etkinleştirmek için uygulamaların yayın yapılandırmasında derlenmesi gerekir. Uygulamalarınızı dağıttığınızda yayında derleme yapmanızı öneririz Blazor WebAssembly .

Uygulama bağlama boyutu için en iyi duruma getirir, ancak bu etkilere sebep olabilir. Bağlayıcı bu dinamik davranışı öğrenmediği ve çalışma zamanında yansıma için hangi türlerin gerekli olduğunu belirleyemediği için yansıma veya ilgili dinamik özellikleri kullanan uygulamalar kırpılmayabilir. Bu tür uygulamaları kırpmak için bağlayıcı, koddaki yansıma tarafından gerek duyulan herhangi bir tür ve uygulamanın bağımlı olduğu paketler veya çerçeveler hakkında bilgilendirmelidir.

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 test etmek önemlidir.

uygulamalar için bağlama Blazor , bu MSBuild özellikleri kullanılarak yapılandırılabilir:

MSBuild özelliği ile bağlamayı denetleme

Bir uygulama yapılandırmada derlenmediğinde bağlama etkinleştirilir Release . bunu değiştirmek için, BlazorWebAssemblyEnableLinking proje dosyasında MSBuild özelliğini yapılandırın:

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

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

bir XML yapılandırma dosyası sağlayarak ve dosyayı proje dosyasında MSBuild bir öğe olarak belirterek derleme temelinde bağlama denetimi yapın:

<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 (mono/bağlayıcı GitHub deposu).

Kitaplığa bir 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 katıştırılmış kaynak olarak bir XML bağlayıcı yapılandırma dosyası ekleyin. Katıştırılmış kaynak, derlemeyle aynı ada sahip olmalıdır.

Aşağıdaki örnekte, LinkerConfig.xml Dosya, kitaplığın derlemesi ile aynı ada sahip gömülü bir kaynak olarak belirtilir:

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

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

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

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

<PropertyGroup>
  <BlazorWebAssemblyI18NAssemblies>{all|none|REGION1,REGION2,...}</BlazorWebAssemblyI18NAssemblies>
</PropertyGroup>
Bölge değeri Mono bölgesi derlemesi
all Tüm derlemeler dahil
cjk I18N.CJK.dll
mideast I18N.MidEast.dll
none varsayılanını Hiçbiri
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ı duruma getirme çerçeve kitaplığı (mono/mono GitHub deposu).

Ek kaynaklar