Aracılığıyla paylaş


Kırpma seçenekleri

Bu makalede açıklanan MSBuild özellikleri ve öğeleri kırpılmış, bağımsız dağıtımların davranışını etkiler. Seçeneklerden ILLinkbazıları, kırpmayı uygulayan temel aracın adı olan değerini ifade eder. Temel alınan araç hakkında daha fazla bilgi için, Düzeltici belgelerine bakın.

ile PublishTrimmed kırpma .NET Core 3.0'da kullanıma sunulmuştur. Diğer seçenekler .NET 5 ve sonraki sürümlerde kullanılabilir.

Kırpmayı etkinleştirme

  • <PublishTrimmed>true</PublishTrimmed>

    Yayımlama sırasında kırpmayı etkinleştirin. Bu ayar, kırpma uyumsuz özellikleri de kapatır ve derleme sırasında kırpma analizini etkinleştirir. .NET 8 ve üzeri uygulamalarda bu ayar yapılandırma bağlamasını ve istek temsilcisi kaynak oluşturucularını da etkinleştirir.

Not

Kırpmayı komut satırından etkin olarak belirtirseniz hata ayıklama deneyiminiz farklılık gösterir ve son üründe ek hatalarla karşılaşabilirsiniz.

Ayarın yalnızca dotnet buildyerine sırasında dotnet publishuygulandığından emin olmak için bu ayarı proje dosyasına yerleştirin.

Bu ayar ayrıca kırpma uyumluluğu Roslyn çözümleyicisini etkinleştirir ve kırpma ile uyumlu olmayan özellikleri devre dışı bırakır.

Roslyn çözümleyicisi

PublishTrimmed.NET 6+ ayarı, sınırlı sayıda analiz uyarısı gösteren bir Roslyn çözümleyicisini de etkinleştirir. Çözümleyiciyi uygulamasından bağımsız olarak PublishTrimmedda etkinleştirebilir veya devre dışı bırakabilirsiniz.

  • <EnableTrimAnalyzer>true</EnableTrimAnalyzer>

    Kırpma analizi uyarılarının bir alt kümesi için Roslyn çözümleyicisini etkinleştirin.

Uyarıları gizleme

, , ve NoWarngibi WarningsAsErrorsWarningsNotAsErrorsaraç zinciri tarafından dikkate alınan normal MSBuild özelliklerini kullanarak tek tek TreatWarningsAsErrors gizleyebilirsiniz. ILLink hata olarak uyar davranışını bağımsız olarak denetleen ek bir seçenek vardır:

  • <ILLinkTreatWarningsAsErrors>false</ILLinkTreatWarningsAsErrors>

    ILLink uyarılarını hata olarak değerlendirin. Bu, derleyici uyarılarını genel olarak hata olarak ele alırken kırpma çözümleme uyarılarını hataya dönüştürmekten kaçınmak için yararlı olabilir.

Ayrıntılı uyarıları göster

.NET 6+'da kırpma analizi, bir derlemeden gelen her derleme için en fazla bir PackageReferenceuyarı üretir ve derlemenin iç bileşenlerinin kırpmayla uyumlu olmadığını belirtir. Ayrıca tüm derlemeler için ayrı ayrı uyarılar da gösterebilirsiniz:

  • <TrimmerSingleWarn>false</TrimmerSingleWarn>

    Derleme başına tek bir uyarıya daraltmak yerine tüm ayrıntılı uyarıları gösterin.

Simgeleri kaldırma

Simgeler genellikle kırpılan derlemelerle eşleşecek şekilde kırpılır. Tüm simgeleri de kaldırabilirsiniz:

  • <TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>

    Kırpılan uygulamadan ekli PDB'ler ve ayrı PDB dosyaları da dahil olmak üzere simgeleri kaldırın. Bu, hem uygulama kodu hem de sembollerle birlikte gelen tüm bağımlılıklar için geçerlidir.

SDK, özelliğini DebuggerSupportkullanarak hata ayıklayıcısı desteğini devre dışı bırakmayı da mümkün kılar. Hata ayıklayıcısı desteği devre dışı bırakıldığında, kırpma simgeleri otomatik olarak kaldırır (TrimmerRemoveSymbols varsayılan olarak true olur).

Çerçeve kitaplığı özelliklerini kırpma

Çerçeve kitaplıklarının çeşitli özellik alanları, devre dışı bırakılan özelliklerin kodunu kaldırmayı mümkün hale getiren düzeltici yönergeleriyle birlikte gelir.

MSBuild özelliği Açıklama
AutoreleasePoolSupport olarak falseayarlandığında, desteklenen platformlarda otomatik sürüm havuzları oluşturan kodu kaldırır. false .NET SDK'sı için varsayılandır.
DebuggerSupport olarak falseayarlandığında, daha iyi hata ayıklama deneyimleri sağlayan kodu kaldırır. Bu ayar simgeleri de kaldırır.
EnableUnsafeBinaryFormatterSerialization olarak ayarlandığında falseBinaryFormatter serileştirme desteğini kaldırır. Daha fazla bilgi için bkz . BinaryFormatter serileştirme yöntemleri eski ve In-box BinaryFormatter uygulaması kaldırıldı ve her zaman atar.
EnableUnsafeUTF7Encoding olarak falseayarlandığında, güvenli olmayan UTF-7 kodlama kodunu kaldırır. Daha fazla bilgi için bkz . UTF-7 kod yolları kullanımdan kaldırıldı.
EventSourceSupport olarak falseayarlandığında, EventSource ile ilgili kodu ve mantığı kaldırır.
Http3Support (.NET 10+) olarak falseayarlandığında, içindeki System.Net.HttpHTTP/3 desteğiyle ilgili kodu kaldırır.
HttpActivityPropagationSupport olarak falseayarlandığında, için System.Net.Httptanılama desteğiyle ilgili kodu kaldırır.
InvariantGlobalization olarak ayarlandığında, genelleştirmeye trueözgü kodu ve verileri kaldırır. Daha fazla bilgi için bkz . Sabit mod.
MetadataUpdaterSupport olarak falseayarlandığında, sık erişimli yeniden yüklemeyle ilgili meta veri güncelleştirmesine özgü mantığı kaldırır.
MetricsSupport olarak ayarlandığında falseizleme desteğini System.Diagnostics.Metrics kaldırır.
StackTraceSupport (.NET 8+) olarak falseayarlandığında, çalışma zamanı tarafından yığın izlemeleri (örneğin, Environment.StackTrace veya Exception.ToString) oluşturma desteğini kaldırır. Yığın izleme dizelerinden kaldırılan bilgilerin miktarı diğer dağıtım seçeneklerine bağlı olabilir. Bu seçenek, hata ayıklayıcılar tarafından oluşturulan yığın izlemelerini etkilemez.
UseNativeHttpHandler olarak trueayarlandığında, Android ve iOS için varsayılan platform uygulamasını HttpMessageHandler kullanır ve yönetilen uygulamayı kaldırır.
UseSizeOptimizedLinq (.NET 10+) olarak trueayarlandığında, LINQ'de uygulamanın boyutunu olumsuz etkileyen bazı aktarım hızı iyileştirmelerini kaldırır. ile truevarsayılan olarak ayarlanırPublishAot; bu özellik olarak ayarlanmış bazı uygulamaları yerel olarak derlemek falsemümkün olmayabilir.
UseSystemResourceKeys olarak trueayarlandığında, derlemeler için System.* özel durum iletilerini şeritler. Bir System.* derlemeden özel durum oluşturulduğunda, ileti tam ileti yerine basitleştirilmiş bir kaynak kimliğidir.
XmlResolverIsNetworkingEnabledByDefault (.NET 8+) olarak falseayarlandığında, içindeki System.Xmldosya olmayan URL'leri çözümleme desteğini kaldırır. Yalnızca dosya sistemi çözümlemesi desteklenir.

Bu özellikler ilgili kodun kırpılmasına ve runtimeconfig dosyası aracılığıyla özelliklerin devre dışı bırakılmasına neden olur. İlgili çalışma zamanı yapılandırma seçenekleri de dahil olmak üzere bu özellikler hakkında daha fazla bilgi için bkz . özellik anahtarları. Bazı SDK'lar bu özellikler için varsayılan değerlere sahip olabilir.

Kırpma sırasında çerçeve özellikleri devre dışı bırakıldı

Aşağıdaki özellikler, statik olarak başvurulmayan bir kod gerektirdiğinden kırpma ile uyumsuzdur. Bu özellikler kırpılan uygulamalarda varsayılan olarak devre dışı bırakılır.

Uyarı

Bu özellikleri kendi riskinize göre etkinleştirin. Dinamik olarak başvurulmuş kodu korumak için ek çalışma yapmadan kırpılan uygulamaları kesme olasılığı yüksektir.

  • <BuiltInComInteropSupport>

    Yerleşik COM desteği devre dışı bırakıldı.

  • <CustomResourceTypesSupport>

    Özel kaynak türlerinin kullanımı desteklenmez. Özel kaynak türleri için yansıma kullanan ResourceManager kod yolları kırpılır.

  • <EnableCppCLIHostActivation>

    C++/CLI ana bilgisayar etkinleştirme devre dışı bırakıldı.

  • <EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization>

    DesigntimeLicenseContextSerializer serileştirme kullanımı BinaryFormatter devre dışı bırakıldı.

  • <StartupHookSupport>

    ile Main daha önce DOTNET_STARTUP_HOOKS kod çalıştırma desteklenmez. Daha fazla bilgi için bkz . konak başlatma kancası.