Kendi içinde dağıtım çalışma zamanını ileri sarma

.NET Core bağımsız uygulama dağıtımları hem .NET Core kitaplıklarını hem de .NET Core çalışma zamanını içerir. .NET Core 2.1 SDK'sı (sürüm 2.1.300) ile başlayarak, bağımsız uygulama dağıtımı makinenizde en yüksek düzeltme eki çalışma zamanını yayımlar. Varsayılan olarak, dotnet publish bağımsız dağıtım için yayımlama makinesinde SDK'nın parçası olarak yüklenen en son sürümü seçer. Bu, dağıtılan uygulamanızın sırasında publishkullanılabilen güvenlik düzeltmeleriyle (ve diğer düzeltmelerle) çalışmasını sağlar. Yeni bir düzeltme eki almak için uygulamanın yeniden yayımlanması gerekir. Bağımsız uygulamalar, komutta belirtilerek -r <RID> veya proje dosyasında (csproj / vbproj) veya komut satırında çalışma zamanı tanımlayıcısı (RID) belirtilerek dotnet publish oluşturulur.

Düzeltme eki sürümü ileri sarmaya genel bakış

restoreve buildpublish ayrı olarak çalışabilen komutlardır dotnet . Çalışma zamanı seçimi, veya builddeğilpublish, işlemin bir parçasıdırrestore. çağrısı publishyaparsanız en son düzeltme eki sürümü seçilir. bağımsız değişkeniyle --no-restore çağırırsanızpublish, daha önce restore bağımsız değişken içeren yeni uygulama yayımlama ilkesiyle yürütülmemiş olabileceğinden istenen düzeltme eki sürümünü alamayabilirsiniz. Bu durumda, aşağıdakine benzer metinlerle bir derleme hatası oluşturulur:

"Proje, Microsoft.NETCore.App sürüm 2.0.0 kullanılarak geri yüklendi, ancak geçerli ayarlarla bunun yerine sürüm 2.0.6 kullanılacaktı. Bu sorunu çözmek için, geri yükleme ve derleme veya yayımlama gibi sonraki işlemler için aynı ayarların kullanıldığından emin olun. Bu sorun genellikle RuntimeIdentifier özelliği derleme veya yayımlama sırasında ayarlandıysa ancak geri yükleme sırasında ayarlanmadıysa oluşabilir."

Not

restore ve build gibi publishbaşka bir komutun parçası olarak örtük olarak çalıştırılabilir. Başka bir komutun parçası olarak örtük olarak çalıştırıldığında, doğru yapıtların üretilmesi için ek bağlam sağlanır. Çalışma zamanıyla (örneğin, dotnet publish -r linux-x64) kullandığınızdapublish, restore örtük olarak linux-x64 çalışma zamanı paketlerini geri yükler. Açıkça çağırırsanız restore , çalışma zamanı paketlerini varsayılan olarak geri yüklemez, çünkü bu bağlama sahip değildir.

Yayımlama sırasında geri yüklemeyi önleme

İşlemin publish bir parçası olarak çalışmak restore senaryonuz için istenmeyen bir durum olabilir. Bağımsız uygulamalar oluştururken bunu önlemek restorepublish için aşağıdakileri yapın:

  • RuntimeIdentifiers özelliğini, yayımlanacak tüm RID'lerin noktalı virgülle ayrılmış listesine ayarlayın.
  • TargetLatestRuntimePatch özelliğini true olarak ayarlayın.

Dotnet yayımlama seçenekleriyle geri yükleme yok bağımsız değişkeni

Aynı proje dosyasıyla hem bağımsız uygulamaları hem de çerçeveye bağımlı uygulamaları oluşturmak ve ile dotnet publishbağımsız değişkenini --no-restore kullanmak istiyorsanız, aşağıdakilerden birini seçin:

  1. Çerçeveye bağımlı davranışı tercih edin. Uygulama çerçeveye bağımlıysa, bu varsayılan davranıştır. Uygulama kendi içindeyse ve eşleşmeyen bir 2.1.0 yerel çalışma zamanı kullanabiliyorsa, proje dosyasında olarak ayarlayın TargetLatestRuntimePatchfalse .

  2. Kendi içinde davranışı tercih edin. Uygulama kendi içindeyse, bu varsayılan davranıştır. Uygulama çerçeveye bağımlıysa ve en son düzeltme ekinin yüklenmesini gerektiriyorsa, proje dosyasında olarak true ayarlayınTargetLatestRuntimePatch.

  3. Proje dosyasındaki belirli düzeltme eki sürümüne ayarlayarak RuntimeFrameworkVersion çalışma zamanı çerçevesi sürümünün açık denetimini alın.