Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
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.
.NET Framework uygulamanızı başarıyla dağıtmak için, ortak dil çalışma zamanının uygulamanızı oluşturan derlemeleri nasıl bulup bağladığını anlamanız gerekir. Varsayılan olarak, çalışma zamanı uygulamanın oluşturulduğu derlemenin tam sürümüyle bağlanmaya çalışır. Bu varsayılan davranış, yapılandırma dosyası ayarları tarafından geçersiz kılınabilir.
Ortak dil çalışma zamanı, bir derlemeyi bulmaya ve derleme başvurularını çözümlemeye çalışırken bir dizi adım gerçekleştirir. Her adım aşağıdaki bölümlerde açıklanmıştır. Probing terimi, genellikle çalışma zamanının derlemeleri nasıl bulduğunu tanımlamak için kullanılır; bu, derlemeyi adı ve kültürüne göre bulmak için kullanılan yöntemler kümesine atıfta bulunur.
Uyarı
Windows SDK'sında bulunan Derleme Bağlama Günlük Görüntüleyicisi'ni (Fuslogvw.exe) kullanarak bağlama bilgilerini günlük dosyasında görüntüleyebilirsiniz.
Bağlama başlatılıyor
Bir derlemeyi bulma ve bağlama işlemi, çalışma zamanı başka bir derlemeye başvuruyu çözümlemeye çalıştığında başlar. Bu başvuru statik veya dinamik olabilir. Derleyici oluşturma zamanında derleme bildirimindeki meta verisinde statik başvuruları kaydeder. Dinamik başvurular, gibi Assembly.Loadçeşitli yöntemleri çağırmanın bir sonucu olarak anında oluşturulur.
Derlemeye başvurmanın tercih edilen yolu, derleme adı, sürüm, kültür ve ortak anahtar belirteci (varsa) dahil olmak üzere tam başvuru kullanmaktır. Çalışma zamanı, bu bölümde açıklanan adımları izleyerek derlemeyi bulmak için bu bilgileri kullanır. Çalışma zamanı, başvurunun statik veya dinamik bir derleme için olup olmadığına bakılmaksızın aynı çözümleme işlemini kullanır.
Ayrıca, çağırma yöntemine derleme hakkında yalnızca derleme adını belirtme gibi kısmi bilgiler sağlayarak bir derlemeye dinamik başvuru yapabilirsiniz. Bu durumda, derleme için yalnızca uygulama dizininde arama yapılır ve başka bir denetim gerçekleşmez. Kısmi bir başvuru yapmak için Assembly.Load veya AppDomain.Load gibi derlemeleri yüklemek için çeşitli yöntemlerden herhangi birini kullanırsınız.
Son olarak, gibi Assembly.Load bir yöntem kullanarak dinamik başvuru yapabilir ve yalnızca kısmi bilgiler sağlayabilirsiniz; ardından uygulama yapılandırma dosyasındaki< qualifyAssembly> öğesini kullanarak başvuruyu niteleyebilirsiniz. Bu öğe, kodunuzda değil uygulama yapılandırma dosyanızda tam başvuru bilgilerini (ad, sürüm, kültür ve varsa ortak anahtar belirteci) sağlamanıza olanak tanır. Uygulama dizini dışındaki bir derlemeye başvuruyu tam olarak nitelemek istiyorsanız veya genel derleme önbelleğindeki bir derlemeye başvurmak istiyorsanız ancak kodunuzda değil yapılandırma dosyasında tam başvuruyu belirtme kolaylığı sağlamak istiyorsanız bu tekniği kullanırsınız.
Uyarı
Bu kısmi başvuru türü, çeşitli uygulamalar arasında paylaşılan derlemelerle kullanılmamalıdır. Yapılandırma ayarları derleme başına değil uygulama başına uygulandığından, bu tür kısmi başvuru kullanan paylaşılan bir derleme, paylaşılan derlemeyi kullanan her uygulamanın yapılandırma dosyasında uygun bilgilere sahip olmasını gerektirir.
Çalışma zamanı, bir derleme başvurusunu çözümlemek için aşağıdaki adımları kullanır:
Uygulama yapılandırma dosyası, yayımcı ilke dosyası ve makine yapılandırma dosyası gibi geçerli yapılandırma dosyalarını inceleyerek doğru derleme sürümünü belirler. Yapılandırma dosyası uzak bir makinede bulunuyorsa, çalışma zamanının önce uygulama yapılandırma dosyasını bulup indirmesi gerekir.
Derleme adının önceye bağlı olup olmadığını denetler ve bağlıysa daha önce yüklenmiş derlemeyi kullanır. Derlemeyi yüklemek için önceki bir istek başarısız olduysa, derleme yüklenmeye çalışılmadan istek hemen başarısız olur.
Uyarı
Derleme bağlama hatalarını önbelleğe alma işlemi .NET Framework sürüm 2.0'da yenidir.
Genel derleme önbelleğini denetler. Derleme orada bulunursa, çalışma zamanı bu derlemeyi kullanır.
Aşağıdaki adımları kullanarak montaj için prob:
Yapılandırma ve yayımcı ilkesi özgün başvuruyu etkilemezse ve bağlama isteği yöntemi kullanılarak Assembly.LoadFrom oluşturulduysa, çalışma zamanı konum ipuçlarını denetler.
Yapılandırma dosyalarında bir kod tabanı bulunursa, çalışma zamanı yalnızca bu konumu denetler. Bu araştırma başarısız olursa, çalışma zamanı bağlama isteğinin başarısız olduğunu ve başka bir yoklama gerçekleşmediğini belirler.
Heuristik yöntemleri kullanarak montaj için test araçlarını inceleme bölümünde açıklar. Yoklamadan sonra derleme bulunamazsa, çalışma zamanı Windows Installer'ın derlemeyi sağlamasını istemektedir. Bu, isteğe bağlı yükleme özelliği işlevi görür.
Uyarı
Tanımlayıcı adları olmayan derlemeler için sürüm denetimi yoktur ve çalışma zamanı, tanımlayıcı adları olmayan derlemeler için genel derleme önbelleğini denetlemez.
1. Adım: Yapılandırma Dosyalarını inceleme
Derleme bağlama davranışı üç XML dosyasına göre farklı düzeylerde yapılandırılabilir:
Uygulama yapılandırma dosyası.
Publisher ilke dosyası.
Makine yapılandırma dosyası.
Bu dosyalar aynı söz dizimini izler ve bağlama yeniden yönlendirmeleri, kodun konumu ve belirli derlemeler için bağlama modları gibi bilgiler sağlar. Her yapılandırma dosyası, bağlama işlemini yeniden yönlendiren bir <assemblyBinding> öğe içerebilir.
<assemblyBinding> öğesinin alt öğeleri <dependentAssembly> öğesini içerir.
öğesinin<dependentAssembly> alt öğeleri arasında <assemblyIdentity> öğesi, <bindingRedirect> öğesi ve <codeBase> öğesi bulunur.
Uyarı
Yapılandırma bilgileri üç yapılandırma dosyasında bulunabilir; tüm yapılandırma dosyalarında tüm öğeler geçerli değildir. Örneğin, bağlama modu ve özel yol bilgileri yalnızca uygulama yapılandırma dosyasında olabilir. Her dosyada yer alan bilgilerin tam listesi için bkz. Yapılandırma Dosyalarını Kullanarak Uygulamaları Yapılandırma.
Uygulama Yapılandırma Dosyası
İlk olarak, ortak dil çalışma zamanı uygulama yapılandırma dosyasını çağıran derlemenin bildiriminde depolanan sürüm bilgilerini geçersiz kılan bilgileri denetler. Uygulama yapılandırma dosyası bir uygulamayla dağıtılabilir, ancak uygulama yürütme için gerekli değildir. Genellikle bu dosyanın alınması neredeyse anlıktır, ancak uygulama tabanının uzak bir bilgisayarda olduğu durumlarda (web tabanlı bir senaryoda olduğu gibi) yapılandırma dosyasının indirilmesi gerekir.
İstemci yürütülebilir dosyaları için, uygulama yapılandırma dosyası uygulamanın yürütülebilir dosyasıyla aynı dizinde bulunur ve .config uzantılı yürütülebilir dosyayla aynı temel ada sahiptir. Örneğin, C:\Program Files\Myapp\Myapp.exe yapılandırma dosyası C:\Program Files\Myapp\Myapp.exe.config. Tarayıcı tabanlı bir senaryoda, HTML dosyasının <link> açıkça yapılandırma dosyasına işaret etmek için öğesini kullanması gerekir.
Aşağıdaki kod, uygulama yapılandırma dosyasının basit bir örneğini sağlar. Bu örnek, hata ayıklama bilgilerini bir dosyaya kaydetmeyi etkinleştirmek için TextWriterTraceListener nesnesini Listeners koleksiyonuna ekler.
<configuration>
<system.diagnostics>
<trace useGlobalLock="false" autoflush="true" indentsize="0">
<listeners>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, system version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Publisher Politika Dosyası
İkincisi, çalışma zamanı ortamı, varsa yayımcı ilke dosyasını inceler. Yayımcı ilke dosyaları, bir bileşen yayımcısı tarafından paylaşılan bir bileşene düzeltme veya güncelleştirme olarak dağıtılır. Bu dosyalar, paylaşılan bileşenin yayımcısı tarafından verilen ve derleme başvurularını yeni bir sürüme yönlendiren uyumluluk bilgilerini içerir. Uygulama ve makine yapılandırma dosyalarından farklı olarak, yayımcı ilkesi dosyaları, küresel derleme önbelleğine yüklenmesi gereken kendi derlemelerinde yer alır.
Aşağıda Yayımcı İlkesi yapılandırma dosyası örneği verilmiştir:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="asm6" publicKeyToken="c0305c36380ba429" />
<bindingRedirect oldVersion="3.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Derleme oluşturmak için Al.exe (Derleme Bağlayıcısı) aracını aşağıdaki gibi bir komutla kullanabilirsiniz:
Al.exe /link:asm6.exe.config /out:policy.3.0.asm6.dll /keyfile: compatkey.dat /v:3.0.0.0
compatkey.dat bir tanımlayıcı ad anahtar dosyasıdır. Bu komut, genel derleme önbelleğine yerleştirebileceğiniz güçlü adlandırılmış bir derleme oluşturur.
Uyarı
Yayımcı ilkesi, paylaşılan bileşen kullanan tüm uygulamaları etkiler.
Yayımcı ilkesi yapılandırma dosyası, uygulamadan (derleme bildiriminden veya uygulama yapılandırma dosyasından) gelen sürüm bilgilerini geçersiz kılar. Uygulama yapılandırma dosyasında derleme bildiriminde belirtilen sürümü yeniden yönlendirecek bir deyim yoksa, yayımcı ilke dosyası derleme bildiriminde belirtilen sürümü geçersiz kılar. Ancak, uygulama yapılandırma dosyasında yeniden yönlendirme deyimi varsa, yayımcı ilkesi bildirimde belirtilen sürüm yerine bu sürümü geçersiz kılar.
Paylaşılan bir bileşen güncelleştirildiğinde yayımcı ilke dosyası kullanılır ve paylaşılan bileşenin yeni sürümü bu bileşeni kullanan tüm uygulamalar tarafından alınmalıdır. Uygulama yapılandırma dosyası güvenli modu zorlamadığı sürece, yayımcı ilkesi dosyasındaki ayarlar uygulama yapılandırma dosyasındaki ayarları geçersiz kılar.
Güvenli mod
Yayımcı ilke dosyaları genellikle bir hizmet paketi veya program güncelleştirmesinin parçası olarak açıkça yüklenir. Yükseltilen paylaşılan bileşenle ilgili bir sorun varsa, yayıncı politika dosyasındaki üst geçersiz kılmaları güvenli modu kullanarak göz ardı edebilirsiniz. Güvenli mod, yalnızca uygulama yapılandırma dosyasında bulunan publisherPolicy apply="yes no"/ öğesi tarafından< belirlenir.|> Yayımcı ilkesi yapılandırma bilgilerinin bağlama işleminden kaldırılıp kaldırılmayacağını belirtir.
Güvenli mod, uygulamanın tamamı veya seçili derlemeler için ayarlanabilir. Başka bir ifadeyle, uygulamayı oluşturan tüm derlemeler için ilkeyi kapatabilir veya bazı derlemeler için açabilirsiniz, diğerleri için değil. Yayımcı ilkesini bir uygulamayı oluşturan derlemelere seçmeli olarak uygulamak için publisherPolicy apply=no/< değerini ayarlayın> ve < öğesini kullanarak > hangi derlemelerin etkilenmesini istediğinizi belirtin. Yayımcı ilkesini uygulamayı oluşturan tüm derlemelere uygulamak için publisherPolicy apply=no/< öğesini bağımlı derleme öğesi olmadan ayarlayın>. Yapılandırma hakkında daha fazla bilgi için bkz . Yapılandırma Dosyalarını kullanarak Uygulamaları Yapılandırma.
Makine Yapılandırma Dosyası
Üçüncüsü, çalışma zamanı makine yapılandırma dosyasını inceler. Machine.configolarak adlandırılan bu dosya, çalışma zamanının yüklü olduğu kök dizinin Config alt dizinindeki yerel bilgisayarda bulunur. Bu dosya, yöneticiler tarafından bu bilgisayarda yerel olan derleme bağlama kısıtlamalarını belirtmek için kullanılabilir. Makine yapılandırma dosyasındaki ayarlar diğer tüm yapılandırma ayarlarından önceliklidir; ancak bu, tüm yapılandırma ayarlarının bu dosyaya konulacağı anlamına gelmez. Yönetici ilke dosyası tarafından belirlenen sürüm sondur ve geçersiz kılınamaz. Machine.config dosyasında belirtilen geçersiz kılmalar tüm uygulamaları etkiler. Yapılandırma dosyaları hakkında daha fazla bilgi için bkz . Yapılandırma Dosyalarını kullanarak Uygulamaları Yapılandırma.
2. Adım: Daha Önce Başvurulan Asamblileri Kontrol Etme
İstenen derleme önceki çağrılarda da istendiyse, ortak dil çalışma zamanı zaten yüklenmiş olan derlemeyi kullanır. Bu, bir uygulamayı oluşturan derlemeleri adlandırırken sonuçları olabilir. Derlemeleri adlandırma hakkında daha fazla bilgi için bkz. Derleme Adları.
Derleme için önceki bir istek başarısız olduysa, derleme için sonraki istekler derlemeyi yüklemeye çalışmadan hemen başarısız olur. .NET Framework sürüm 2.0'dan başlayarak, derleme bağlama hataları önbelleğe alınır ve önbelleğe alınan bilgiler derlemeyi yüklemeyi deneyip denemeyeceğini belirlemek için kullanılır.
Uyarı
Bağlama hatalarını önbelleğe almamış olan .NET Framework 1.0 ve 1.1 sürümlerinin davranışına <disableCachingBindingFailures> geri dönmek için, öğesini yapılandırma dosyanıza ekleyin.
3. Adım: Genel Bütünleştirilmiş Kod Önbelleğini Denetleme
Tanımlayıcı adlandırılmış derlemeler için bağlama işlemi genel derleme önbelleğine bakarak devam eder. Genel derleme önbelleği, bir bilgisayardaki çeşitli uygulamalar tarafından kullanılabilecek derlemeleri depolar. Genel derleme önbelleğindeki tüm derlemelerin tanımlayıcı adları olmalıdır.
4. Adım: Codebases veya Probing aracılığıyla Derlemeyi Bulma
Çağıran derlemenin başvurusundaki ve yapılandırma dosyalarındaki bilgiler kullanılarak doğru derleme sürümü belirlendikten ve genel derleme önbelleğinde kontrol edildikten sonra (yalnızca güçlü adlandırılmış derlemeler için), ortak dil çalışma zamanı derlemeyi bulmaya çalışır. Bir derlemeyi bulma işlemi aşağıdaki adımları içerir:
Uygulama yapılandırma dosyasında bir <codeBase> öğesi bulunursa, çalışma zamanı belirtilen konumu denetler. Eşleşme bulunursa, bu derleme kullanılır ve yoklama gerçekleşmez. Derleme orada bulunmazsa bağlama isteği başarısız olur.
Çalışma zamanı daha sonra bu bölümde belirtilen kuralları kullanarak referans verilen derlemeyi arar.
Uyarı
Dizinde bir derlemenin birden çok sürümü varsa ve bu derlemenin belirli bir sürümüne başvurmak istiyorsanız, <probing> öğesinin özniteliği yerine privatePath öğesini kullanmanız gerekir. Probing öğesini kullanırsanız, çalışma zamanı, başvurulan basit derleme adıyla eşleşen bir derlemeyi bulduğu ilk anda, doğru bir eşleşme olup olmadığını dikkate almaksızın yoklamayı durdurur. Doğru bir eşleşmeyse, o bileşen kullanılır. Doğru eşleşme değilse, yoklama durdurulur ve bağlama başarısız olur.
Codebases aracılığıyla Derlemeyi Bulma
Kod tabanı bilgileri, yapılandırma dosyasındaki bir< codeBase> öğesi kullanılarak sağlanabilir. Bu kod tabanı, çalışma zamanı başvuruda bulunılan derleme için araştırma yapmaya çalışmadan önce her zaman denetlenmektedir. Son sürüm yeniden yönlendirmesini içeren bir yayımcı ilkesi dosyası da bir <codeBase> öğesi içeriyorsa, bu <codeBase> öğesi kullanılan öğedir. Örneğin, uygulama yapılandırma dosyanız bir <codeBase> öğesi belirtirse ve uygulama bilgilerini geçersiz kılmaya yönelik bir yayımcı ilke dosyası da bir <codeBase> öğesi belirtirse, <yayımcı ilke dosyasındaki codeBase> öğesi kullanılır.
codeBase< öğesi tarafından> belirtilen konumda eşleşme bulunmazsa bağlama isteği başarısız olur ve başka bir adım atılamaz. Çalışma zamanı bir derlemenin çağıran derlemenin ölçütlerine uygun olduğunu belirlerse, bu derlemeyi kullanır. Verilen <codeBase> öğesi tarafından belirtilen dosya yüklendiğinde, çalışma zamanı adın, sürümün, kültürün ve ortak anahtarın çağıran derlemenin başvurusuyla eşleştiğinden emin olmak için denetler.
Uyarı
Uygulamanın kök dizini dışındaki başvuruda bulunulan derlemelerin güçlü adlara sahip olması ve genel derleme önbelleğine yüklenmesi veya <codeBase> öğesi kullanılarak belirtilmesi gerekmektedir.
Montajı Yoklama Yoluyla Bulma
Uygulama yapılandırma dosyasında <codeBase> öğesi yoksa, çalışma zamanı dört ölçüt kullanarak derlemeyi arar.
Uygulamanın yürütüldüğü kök konum olan uygulama tabanı.
Başvurulan derlemenin kültür özniteliği olan kültür.
Başvurulan derlemenin adı olan isim.
privatePathKök konumu altındaki <alt dizinlerin kullanıcı tanımlı listesi olan yoklama> öğesinin özniteliği. Bu konum, bir uygulama etki alanının özelliği kullanılarak AppDomainSetup.PrivateBinPath uygulama yapılandırma dosyasında ve yönetilen kodda belirtilebilir. Yönetilen kodda belirtildiğinde, yönetilen kodprivatePathönce yoklanır ve ardından uygulama yapılandırma dosyasında belirtilen yol izlenir.
Uygulama Tabanı ve Kültür Dizinlerini Yoklama
Çalışma zamanı her zaman uygulamanın tabanında yoklama işlemine başlar. Bu, url veya bilgisayardaki uygulamanın kök dizini olabilir. Başvurulan derleme uygulama tabanında bulunmazsa ve kültür bilgisi sağlanmazsa, çalışma zamanı derleme adını taşıyan alt dizinlerde arama yapar. Yoklanan dizinler şunlardır:
[uygulama tabanı] / [derleme adı].dll
[uygulama tabanı] / [derleme adı] / [derleme adı].dll
Başvuruda bulunılan derleme için kültür bilgileri belirtilirse, yalnızca aşağıdaki dizinler yoklanır:
[uygulama tabanı] / [kültür] / [derleme adı].dll
[uygulama tabanı] / [kültür] / [derleme adı] / [derleme adı].dll
privatePath Özniteliği ile yoklama
Çalışma zamanı, kültür alt dizinlerine ve başvuruda bulunılan derleme için adlandırılan alt dizinlere ek olarak, yoklama öğesinin privatePath<özniteliği kullanılarak belirtilen dizinleri de yoklar> . özniteliği kullanılarak privatePath belirtilen dizinler, uygulamanın kök dizininin alt dizinleri olmalıdır. Araştırılan dizinler, başvurulan derlemenin kültür bilgilerini içerip içermediğine bağlı olarak değişir.
Çalışma zamanı ortamı, başvurulan basit derleme adıyla eşleşen bir derlemeyi ilk bulduğunda, doğru eşleşme olup olmadığını fark etmeksizin tarama işlemini durdurur. Doğru bir eşleşmeyse, o bileşen kullanılır. Doğru eşleşme değilse, yoklama durdurulur ve bağlama başarısız olur.
Kültür dahil edilirse, aşağıdaki dizinler yoklanır:
[uygulama tabanı] / [binpath] / [culture] / [derleme adı].dll
[uygulama tabanı] / [binpath] / [culture] / [derleme adı] / [derleme adı].dll
Kültür bilgileri dahil edilmezse, aşağıdaki dizinler yoklanır:
[uygulama tabanı] / [binpath] / [derleme adı].dll
[uygulama tabanı] / [binpath] / [derleme adı] / [derleme adı].dll
İnceleme Örnekleri
Aşağıdaki bilgiler verilmiştir:
Başvurulan derleme adı: myAssembly
Uygulama kök dizini:
http://www.code.microsoft.com<yapılandırma dosyasındaki probing> öğesi şunları belirtir: bin
Kültür: de
Çalışma zamanı aşağıdaki URL'leri sorgular:
http://www.code.microsoft.com/de/myAssembly.dllhttp://www.code.microsoft.com/de/myAssembly/myAssembly.dllhttp://www.code.microsoft.com/bin/de/myAssembly.dllhttp://www.code.microsoft.com/bin/de/myAssembly/myAssembly.dll
Aynı İsmi Taşıyan Birden Fazla Derleme
Aşağıdaki örnek, aynı ada sahip birden fazla derlemenin nasıl yapılandırılabileceğini göstermektedir.
<dependentAssembly>
<assemblyIdentity name="Server" publicKeyToken="c0305c36380ba429" />
<codeBase version="1.0.0.0" href="v1/Server.dll" />
<codeBase version="2.0.0.0" href="v2/Server.dll" />
</dependentAssembly>
Diğer Konumlar Araştırıldı
Derleme konumu, geçerli bağlama bağlamı kullanılarak da belirlenebilir. Bu durum en sık Assembly.LoadFrom yöntemi kullanıldığında ve COM birlikte çalışma senaryolarında ortaya çıkar. Bir derleme başka bir derlemeye referans vermek için LoadFrom yöntemini kullanırsa, çağıran derlemenin konumu, başvurulan derlemenin nerede bulunabileceğine dair bir ipucu olarak kabul edilir. Eşleşme bulunursa, bu derleme yüklenir. Eşleşme bulunmazsa, çalışma zamanı arama semantiğiyle devam eder ve derlemeyi sağlamak için Windows Installer'ı sorgular. Bağlama isteğiyle eşleşen bir derleme sağlanmazsa, bir istisna oluşturulur. Bu özel durum, TypeLoadException bir türe başvurulduysa veya yüklenen bir FileNotFoundException derleme bulunamadığında yönetilen kodda bir durumdur.
Örneğin, Assembly1, Derleme2'ye http://www.code.microsoft.com/utils başvuruyorsa ve Assembly1 http://www.code.microsoft.com/utils konumundan indirildiyse, bu konum Assembly2.dll'nin nerede bulunacağına dair bir ipucu olarak kabul edilir. Çalışma zamanı daha sonra http://www.code.microsoft.com/utils/Assembly2.dll ve http://www.code.microsoft.com/utils/Assembly2/Assembly2.dll içindeki derlemeyi arayarak kontrol eder. Assembly2 belirtilen bu konumlardan herhangi birinde bulunamazsa, çalışma zamanı Windows Installer ile iletişim kurarak sorgu yapar.