Υπάρχει τρόπος να λάβετε τη διαδρομή της συνέλευσης στην οποία βρίσκεται ο τρέχων κώδικας; Δεν θέλω τη διαδρομή της καλώντας συνέλευσης, μόνο αυτή που περιέχει τον κώδικα.
Βασικά η δοκιμή μονάδας μου πρέπει να διαβάσει κάποια αρχεία δοκιμής xml τα οποία βρίσκονται σε σχέση με το dll. Θέλω η διαδρομή να επιλύεται πάντα σωστά, ανεξάρτητα από το αν το dll δοκιμής εκτελείται από το TestDriven.NET, το MbUnit GUI ή κάτι άλλο.
Επεξεργασία: Οι άνθρωποι φαίνεται να παρεξηγούν τι ζητάω.
Η βιβλιοθήκη δοκιμών μου βρίσκεται στην τοποθεσία say
C:\projects\myapplication\daotests\bin\Debug\daotests.dll
και θα ήθελα να πάρω αυτή τη διαδρομή:
C:\projects\myapplication\daotests\bin\Debug\
Οι τρεις προτάσεις μέχρι στιγμής με απογοητεύουν όταν τρέχω από το MbUnit Gui:
Environment.CurrentDirectory
δίνει c:\Program Files\MbUnit
System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location
δίνει C:\Documents και
Settings\george\Local
Settings\Temp\ ....\DaoTests.dll
System.Reflection.Assembly.GetExecutingAssembly().Location
δίνει το ίδιο αποτέλεσμα με το προηγούμενο.
Βοηθάει αυτό;
//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 );
Αυτό θα πρέπει να λειτουργήσει, εκτός αν η συνέλευση είναι αντιγραμμένη στη σκιά:
string path = System.Reflection.Assembly.GetExecutingAssembly().Location
Ο τρέχων κατάλογος στον οποίο βρίσκεστε.
Environment.CurrentDirectory; // This is the current directory of your application
Αν αντιγράψετε το αρχείο .xml με το build θα πρέπει να το βρείτε.
ή
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(SomeObject));
// The location of the Assembly
assembly.Location;