2009-09-22 11 views
17

Potrzebuję pobrać wbudowaną wersję aplikacji C# i zmienić jedną z bibliotek referencyjnych. Jaki jest najlepszy sposób, aby to zrobić, mam specjalną wersję wyłączoną w dll odniesienia, ale jak tylko testuję zastępowanie biblioteki dll nowszą wersją, otrzymuję komunikat "Nie można załadować pliku lub zespołu XXXXX, wersja = XXXXX. ? istnieje sposób, aby zatrzymać program ładujący z dbając o wersji dll tak dll po prostu próbować załadowaćZaktualizuj bibliotekę referencyjną w projekcie C# bez ponownej kompilacji projektu.

Odpowiedz

18

Tak, można to zrobić. - patrz artykuł MSDN Redirecting Assembly Versions

należy przeczytać całość dokument, ale w zasadzie dotyczy on albo wydawcy zespołu, tworzącego "plik zasad wydawcy", albo konsumenta dodającego plik bindingRedirect do pliku app.config, takiego jak ten (skopiowany bezpośrednio z tego artykułu):

<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> 

Kilka uwag:

  • Jeśli nie wyraźnie określone swoją kulturę (jak wielu nie), to będzie być "neutralne" zamiast "en-us".

  • Jeśli jeszcze nie wiesz, możesz dostać zespół public key żeton stosując silne narzędzie nazwisko, jak to: sn -t [AssemblyPath]

+0

Wymagałoby to ponowną kompilację, prawda to? –

+0

Czy plik konfiguracyjny jest sprawdzany tylko w środowisku wykonawczym? –

+2

Te pliki xml są sprawdzane w środowisku wykonawczym. Zobacz http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian

Powiązane problemy