Aracılığıyla paylaş


.NET Framework'te Yan Yana Yürütme

Not

Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.

Yan yana yürütme uygulamanın veya bileşenin birden çok sürümünü aynı bilgisayarda çalıştırma yeteneğidir. Bir bilgisayar üzerinde ortak dil çalışma zamanı sürümünün ve bir uygulamanın ve çalışma zamanının bir sürümünü kullanan bileşenin çeşitli sürümlerine aynı anda sahip olabilirsiniz.

Aynı bilgisayar üzerinde çalışma zamanının farklı iki versiyonunu kullanan çeşitli uygulamaların gösterildiği örnek aşağıdadır. D uygulaması çalışma zamanı sürüm 1.1 kullanırken A, B ve C uygulamaları çalışma zamanı sürüm 1.0 kullanıyor.

Farklı çalışma zamanı sürümlerinin yan yana yürütülmesi,

.NET Framework, ortak dil çalışma zamanı ve API türlerini içeren bir derleme koleksiyonundan oluşur. Çalışma zamanı ve .Net Framework derlemeleri ayrı ayrı uyarlandı. Örneğin, .Net Framework derleme sürümü 4.0 aslında sürüm 1.0.3300.0 iken, çalışma zamanı sürüm 1.0 aslında 4.0.319 sürümüdür.

Aşağıdaki örnek çeşitli uygulamaların aynı bilgisayarda bir bileşenin iki farklı sürümünü kullandığını göstermektedir. Uygulama A ve B bileşenin 1.0 sürümünü kullanırken Uygulama C aynı bileşenin 2.0 sürümünü kullanır.

Bir bileşenin yan yana yürütülmesini gösteren diyagram.

Yan yana yürütme size bir bileşenin sürümüne bağlı olan uygulama ve uygulamanın kullandığı çalışma zamanı üzerinde daha fazla denetim, kontrol sağlar.

Yan Yana Yürütmenin Yararları

Windows XP ve .NET Framework' den önce uygulamalar aynı kodun uyumsuz sürümleri arasında kararsız kaldığı için DLL çakışması oluşurdu. DLL içinde yer alan tür bilgileri yalnızca bir dosya adına bağlıydı. Bir uygulamanın bir DLL içinde yer alan tür bilgileriyle uygulamanın oluşturuldu türlerin aynı olduğunu bilmesinin imkanı yoktu. Sonuç olarak, bir bileşenin yeni bir sürümü eski bir sürümü üzerine yazılabilir ve uygulamaları durdurabilir.

Yan yana yürütme ve .NET Framework DLL çakışmalarını gidermek için aşağıdaki özellikleri sağlar:

  • Tanımlayıcı adlandırılmış derlemeler.

    Yan yana yürütme bir derlemenin belirli bir sürümüne tür bilgisi bağlamak için tanımlayıcı adlandırılmış derlemeler kullanır. Bu bir uygulama ya da bileşenin bir derlemenin geçersiz bir sürümüne bağlanmasını önler. Tanımlayıcı adlandırılmış derlemeler ayrıca bir bilgisayar üzerinde var olan bir dosyanın çeşitli sürümlerine ve uygulamalar tarafından kullanılmasına izin verir. Daha fazla bilgi için bkz . Tanımlayıcı Adlandırılmış Derlemeler.

  • Sürüm uyumlu kod depolama.

    .NET Framework genel derleme önbelleğinde sürüm ile uyumlu kod depolamayı sağlar. Genel birleştirme önbelleği .NET Framework yüklü olan tüm bilgisayarlar üzerinde sunulan mevcut bilgisayar düzeyindeki kod önbelleğidir. Sürüm bazlı derlemeleri, kültür ve yayımcı bilgilerini depolar ve bileşenlerin ve uygulamaların birden çok sürümünü destekler. Daha fazla bilgi için bkz . Genel Bütünleştirilmiş Kod Önbelleği.

  • Yalıtım.

    .NET Framework kullanarak yalıtım modunda çalışan uygulamalar ve bileşenler oluşturabilirsiniz. Yalıtım, yan yana yürütmenin temel bir bileşenidir. Bir bileşenin ya da uygulamanın kullandığınız çeşitli sürümleri arasında güvenli olan kaynak paylaşmayı ve kaynaklarla uyumlu olmayı sağlar. Yalıtım ayrıca sürüme özgü bir şekilde dosya depolamayı da içerir. Yalıtım hakkında daha fazla bilgi için bkz . Yan Yana Yürütme için Bileşen Oluşturma Yönergeleri.

Sürüm Uyumluluğu

.Net Framework 1.0 ve 1.1 sürümleri birbiriyle uyumlu olacak şekilde tasarlanmıştır. .NET Framework sürüm 1.0 ile oluşturulmuş bir uygulama sürüm 1.1 ile çalışması gerekir ve .Net Framework sürüm 1.1 ile oluşturulmuş bir uygulamada sürüm 1.0 ile çalışması gerekir. Ancak, unutmayın .Net Framework 1.1 sürümünde eklenen API özellikleri, .Net Framework 1.0 sürümüyle çalışmayacaktır. Sürüm 2.0 ile oluşturulan uygulamalar yalnızca sürüm 2.0 üzerinde çalışır. Sürüm 2.0 uygulamaları sürüm 1.1 veya daha öncesi sürümlerde çalışmayacaktır.

.NET Framework sürümleri çalışma zamanı ve onun ilişkili .Net Framework derlemelerinden (derleme birleştirici olarak başvurulan bir kavram) oluşan tek bir birim olarak kabul edilir. .Net Framework derlemelerinin diğer sürümlerini dahil etmek için derleme bağlamayı yönlendirebilirsiniz, ancak varsayılan derleme bağlamasını geçersiz kılma riskli olabilir ve dağıtım öncesinde ciddi bir şekilde test edilmesi gerekir.

Çalışma Zamanı Sürüm Bilgilerini Bulma

Bir uygulamanın veya bileşenin hangi çalışma zamanı sürümüyle derlendiği ve uygulamanın çalıştırması için gereken çalışma zamanı sürümlerinin iki konumda depolandığı hakkında bilgiler. Bir uygulama veya bileşen derlendiğinde, derlemek için kullanılan çalışma zamanı sürümüyle ilgili bilgiler yönetilen yürütülebilir dosyada depolanır. Uygulamanın veya bileşenin gerektirdiği çalışma zamanı sürümleriyle ilgili bilgiler uygulama yapılandırma dosyasında depolanır.

Yönetilen Yürütülebilir Dosyadaki Çalışma Zamanı Sürüm Bilgileri

Yönetilen her uygulamanın ve bileşenin taşınabilir yürütülebilir (PE) dosya üst bilgisi, birlikte oluşturulduğu çalışma zamanı sürümü hakkında bilgi içerir. Ortak dil çalışma zamanı, uygulamanın çalıştırması gereken çalışma zamanının en olası sürümünü belirlemek için bu bilgileri kullanır.

Uygulama Yapılandırma Dosyasındaki Çalışma Zamanı Sürüm Bilgileri

PE dosya üst bilgisindeki bilgilere ek olarak, bir uygulama çalışma zamanı sürüm bilgileri sağlayan bir uygulama yapılandırma dosyası ile dağıtılabilir. Uygulama yapılandırma dosyası, uygulama geliştiricisi tarafından oluşturulan ve bir uygulamayla birlikte gelen XML tabanlı bir dosyadır. Başlangıç bölümünün requiredRuntime> Öğesi<, bu dosyada varsa, çalışma zamanının hangi sürümlerini ve uygulamanın desteklediği bir bileşenin hangi sürümlerini belirtir.>< Bu dosyayı, bir uygulamanın çalışma zamanının farklı sürümleriyle uyumluluğunu test etmek için testte de kullanabilirsiniz.

COM ve COM+ uygulamaları da dahil olmak üzere yönetilmeyen kod, çalışma zamanının yönetilen kodla etkileşim için kullandığı uygulama yapılandırma dosyalarına sahip olabilir. Uygulama yapılandırma dosyası, COM aracılığıyla etkinleştirdiğiniz tüm yönetilen kodları etkiler. Dosya, hangi çalışma zamanı sürümlerini desteklediğini ve derleme yeniden yönlendirmelerini belirtebilir. Varsayılan olarak, yönetilen koda çağrı yapan COM birlikte çalışma uygulamaları bilgisayarda yüklü olan çalışma zamanının en son sürümünü kullanır.

Uygulama yapılandırma dosyaları hakkında daha fazla bilgi için bkz . Uygulamaları Yapılandırma.

Çalışma Zamanının Hangi Sürümünün Yükleneceğini Belirleme

Ortak dil çalışma zamanı, bir uygulama için çalışma zamanının hangi sürümünün yükleneceğini belirlemek için aşağıdaki bilgileri kullanır:

  • Kullanılabilir çalışma zamanı sürümleri.

  • Bir uygulamanın desteklediği çalışma zamanı sürümleri.

Desteklenen Çalışma Zamanı Sürümleri

Çalışma zamanı, bir uygulamanın hangi çalışma zamanını desteklediğini belirlemek için uygulama yapılandırma dosyasını ve taşınabilir yürütülebilir (PE) dosya üst bilgisini kullanır. Uygulama yapılandırma dosyası yoksa, çalışma zamanı uygulamanın PE dosya üst bilgisinde belirtilen çalışma zamanı sürümünü (bu sürüm varsa) yükler.

Bir uygulama yapılandırma dosyası varsa, çalışma zamanı aşağıdaki işlemin sonuçlarına göre yüklenecek uygun çalışma zamanı sürümünü belirler:

  1. Çalışma zamanı, uygulama yapılandırma dosyasındaki supportedRuntime Öğesi öğesini inceler<.> supportedRuntime öğesinde <belirtilen desteklenen çalışma zamanı sürümlerinden biri veya daha fazlası varsa, çalışma zamanı ilk< desteklenenRuntime> öğesi tarafından belirtilen çalışma zamanı sürümünü yükler.> Bu sürüm kullanılamıyorsa, çalışma zamanı bir sonraki <desteklenenRuntime> öğesini inceler ve belirtilen çalışma zamanı sürümünü yüklemeyi dener. Bu çalışma zamanı sürümü kullanılamıyorsa, sonraki <desteklenenRuntime> öğeleri incelenir. Desteklenen çalışma zamanı sürümlerinden hiçbiri kullanılamıyorsa, çalışma zamanı bir çalışma zamanı sürümünü yükleyemiyor ve kullanıcıya bir ileti görüntülüyor (bkz. 3. adım).

  2. Çalışma zamanı, uygulamanın yürütülebilir dosyasının PE dosya üst bilgisini okur. PE dosya üst bilgisi tarafından belirtilen çalışma zamanı sürümü kullanılabilir durumdaysa, çalışma zamanı bu sürümü yükler. Belirtilen çalışma zamanı sürümü kullanılamıyorsa, çalışma zamanı, PE üst bilgisindeki çalışma zamanı sürümüyle uyumlu olması için Microsoft tarafından belirlenen bir çalışma zamanı sürümünü arar. Bu sürüm bulunamazsa, işlem 3. adıma devam eder.

  3. Çalışma zamanı, uygulama tarafından desteklenen çalışma zamanı sürümünün kullanılamadığını belirten bir ileti görüntüler. Çalışma zamanı yüklenmedi.

    Not

    HKLM\Software\Microsoft\ kayıt defteri anahtarının altındaki NoGuiFromShim değerini kullanarak bu iletinin görüntülenmesini gizleyebilirsiniz. NETFramework veya COMPLUS_NoGuiFromShim ortam değişkenini kullanma. Örneğin, genellikle katılımsız yüklemeler veya Windows hizmetleri gibi kullanıcıyla etkileşimde bulunmayan uygulamalar için iletiyi gizleyebilirsiniz. Bu ileti görüntülendiğinde, çalışma zamanı olay günlüğüne bir ileti yazar. Bir bilgisayardaki tüm uygulamalar için bu iletiyi engellemek için NoGuiFromShim kayıt defteri değerini 1 olarak ayarlayın. Alternatif olarak, belirli bir kullanıcı bağlamında çalışan uygulamaların iletisini engellemek için COMPLUS_NoGuiFromShim ortam değişkenini 1 olarak ayarlayın.

Not

Çalışma zamanı sürümü yüklendikten sonra, derleme bağlama yeniden yönlendirmeleri tek bir .NET Framework derlemesinin farklı bir sürümünün yükleneceğini belirtebilir. Bu bağlama yeniden yönlendirmeleri yalnızca yeniden yönlendirilen belirli derlemeyi etkiler.

Kısmen Nitelenmiş Derleme Adları ve Yan Yana Yürütme

Bunlar yan yana sorunların olası bir kaynağı olduğundan, kısmen nitelenmiş derleme başvuruları yalnızca bir uygulama dizini içindeki derlemelere bağlanmak için kullanılabilir. Kodunuzda kısmen nitelenmiş derleme başvurularından kaçının.

Koddaki kısmen nitelenmiş derleme başvurularını azaltmak için, bir uygulama yapılandırma dosyasındaki qualifyAssembly> öğesini kullanarak <kodda gerçekleşen kısmen nitelenmiş derleme başvurularını tam olarak niteleyebilirsiniz. <yalnızca kısmi başvuruda ayarlanmadı alanları belirtmek için qualifyAssembly> öğesini kullanın. fullName özniteliğinde listelenen derleme kimliği, derleme adını tam olarak nitelerken gereken tüm bilgileri içermelidir: derleme adı, ortak anahtar, kültür ve sürüm.

Aşağıdaki örnekte adlı myAssemblyderlemeyi tam olarak niteleyen uygulama yapılandırma dosyası girişi gösterilmektedir.

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="myAssembly"
fullName="myAssembly,
      version=1.0.0.0,
publicKeyToken=...,
      culture=neutral"/>
</assemblyBinding>

Bir derleme yük deyimi her başvursa myAssembly, bu yapılandırma dosyası ayarları çalışma zamanının kısmen nitelenmiş myAssembly başvuruyu otomatik olarak tam başvuruya çevirmesine neden olur. Örneğin, Assembly.Load("myAssembly") Assembly.Load("myAssembly, version=1.0.0.0, publicKeyToken=..., culture=neutral") olur.

Not

Kısmen başvurulan derlemelerin genel derleme önbelleğinden yüklenmesini engelleyen ortak dil çalışma zamanı kısıtlamasını atlamak için LoadWithPartialName yöntemini kullanabilirsiniz. Yan yana yürütmede kolayca sorunlara neden olabileceğinden bu yöntem yalnızca uzaktan iletişim senaryolarında kullanılmalıdır.

Ünvan Açıklama
Nasıl yapılır: Otomatik Bağlama Yönlendirmesini Etkinleştirme veya Devre Dışı Bırakma Bir uygulamanın bir derlemenin belirli bir sürümüne nasıl bağlanacağını açıklar.
Bütünleştirilmiş Kod Bağlama Yönlendirmesini Yapılandırma Derleme bağlama başvurularının nasıl belirli bir sürümdeki .NET Framework derlemelerine yeniden yönlendirildiğini açıklar.
İşlem İçi Yan Yana Yürütme Tek bir işlemde CLR'nin birden çok sürümünü çalıştırılacak işlem içi yan yana çalışma zamanlı ana makine etkinleştirmenin nasıl kullanabileceğini açıklanır.
.NET’te bütünleştirilmiş kodlar Derlemeler üzerine kavramsal bir genel bakış sağlar.
Uygulama Etki Alanları Uygulama etki alanları üzerine kavramsal bir genel bakış sağlar.

Başvuru

<supportedRuntime> Öğesi