Hvordan får jeg banen til samlingen koden er i?

Finnes det en måte å få banen til samlingen der den gjeldende koden ligger? Jeg vil ikke ha banen til den anropende samlingen, bare den som inneholder koden.

I utgangspunktet må enhetstesten min lese noen xml-testfiler som er plassert i forhold til dll. Jeg vil at banen alltid skal løses riktig uavhengig av om testdll-en kjøres fra TestDriven.NET, MbUnit GUI eller noe annet.

Edit: Folk ser ut til å misforstå hva jeg spør om.

Testbiblioteket mitt ligger i for eksempel

C:\projects\myapplication\daotests\bin\Debug\daotests.dll

og jeg vil gjerne få denne banen:

C:\projects\myapplication\daotests\bin\Debug\Debug\

De tre forslagene så langt mislykkes meg når jeg kjører fra MbUnit Gui:

  • Environment.CurrentDirectory gir c:\Program Files\MbUnit\.

  • System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location gir C:\Documents and Settings\george\Local Innstillinger\Temp\ ....\DaoTests.dll.

  • System.Reflection.Assembly.GetExecutingAssembly().Location (System.Reflection.Assembly.GetExecutingAssembly().Location) gir det samme som det forrige.

Hjelper dette?

//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 );
Kommentarer (12)

Dette bør fungere, med mindre sammenstillingen er skyggekopiert:

string path = System.Reflection.Assembly.GetExecutingAssembly().Location
Kommentarer (0)

Den gjeldende katalogen der du finnes.

Environment.CurrentDirectory;  // This is the current directory of your application

Hvis du kopierer .xml-filen ut med build, bør du finne den.

eller

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(SomeObject));

// The location of the Assembly
assembly.Location;
Kommentarer (3)