Sin embargo, otra solución imperfecta (pero tal vez un poco más cerca de perfecto que algunos de los otros):
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);
}
Esta versión volverá carpeta de los proyectos actuales incluso si el proyecto actual no es el Startup Project
para la solución.
La primera falla con esto es que me salté todas las comprobaciones de error. Esto se puede solucionar con facilidad, pero solo debería ser un problema si está almacenando su proyecto en el directorio raíz de la unidad o usando una unión en su ruta (y esa unión es un descendiente de la carpeta de la solución) por lo que este escenario es poco probable . No estoy del todo seguro de que Visual Studio pueda manejar cualquiera de estas configuraciones de todos modos.
Otro problema (más probable) con el que se puede encontrar es que el nombre del proyecto debe coincidir con con el nombre de la carpeta del proyecto para que se encuentre.
Otro problema que puede tener es que el proyecto debe estar dentro de la carpeta de la solución. Por lo general, esto no es un problema, pero si ha utilizado la opción Add Existing Project to Solution
para agregar el proyecto a la solución, puede que esta no sea la forma en que se organiza su solución.
Por último, si su aplicación va a modificar el directorio de trabajo, debe almacenar este valor antes de hacerlo porque este valor se determina en relación con el directorio de trabajo actual.
Por supuesto, todo esto también significa que usted no debe alterar los valores por defecto para Build
de sus proyectos ->Output path
o Debug
->Working directory
opciones en el cuadro de diálogo de propiedades del proyecto.
Estos dos puntos lo señalan al directorio bin, por lo que si tiene un directorio bin para toda su solución, lo guiará allí y NO al directorio de su proyecto (o dos niveles ABAJO del directorio del proyecto) – matcheek
Environment.CurrentDirectory trabajado para mí también – MissPiplup