Еще одно несовершенное решение (но, возможно, немного ближе к идеальному, чем некоторые другие):
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);
}
Эта версия вернет папку текущих проектов, даже если текущий проект не подходит Startup Project
для решения.
Первый недостаток в том, что я пропустил проверку ошибок. Это можно исправить достаточно просто, но это должно быть проблемой только в том случае, если вы храните свой проект в корневом каталоге для диска или используете соединение на своем пути (и это соединение является потомком папки решения), поэтому этот сценарий маловероятен. , Я не совсем уверен, что Visual Studio все равно сможет справиться с любой из этих настроек.
Другая (более вероятная) проблема, с которой вы можете столкнуться, заключается в том, что имя проекта должно совпадать с именем папки для проекта, чтобы его можно было найти.
Другая проблема, которая может возникнуть у вас, заключается в том, что проект должен находиться в папке решения. Обычно это не проблема, но если вы использовали Add Existing Project to Solution
возможность добавить проект в решение, то это может быть не так, как организовано ваше решение.
Наконец, если ваше приложение будет изменять рабочий каталог, вы должны сохранить это значение, прежде чем делать это, потому что это значение определяется относительно текущего рабочего каталога.
Конечно, все это также означает, что вы не должны изменять значения по умолчанию для ваших проектов Build
-> Output path
или Debug
-> Working directory
параметры в диалоговом окне свойств проекта.