#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, вы никогда не забудете.