Une meilleure façon d'obtenir le répertoire de base?

J'ai ce code pour charger un fichier de configuration et de lire toutes les valeurs et il fonctionne très bien lors de l'exécution de l'application, mais ne tient pas sur l'équipe de la ville parce que le domaine d'application de base du répertoire où le script de construction (psake) est démarré. Je sais que je peux changer de répertoire pour le construire dir avant d'exécuter les tests, mais j'ai pensé que c'est mieux de faire le chargement du fichier de configuration de travail en tout temps, peu importe.

XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, cfgFile));

Est-il un autre moyen pour obtenir le "BaseDirectory" qui fonctionne vraiment tout le temps? J'ai essayé de le ci-dessous avec les mêmes résultats:

string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
XDocument.Load(Path.Combine(path, cfgFile));

EDIT 1 le problème est Le suivant. Mes solutions dans le répertoire de base est "C:\Project", le tout compilé les fichiers sont copiés "C:\Project\build". Maintenant, dans le psake script de compilation, j'ai le code suivant:

task Test -depends PrepareTests {
    try { 
        #$old = pwd
        #cd $build_dir
        &$mspec $mspec_projects --teamcity
        #cd $old
    }
    catch {
        &echo "Error starting test runner"
        Exit 1;
    }      
}

Comme vous pouvez le voir j'ai commenté l'évolution des répertoires qui rend le BaseDirectory l'emplacement du fichier build /solution au lieu du répertoire de construction, indépendamment de la façon dont j'essaie d'y accéder. Un peu déroutant si vous me demandez.

Mise à JOUR j'aimerais savoir si il est possible d'obtenir le répertoire de l'assemblée indépendamment de ce répertoire de l'application qui a commencé le domaine d'application est situé. Comment?

source d'informationauteur mhenrixon | 2010-07-02