How to get Current Project Directory-Pfad mit C#
okay, hier ist die Frage. Ich habe zwei Projekte, die eine C# - Konsole und andere Klassenbibliothek.
Ich bin Zugriff/Aufruf der Klasse library-Methode der console-app.
Dort ist ein Ordner namens Dateien innerhalb der Klasse Bibliothek-Projekt.
Ich brauche, um den Pfad der Class library-Dateien Ordner aber immer wenn ich
System.IO.Directory.GetCurrentDirectory();
und
Environment.CurrentDirectory;
es gibt mich Weg von der Konsole-Projekt, das ich benutze, um die Methode aufrufen.
Oben genannten Methoden geben mir Weg, wie
C:\\ConsolePro\\bin\\Debug
aber ich brauche den Pfad der Class library-Projekt
C:\\ClassLibPro\\bin\\Debug
Bitte beraten
FYI, die Sie nie den Pfad der dll Verzeichnis wie Visual Studio kopiert die Abhängigkeiten von Ihrem ursprünglichen Speicherort (ClassLibPro) in das bin / debug-Ordner des Projekts (Pro Konsole). Es gibt keinen Weg, um zu verfolgen diese zurück, während der Laufzeit.
Warum müssen Sie den Pfad des Projekts?
Warum müssen Sie den Pfad des Projekts?
InformationsquelleAutor Learner | 2012-06-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sobald der code kompiliert und ausgeführt, "Projekt-Pfad" hat keine Bedeutung. Alles, was Sie können bestimmen, sind die Speicherorte der kompilierten Assemblys. Und Sie können nur tun, was Sie Fragen, wenn Sie Ihre Konsole-Projekt verweist gebaut "class library", DLL direkt, anstatt über eine Projekt-Referenz.
Dann können Sie machen Verwendung der Reflexion zu erhalten Assembly Wege wie;
InformationsquelleAutor RJ Lohan
Wenn Sie das laden der Bibliothek-Klasse aus einer anderen assembly.
Ersetzen
{LibraryClassName}
mit dem class-name der Bibliothek.So bestimmen Sie die Montageart an der Stelle von {Montage}. Ich bin mit, wie dieser string Pfad=System.Reflexion.Montage.GetExecutingAssembly().Lage;
Ich verwendet den Namen der Klasse und es funktioniert nicht zu!
Die Klasse Namen hast du benutzt? Ihre-Bibliothek-Projekt-Klasse? Warum es nicht funktioniert, falsche Pfad?
Check meine Antwort. Ich habe erklärt es. Ihr code wird zurückgegeben Lage, aber die DLL-location, die in der Konsole-Projekt. so im wesentlichen es ist wieder das gleiche Projekt Pfad. Ich haben sich zu bewegen, beide Projekte im selben Verzeichnis, um dieses Problem zu lösen.
InformationsquelleAutor tsukimi
Ich glaube das problem ist:
Da die Konsole Projekt hat die DLL-Datei verweisen, ist die mit DLL-aufrufen von Methoden.
In dieser Zeit ist die Rückgabe der Bibliothek-Klasse projct DLL-location, die sich im Konsolen-Projekt-Verzeichnis bin und es nicht wissen, über den physischen Speicherort der Klasse Bibliothek-Projekt.
also im wesentlichen wieder die gleichen Projekt-Pfad. Ich haben sich zu bewegen, beide Projekte im selben Verzeichnis, um dieses Problem zu lösen.
InformationsquelleAutor Learner
Ich hoffe, ich verstehe u corretly:
InformationsquelleAutor SteMa
Sollten Sie in der Lage sein zu verwenden
Directory.GetParent(Directory.GetCurrentDirectory())
ein paar mal auf höhere Ebene Verzeichnisse, und fügen Sie dann den Pfad der lib-directory zu Ende.InformationsquelleAutor cmastudios
Ich würde empfehlen, eine von zwei Optionen.
Wenn die Dateien klein sind, gehören Sie in die Klasse Bibliothek und streamen Sie Sie in einen temporären Speicherort, wenn Sie benötigt
Andere option ist, kopieren Sie die Dateien während dem bauen, um die Ausgabe-Verzeichnis und verwenden Sie Sie so. In Fällen von mehreren gemeinsamen Projekten ist es am besten, um eine gemeinsame bin-Ordner, den Sie kopieren Baugruppen und führen Sie aus, die Lage.
InformationsquelleAutor tsells
Trotz ich kann nicht finden, eine gute Lösung, die ich mit diesem trick :
solange Sie wieder kommen wollen, um Ihre ideale Weg u sollte hinzufügen, - Verzeichnis.GetParent() statt ...
InformationsquelleAutor Mahdi ghafoorian