Vai ir veids, kā iegūt asamblejas, kurā atrodas pašreizējais kods, ceļu? Es nevēlos saņemt izsaucošās asamblejas ceļu, bet tikai to, kurā atrodas kods.
Būtībā manam vienības testam ir jālasa daži xml testa faili, kas atrodas attiecībā pret dll. Es gribu, lai ceļš vienmēr būtu pareizi atrisināts neatkarīgi no tā, vai testēšanas dll tiek palaista no TestDriven.NET, MbUnit GUI vai kā citādi.
Edit: Cilvēki, šķiet, nesaprot, ko es jautāju.
Mana testēšanas bibliotēka atrodas, teiksim
C:\projects\myapplication\daotests\bin\Debug\daotests.dll
un es gribētu iegūt šo ceļu:
C:\projects\myapplication\daotests\bin\Debug\
Trīs līdzšinējie ieteikumi man neizdodas, kad es palaidu no MbUnit Gui:
Environment.CurrentDirectory
sniedz c:\Programmu datnes\MbUnit
System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location
dod C:\Documents un
Settings\george\Local
Settings\Temp\ ....\DaoTests.dll
System.Reflection.Assembly.GetExecutingAssembly().Location
sniedz to pašu, ko iepriekšējais.
Vai tas palīdz?
//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 );
Pašreizējais direktorijs, kurā jūs eksistējat.
Environment.CurrentDirectory; // This is the current directory of your application
Ja kopējat .xml failu kopā ar build, jums vajadzētu to atrast.
vai
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(SomeObject));
// The location of the Assembly
assembly.Location;