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)).Location
dà C:\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 );
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;