Получение полного пути к каталогу проекта (как в Visual Studio debug, так и в выпуске)

#c# #wpf #visual-studio

#c# #wpf #visual-studio

Вопрос:

У меня возникли проблемы с выяснением, как получить путь к файлам, которые я добавил или создал в свой проект. В настоящее время в корне проекта у меня есть папка с данными <projectName>data.. . Я пытался получить путь к файлу и проверить, существует ли файл, но у меня возникли проблемы с тем, чтобы путь был динамичным и правильным.

Моими основными попытками были использование Directory.GetCurrentDirectory() и AppDomain.CurrentDomain.BaseDirectory , но они заканчиваются чем-то вроде G:..<projectName><projectName>binDebugnetcoreapp3.1 . Где в первом <projectName> есть файл .sln, а во втором <projectName> — папки «Мои данные», «Корзина» и т. Д.

Я хочу иметь возможность проверять этот путь как во время отладки в моей IDE, так и после выпуска программы. Так эффективно находить путь G:..<projectName><projectName>data<actualFile> . Возможно, я неправильно понимаю, как я должен настраивать свои каталоги в папке моего проекта. Поскольку я знаю, что запуск debug приведет к помещению .exe в bin debug. Поэтому, если нет какого-либо способа изменить рабочий каталог независимо от exe во время отладки (что, я полагаю, не очень поможет и вызовет ту же проблему после выпуска) или какой-либо другой настройки в Visual Studio, я не совсем уверен, что делать. Также я не хочу указывать какой-либо статический путь к папке, поскольку я хочу сохранить все это в каталоге проекта.

Понятно, как мне получить конкретный путь к файлу в моем каталоге проекта и заставить путь работать как для отладки, так и для выпуска?

Комментарии:

1. требуется ли папка с данными в финальной версии? или он используется только для отладки? почему его нужно поместить в корневой каталог проекта, а не в тот же каталог, что и exe?

2. Для выпуска потребуется папка с данными. При выпуске убедитесь, что в структуре проекта, вероятно, будет папка с данными рядом с exe, но я не могу понять, как имитировать это во время отладки.

Ответ №1:

Для этой цели есть настройка.

Выберите файлы в папке данных, щелкните правой кнопкой мыши и выберите Properties из контекстного меню, а затем установите для свойства «Копировать в выходной каталог» значение «Копировать всегда».

Таким образом, каждый раз, когда вы создаете проект, папка с данными будет автоматически копироваться в binDebug или binRelease .

Комментарии:

1. Спасибо, это сработало! Это вызывало очень запутанную головную боль, особенно при сравнении этого с чем-то вроде Java или C . Но привет, часть процесса обучения. Мне нужно будет узнать больше о том, как опубликовать и упаковать его в будущем, но чувствую, что это помогло решить очень запутанную проблему, чтобы разобраться с большинством из них на некоторое время.

2. Рад, что это помогает. Это то, что было встроено в IDE столетия назад, чтобы устранить необходимость многократного копирования файлов в выходную папку вручную. Хорошо то, что, как только вы узнаете, что это просто простая функция IDE, вы никогда не забудете.