Еще одно несовершенное решение (но, возможно, немного ближе к идеальному, чем некоторые другие):
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
в диалоговом окне свойств проекта.