2011-01-13 17 views
1

Nun habe ich ein Problem beim Umbenennen der ICSharpCode.SharpZipLib.dll-Datei an alle anderen. Ich versuche den Dateinamen zu verkürzen. Ich referenziere die Assembly im Projekt, aber wenn das Programm die Anweisungen erreicht, bei denen ich die Bibliothek verwende. Es entsteht ein Fehler, dass die Assembly oder Datei 'ICSharpCode.SharpZipLib' nicht gefunden werden konnte. Wenn ich den Dateinamen zurück in ICSharpCode.SharpZipLib.dll ändere, arbeitet die Anwendung normal. Also, gibt es eine Möglichkeit, den Dateinamen zu ändern. Außerdem darf ich es ändern, ohne die Lizenz zu verletzen (ich werde es in einer kommerziellen Anwendung verwenden). Vielen Dank.Umbenennen von ICSharpCode.SharpZipLib.dll

+0

Wahrscheinlich in Ihrer Anwendung einen Verweis Sie haben, die noch den Namen verweist, bevor Sie die Baugruppe umbenannt? –

+1

Nur neugierig auf was genau ist das Problem mit der Namenslänge? –

+1

In der Computerwelt werden Namen nur beschreibend, wir hinterlassen viele schreckliche Fehler; Hoffen wir, dass Sie keine Zeitmaschine schaffen, um uns dorthin zurückzubringen. –

Antwort

4

Sobald Sie die DLL umbenannt haben, weiß die .NET-Laufzeitumgebung nicht, wie sie automatisch gefunden wird.

Sie können Assembly.Load aufrufen, um die umbenannte Datei manuell zu laden.
Beachten Sie, dass Sie dies tun müssen, bevor Sie Methoden aufrufen, die die Assembly verwenden, da der JITter alle Typen laden muss, die (direkt) von einer Methode verwendet werden, bevor die Methode gestartet wird.

+0

SLaks, das hat nicht funktioniert. –

+1

@John: Sie haben es wahrscheinlich zu spät geladen. Laden Sie es, bevor Sie Methoden aufrufen, die es verwenden, damit der JITter es finden kann. – SLaks

+0

Slaks, das habe ich genau gemacht (ich habe die Assembly auf das Formularladeereignis geladen). Ich habe ungefähr 6 Stunden damit verbracht, nach einer Antwort zu suchen, aber was ich hätte tun sollen, ist in die Dokumentation zu graben. Nachdem ich ungefähr eine halbe Stunde damit verbracht habe, zu lesen, wie die Auflösung der Versammlung gemacht wird, habe ich herausgefunden, wie man damit umgehen soll. Vielen Dank für Ihre Zeit. –

-2

Die DLL ist kompiliert, so dass das Umbenennen der Datei das namespace 's davon sowieso nicht ändert. Sie können ihm über eine using Direktive einen Alias ​​zuweisen.

using zip = ICSharpCode.SharpZipLib; 
+1

Er versucht den Namen _file_ zu verkürzen. – SLaks

+0

Ja, ich möchte den Dateinamen kürzen. –

5

Sie könnten versuchen, die Bibliothek zu zerlegen und dann mit einem neuen Namen neu zu montieren.

z.

1) Öffnen Sie die Visual Studio-Eingabeaufforderung.

ildasm /all /out=ICSharpCode.SharpZipLib.il ICSharpCode.SharpZipLib.dll 
ilasm /dll /out=shortname.dll ICSharpCode.SharpZipLib.il 

2) In shortname.dll das Projekt

+1

Ich musste auch die Zwischen-Datei (.il) bearbeiten und den alten Namen mit dem neuen Namen finden/ersetzen. Die Ersetzungen erfolgten speziell in den Einträgen ".assembly" und ".module". Dies ist definitiv der einfachste Weg, eine Assembly umzubenennen. Vielen Dank. – Jin

+0

Das ist großartig, aber es funktioniert nicht, wenn es nicht verwalteten Code gibt. – nurettin