Kā es varu uzzināt asamblejas, kurā atrodas kods, ceļu?

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 );
Komentāri (12)

Tam vajadzētu darboties, ja vien montāža nav tēnā kopēta:

string path = System.Reflection.Assembly.GetExecutingAssembly().Location
Komentāri (0)

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;
Komentāri (3)