2009-09-22 19 views
17

Bir C# uygulamasının yerleşik bir sürümünü almam ve başvuru dll'lerinden birini değiştirmem gerekiyor. Bunu yapmanın en iyi yolu nedir, referans dll'de belirli bir sürümü kapattım ancak dll'yi daha yeni bir sürümle değiştirmeyi test ettiğimde, "Dosya veya montaj XXXXX, Sürüm = XXXXX yüklenemedi." ? dll sadece yüklemeye çalışacaktır böylece dll sürümü hakkında bakımını yapması yükleyici durdurmak için bir yolBir C# projesinde başvuru dlight başvurusu olmadan bir başvuru dll yükseltme

cevap

18

Evet, orada yapabileceği bu -. MSDN makalesine Redirecting Assembly Versions bkz

sen bütün okumalısınız Belge, ancak, derlemenin yayıncısının bir "yayıncı ilke dosyası" oluşturduğunu veya tüketicinin bir bindingRedirect ekleyerek bir app.config dosyasına ekleyeceğini (doğrudan makaleden kopyalanan) içerir:

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="myAssembly" 
          publicKeyToken="32ab4ba45e0a69a1" 
          culture="en-us" /> 
     <bindingRedirect oldVersion="1.0.0.0" 
          newVersion="2.0.0.0"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 
birkaç not:

  • açıkça (çok değil yapmak gibi), bu ziyade "en-us" den "nötr" olacaktır kültürünüzü belirtmediyseniz.

  • Zaten bilmiyorsanız, sen montaj en gibi, güçlü bir isim yardımcı programını kullanarak anahtar belirteci kamu bu alabilirsiniz: recompile gerektirecektir sn -t [AssemblyPath]

+0

, olmaz o? –

+0

Veya yapılandırma dosyası sadece çalışma zamanında kontrol edildi mi? –

+2

Bu xml dosyaları çalışma zamanında kontrol edilir. Brian'ın söylediği gibi http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian