Encore une autre solution imparfaite (mais peut-être un peu plus proche de la perfection que certaines des autres):
protected static string GetSolutionFSPath() {
return System.IO.Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName;
}
protected static string GetProjectFSPath() {
return String.Format("{0}\\{1}", GetSolutionFSPath(), System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
}
Cette version renverra le dossier des projets en cours même si le projet en cours n'est pas leStartup Project
pour la solution.
Le premier défaut avec ceci est que j'ai ignoré toutes les vérifications d'erreurs. Cela peut être résolu assez facilement mais ne devrait être un problème que si vous stockez votre projet dans le répertoire racine du lecteur ou si vous utilisez une jonction dans votre chemin (et cette jonction est un descendant du dossier de solution) donc ce scénario est peu probable . Je ne suis pas tout à fait sûr que Visual Studio puisse gérer l'une de ces configurations de toute façon.
Un autre problème (plus probable) que vous pouvez rencontrer est que le nom du projet doit correspondre au nom du dossier du projet pour qu'il soit trouvé.
Un autre problème que vous pouvez rencontrer est que le projet doit se trouver dans le dossier de solution. Ce n'est généralement pas un problème, mais si vous avez utilisé l' Add Existing Project to Solution
option pour ajouter le projet à la solution, cela peut ne pas être la façon dont votre solution est organisée.
Enfin, si votre application modifie le répertoire de travail, vous devez stocker cette valeur avant de le faire car cette valeur est déterminée par rapport au répertoire de travail actuel.
Bien sûr, tout cela signifie également que vous ne devez pas modifier les valeurs par défaut des options Build
-> Output path
ou Debug
-> de vos projets Working directory
dans la boîte de dialogue des propriétés du projet.