Aracılığıyla paylaş


Kendi içinde bulunan dağıtımları ve yürütülebilir dosyaları kırp

Çerçeveye bağımlı dağıtım modeli , .NET'in başlangıcından bu yana en başarılı dağıtım modeli olmuştur. Bu senaryoda, uygulama geliştiricisi yalnızca .NET çalışma zamanı ve çalışma zamanı kitaplıklarının istemci makinede kullanılabilir olması beklentisiyle uygulama ve üçüncü taraf derlemelerini paketler. Bu dağıtım modeli, en son .NET sürümünde baskın olan model olmaya devam eder, ancak çerçeveye bağımlı modelin en iyi seçenek olmadığı bazı senaryolar vardır. Bunun alternatifi, .NET çalışma zamanı ve çalışma zamanı kitaplıklarının uygulama ve üçüncü taraf derlemelerle birlikte paketlendiği bağımsız bir uygulama yayımlamaktır.

Kırpma bağımsız dağıtım modeli, dağıtım boyutunu küçültmek için iyileştirilmiş, bağımsız dağıtım modelinin özelleştirilmiş bir sürümüdür. Dağıtım boyutunu en aza indirmek Blazor uygulamaları gibi bazı istemci tarafı senaryoları için kritik bir gereksinimdir. Uygulamanın karmaşıklığı bağlı olarak, çerçeve derlemelerinin yalnızca bir alt kümesine başvurulur ve uygulamayı çalıştırmak için her derlemedeki kodun bir alt kümesi gerekir. Kitaplıkların kullanılmayan bölümleri gereksizdir ve paketlenmiş uygulamadan kırpılabilir.

Ancak, uygulamanın derleme zamanı analizinin çeşitli sorunlu kod desenlerini güvenilir bir şekilde çözümleyememesi (büyük ölçüde yansıma kullanımına göre ortalanmış) nedeniyle çalışma zamanında hatalara neden olma riski vardır. Bu sorunları azaltmak için, düzeltici bir kod düzenini tam olarak çözümleyemiyorsa uyarılar oluşturulur. Kırpma uyarılarının anlamı ve bunların nasıl çözüleceğini öğrenmek için bkz . Kırpma uyarılarına giriş.

Not

  • Kırpma işlemi .NET 6 ve sonraki sürümlerde tam olarak desteklenir. .NET Core 3.1 ve .NET 5'te kırpma deneysel bir özellikti.
  • Kırpma yalnızca bağımsız olarak yayımlanan uygulamalar için kullanılabilir.

Kırpma sorunlarına neden olan bileşenler

Uyarı

Tüm proje türleri kırpılamaz. Daha fazla bilgi için bkz . Bilinen kırpma uyumsuzlukları.

Derleme zamanı analizi zorluklarına neden olan kodlar kırpma için uygun değildir. Bir uygulama tarafından kullanıldığında sorunlu olan bazı yaygın kodlama desenleri, derleme zamanında görünür olmayan ilişkisiz yansıma kullanımından ve dış bağımlılıklardan kaynaklanır. İlişkisiz yansımaya örnek olarak XML serileştirmesi gibi eski bir seri hale getirici ve görünmez dış bağımlılıklara örnek olarak yerleşik COM örnek verilmiştir. Uygulamanızdaki kırpma uyarılarını gidermek için bkz . Kırpma uyarılarına giriş ve kitaplığınızı kırpmayla uyumlu hale getirmek için bkz . Kırpma için .NET kitaplıklarını hazırlama.

Kırpmayı etkinleştirme

  1. Proje dosyanıza ekleyin <PublishTrimmed>true</PublishTrimmed> .

    Bu özellik, bağımsız yayımlamada kırpılmış bir uygulama oluşturur. Ayrıca kırpma uyumsuz özellikleri kapatır ve derleme sırasında kırpma uyumluluğu uyarılarını gösterir.

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. Ardından dotnet publish komutunu veya Visual Studio'yu kullanarak uygulamanızı yayımlayın .

CLI ile yayımlama

Aşağıdaki örnek, Windows için uygulamayı kırpılmış bir bağımsız uygulama olarak yayımlar.

dotnet publish -r win-x64

Kırpma yalnızca bağımsız uygulamalar için desteklenir.

<PublishTrimmed> , sırasında kırpma uyumsuz özellikleri devre dışı bırakılacak dotnet buildşekilde proje dosyasında ayarlanmalıdır. Ancak, bu seçeneği bağımsız değişken dotnet publisholarak da ayarlayabilirsiniz:

dotnet publish -r win-x64 -p:PublishTrimmed=true

Daha fazla bilgi için bkz . .NET CLI ile .NET uygulamalarını yayımlama.

Visual Studio ile yayımlama

  1. Çözüm Gezgini'nde, yayımlamak istediğiniz projeye sağ tıklayın ve Özellikler'iseçin.

    Çözüm Gezgini'nde Özellikler seçeneğini vurgulayan sağ tıklama menüsü .

  2. Oluştur>YayımlaSeç.

    Visual Studio'da Kırpılmış Yayımlama seçeneğiyle yayımlama sayfası .

  3. Uygulamanızı kırpılmış olarak yayımlamak için Kırpılmış yayımla'yı seçin.

    Kırpılmış Yayımlama'nın seçildiği Visual Studio yayımlama sayfası .

Daha fazla bilgi için bkz . Visual Studio ile .NET Core uygulamaları yayımlama.

Ayrıca bkz.