Comment puis-je obtenir le chemin d'accès de l'assemblée le code est-il?

Est-il un moyen d'obtenir le chemin d'accès pour l'assemblée, dans laquelle le code actuel réside? Je ne veux pas le chemin de la convocation de l'assemblée, juste l'un contenant le code.

Fondamentalement, mon test unitaire doit lire du xml fichiers de test qui sont situés par rapport à la dll. Je veux que le chemin d'accès à toujours résoudre correctement, peu importe si le test dll est exécuté à partir d'TestDriven.NET le MbUnit GUI ou quelque chose d'autre.

Modifier: les Gens semblent être de l'incompréhension de ce que je vous demande.

Ma bibliothèque de test est situé à dire

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

et je voudrais le mettre sur ce chemin:

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

Les trois suggestions jusqu'à présent à me manquer quand je le lance à partir de la MbUnit Gui:

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

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

  • System.Reflection.Assembly.GetExecutingAssembly().Location
    donne le même que le précédent.

  • C'est votre solution: var dir = domaine d'application.CurrentDomain.BaseDirectory;
  • Cela devrait être la solution retenue. Domaine d'application.CurrentDomain.BaseDirectory est la bonne approche.
  • Voir: finding-my-main-executables-path-using-assembly-vs-appdomain
  • Je suis venu ici à la recherche d'une solution pour un package nuget pour lire un fichier JSON à partir de son paquet de répertoire. Il semble que quand un package nuget est exécutée, le "domaine d'application.CurrentDomain.BaseDirectory" les points à l'exécution de projets de répertoire, et non pas le package nuget répertoire. Aucune de ces semblent cibler le package nuget répertoire correctement.
  • non, ce ne serait pas parce que ce n'est pas ce que cette question était d'environ (en fait, quand il a été demandé, nuget n'existait pas) - n'hésitez pas à commencer une nouvelle question et une table de ping-moi là, mais je peux vous dire dès maintenant que son impossible dans la plupart des cas. Pour la plupart des projets de la nuget répertoire est packages à côté de la sln fichier. MAIS quand vous rassembler et de diffuser des choses il n'existe pas de fichier sln et pas de répertoire packages. Lors de la compilation, les choses qui sont nécessaires (mais pas tout) est copié dans le répertoire bin. Votre meilleur pari est d'utiliser un postbuild script pour copier le fichier que vous voulez.
  • Pour ceux qui lisent ces commentaires croire AppDomain.CurrentDomain.BaseDirectory est la bonne solution, reportez-vous à ce commentaire qui propose une meilleure solution.

InformationsquelleAutor George Mauer | 2008-09-09