Gibt es eine Möglichkeit, den Pfad der Assembly zu ermitteln, in der sich der aktuelle Code befindet? Ich möchte nicht den Pfad der aufrufenden Assembly, sondern nur den Pfad der Assembly, die den Code enthält.
Grundsätzlich muss mein Unit-Test einige xml-Testdateien lesen, die sich relativ zur DLL befinden. Ich möchte, dass der Pfad immer korrekt aufgelöst wird, unabhängig davon, ob die Test-DLL von TestDriven.NET, der MbUnit-GUI oder einem anderen Programm ausgeführt wird.
Edit: Die Leute scheinen falsch zu verstehen, was ich frage.
Meine Testbibliothek befindet sich beispielsweise in
C:\projects\myapplication\daotests\bin\Debug\daotests.dll
und ich würde gerne diesen Pfad erhalten:
C:\projects\myapplication\daotests\bin\Debug\
Die drei bisherigen Vorschläge schlagen fehl, wenn ich sie über die MbUnit-GUI ausführe:
Environment.CurrentDirectory
ergibt c:\Programmdateien\MbUnit
System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location` ergibt C:\Dokumente und Einstellungen\George\Lokal Einstellungen\Temp\ ....\DaoTests.dll
System.Reflection.Assembly.GetExecutingAssembly().Location
ergibt das Gleiche wie das vorherige.
Ist das hilfreich?
//get the full location of the assembly with DaoTests in it
string fullPath = System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location;
//get the folder that's in
string theDirectory = Path.GetDirectoryName( fullPath );
Dies sollte funktionieren, es sei denn, die Baugruppe ist schattenkopiert:
string path = System.Reflection.Assembly.GetExecutingAssembly().Location
Das aktuelle Verzeichnis, in dem Sie sich befinden.
Environment.CurrentDirectory; // This is the current directory of your application
Wenn Sie die .xml-Datei mit build herauskopieren, sollten Sie sie finden.
oder
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(SomeObject));
// The location of the Assembly
assembly.Location;