Come posso ottenere il percorso dell'assembly in cui si trova il codice?

C'è un modo per ottenere il percorso dell'assembly in cui risiede il codice corrente? Non voglio il percorso dell'assembly chiamante, solo quello che contiene il codice.

Fondamentalmente il mio test unitario ha bisogno di leggere alcuni file di test xml che si trovano relativi alla dll. Voglio che il percorso si risolva sempre correttamente indipendentemente dal fatto che la dll di test venga eseguita da TestDriven.NET, dalla GUI di MbUnit o da qualcos'altro.

Modifica: Sembra che la gente stia fraintendendo quello che sto chiedendo.

La mia libreria di test si trova in diciamo

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

e vorrei ottenere questo percorso

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

I tre suggerimenti finora mi falliscono quando eseguo dalla MbUnit Gui:

  • `Environment.CurrentDirectory dà c:\ProgrammiMbUnit

  • System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).LocationC:\Documents and Settings\george\Local Settings\Temp\ ....\DaoTests.dll

  • System.Reflection.Assembly.GetExecutingAssembly().Location dà lo stesso risultato del precedente.

Questo aiuta?

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

Questo dovrebbe funzionare, a meno che l'assembly non sia shadow copied:

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

La directory corrente in cui esistete.

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

Se copi il file .xml fuori con build dovresti trovarlo.

oppure

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

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