2009-09-22 8 views
17

Ich muss eine gebaute Version einer C# -Anwendung erstellen und eine der Referenz-DLLs ändern. Was ist der beste Weg, dies zu tun, habe ich bestimmte Version auf der Referenz-DLL deaktiviert, aber sobald ich den Austausch der DLL mit einer neueren Version testen, bekomme ich die "Konnte Datei oder Assembly XXXXX nicht laden, Version = XXXXX ? es eine Möglichkeit, den Lader aus Sorge um die Version der dLL zu stoppen, so nur die dllAktualisieren Sie eine Referenz-DLL in einem C# -Projekt, ohne das Projekt erneut zu kompilieren.

Antwort

18

Ja zu laden versucht, können Sie dies tun -. finden Sie im MSDN-Artikel Redirecting Assembly Versions

Sie sollten das ganze lesen Dokument, aber es umfasst im Wesentlichen entweder der Herausgeber des Assembly erstellen eine "Publisher-Richtliniendatei" oder der Verbraucher ein bindingRedirect zu einer app.config Datei hinzufügen, wie folgt (direkt aus dem Artikel kopiert):

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

Ein paar Anmerkungen:

  • Wenn Sie Ihre Kultur nicht explizit angegeben haben (wie viele es nicht tun), wird es "neutral" und nicht als "en-us".

  • Wenn Sie nicht bereits es kennen, können Sie die Öffentlichkeit Montage erhalten Schlüsseltoken den starken Namen Dienstprogramm, wie dies: sn -t [AssemblyPath]

+0

, dass eine erneute Kompilierung erfordern würde, würde das nicht es? –

+0

Oder wird die Konfigurationsdatei nur zur Laufzeit überprüft? –

+2

Diese XML-Dateien werden zur Laufzeit überprüft. Siehe http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx – Brian

Verwandte Themen