Aracılığıyla paylaş


'dotnet pack' Yayın yapılandırmasını kullanır

Kodu dotnet packbir NuGet paketine paketleyen komutu artık varsayılan olarak yapılandırma yerine yapılandırmayı Release kullanırDebug.

Önceki davranış

Daha önce, dotnet pack, Debug yapılandırması kullanılmadıkça veya yapılandırma açıkça belirtilmediği sürece PackRelease yapılandırmasını kullanıyordu.

özelliğiPackRelease bu köklü değişikliğe yönelik bir çözüm olarak .NET 7'ye eklendi. Daha önce, DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS ortam değişkenini, Visual Studio çözümünün parçası olan bir projede PackRelease kullanacak şekilde ayarlayabiliyordunuz.

Yeni davranış

.NET 8 SDK veya sonraki bir sürümle geliştiriyorsanız, dotnet packRelease projeler için varsayılan olarak yapılandırmayı kullanır. Çıkış yoluna sabit kodladığınız Debug bir CI/CD betiğiniz, testleriniz veya kodunuz varsa, bu değişiklik iş akışınızı bozabilir. Ayrıca, Debug yapılandırması açıkça belirtilmediği sürece (örneğin, dotnet pack --configuration Debug kullanarak...) paketlenmiş bir uygulamada hata ayıklayamazsınız.

dotnet pack aynı anda birden çok hedef çerçeve adı (TFM) için paketlenebilir. Projeniz birden çok sürümü hedefliyorsa ve farklı hedefler için farklı PackRelease değerleriniz varsa, bazı TFM'ler Release yapılandırmasını paketlerken diğerleri Debug yapılandırmasını paketleyebilir, bu durum bir çakışmaya neden olabilir.

Çözümdeki projeler için:

  • dotnet pack , bir çözüm dosyası verilirse visual studio çözümündeki tüm projeleri paketleyebilir. Eğer çözümdeki her proje için PackRelease değeri tanımsız ise, değeri örtük olarak true olarak ayarlanır. Kullanılacak doğru yapılandırmayı belirlemek için dotnet pack çözümdeki tüm projelerin değerini PackReleasekabul etmesi gerekir.

  • Bu değişiklik, özellikle çok sayıda proje içeren çözümler için, dotnet pack'nin performansının gerileyebilmesine neden olabilir. Bu sorunu çözmek için yeni bir ortam değişkeni DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS kullanıma sunulmuştur.

  • Ortam DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS değişkeni artık tanınmıyor.

Sürüm kullanıma sunulmuştur

.NET 8 Preview 1

Kesinti yaratan değişiklik türü

Bu değişiklik kaynak uyumluluğunu etkileyebilir ve aynı zamanda davranışsal bir değişikliktir.

Değişiklik nedeni

Çoğu durumda bir paket oluşturduğunuzda kodunuzun iyileştirilmiş olmasını ve hata ayıklama bilgilerini dışlayarak paketi daha küçük tutmasını istersiniz.

Etkinleştirildiği DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS davranış artık varsayılan davranış olduğundan ve ayrıntılı denetim artık gerekli olmadığından ortam değişkeni kaldırıldı.

  • Yeni davranışı tamamen devre dışı bırakmak için ortam değişkenini DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEtrue (veya başka bir değer) olarak ayarlayabilirsiniz. Bu değişken hem dotnet publish'ı hem de dotnet pack'i etkiler.

  • Paketleme yapılandırmasını açıkça belirtmek için Debug, -c ile --configuration veya dotnet pack seçeneğini kullanın.

  • CI/CD işlem hattınız sabit kodlanmış çıkış yollarından dolayı bozuksa, yolları Release yerine Debug ile güncelleyin, DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASE ortam değişkenini kullanarak yeni davranışı devre dışı bırakın veya Debug yapılandırmanın kullanılması gerektiğini belirtin.

  • Bir çözümü paketliyorsanız ve bir veya daha fazla projenin PackRelease için açıkça bir değer ayarlaması nedeniyle bu çözüm bozuksa, her projede PackRelease değerini açıkça false olarak ayarlamalısınız.

    <PropertyGroup>
      <PackRelease>false</PackRelease>
    </PropertyGroup>
    
  • Bir çözüm topluyorsanız ve performans gerilediyse, regresyonu kaldırmak için DOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS ortam değişkenini (veya başka bir değer) olarak ayarlayabilirsiniztrue. Bu değişkeni kullanırsanız ve herhangi bir proje tanımlarsa PackRelease, tüm projeler bunu tanımlamalıdır veya bir Directory.Build.Props dosyası kullanabilirsiniz. Bu değişken hem dotnet publish'ı hem de dotnet pack'i etkiler.

Ayrıca bakınız