'dotnet pack' Sürüm yapılandırmasını kullanır

Kodu dotnet pack bir NuGet paketine paketleyen komutu artık varsayılan olarak yapılandırma yerine yapılandırmayı Debug kullanırRelease.

Önceki davranış

Daha önce, dotnet pack yapılandırma açıkça belirtilmediği veya PackRelease olarak ayarlanmadığı sürece yapılandırmayı truekullanıyorduDebug.

özelliği PackRelease bu hataya neden olan değişikliğe giden yol olarak .NET 7'ye eklendi. Daha önce, ortam değişkenini DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS Visual Studio çözümünün parçası olan bir projede kullanılacak PackRelease şekilde ayarlayabilirsiniz.

Yeni davranış

.NET 8 SDK veya sonraki bir sürümle geliştiriyorsanız, dotnet pack tüm projeler için varsayılan olarak yapılandırmayı Release 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, yapılandırma açıkça belirtilmediği sürece Debug (örneğin, kullanarak dotnet pack --configuration Debug) 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ü hedef alıyorsa ve farklı hedefler için farklı PackRelease değerleriniz varsa, bazı TFM'lerin yapılandırmayı paketlediği, bazılarının da yapılandırmayı ReleaseDebug paketlediği bir çakışmaya sahip olabilirsiniz.

Çözümdeki projeler için:

  • dotnet pack , bir çözüm dosyası verilirse visual studio çözümündeki tüm projeleri paketleyebilir. Çözümdeki her proje için değeri PackRelease tanımlanmamışsa örtük olarak olarak ayarlanır true . 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 performansının dotnet pack gerilemesi 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

Hataya neden olan değişikliğin 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 hem dotnet packde dotnet publish 'yi etkiler.

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

  • CI/CD işlem hattınız sabit kodlanmış çıkış yollarından dolayı bozuksa, ortam değişkenini kullanarak yeni ReleaseDebugdavranışı devre dışı bırakın veya yapılandırmanın DOTNET_CLI_DISABLE_PUBLISH_AND_PACK_RELEASEDebug kullanılması gerektiğini belirtin.

  • Bir çözümü paketliyorsanız ve bir veya daha fazla proje için PackReleaseaçıkça bir değer ayarladığından bu çözüm bozuksa, her projede açıkça olarak false olarak ayarlamalısınızPackRelease:

    <PropertyGroup>
      <PackRelease>false</PackRelease>
    </PropertyGroup>
    
  • Bir çözüm topluyorsanız ve performans gerilediyse, regresyonu kaldırmak için true ortam değişkenini (veya başka bir değer) olarak ayarlayabilirsinizDOTNET_CLI_LAZY_PUBLISH_AND_PACK_RELEASE_FOR_SOLUTIONS. 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 hem dotnet packde dotnet publish 'yi etkiler.

Ayrıca bkz.