Как добавить относительный путь к файлу БД для С#

У меня есть проект C#, и я добавил файл доступа (.mdb) с помощью опции New Data Source.

Поэтому его копия всегда находится в папке моего проекта. Теперь моя строка подключения использует этот путь (C:\Users\PC\Visual Studio\Projects....). Если я перемещаю проект в другой каталог или на другой компьютер, мне нужно вручную изменить путь. Но если я делаю приложение устанавливаемым, это может оказаться невозможным.

Как сделать путь БД относительно проекта?


person Sam Pro    schedule 06.10.2015    source источник
comment
Вы пытались использовать относительный путь: например. .\Данные\MyDatabase.mdb?   -  person Vova    schedule 06.10.2015


Ответы (2)


При настройке установщика вы указываете, в какую папку будет помещен .mdb файл. Вы можете поместить его в ту же папку, что и файл .exe вашего приложения, или в папку приложения под AppData, или в домашнюю папку пользователя, или в любое другое место, которое вам нравится. Точно так же, как вы указываете это программе установки, вы можете указать это в своем коде, используя Environment.SpecialFolder.

Проблема в том, что во время разработки ваш файл .mdb обычно находится в корне папки вашего проекта, что не совпадает ни с одним из вышеперечисленных.

Что я делаю, так это то, что прежде всего в параметрах проекта я удостоверяюсь, что когда мое приложение запускается во время разработки, оно всегда запускается в корневой папке моего проекта, а не в папке ./bin/Debug.

Затем, каждый раз, когда мое приложение запускается, я проверяю, находится ли мой файл .mdb в текущем каталоге приложения, и если это так, то это должен быть запуск разработки, поэтому я использую его.

В противном случае это должен быть запуск развертывания, поэтому я использую перечисление SpecialFolder, чтобы получить папку, в которую установщик должен был поместить файл .mdb.

person Mike Nakis    schedule 06.10.2015

Я предлагаю использовать: System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);

Вы можете увидеть этот вопрос для справки.

person Eric Ouellet    schedule 06.10.2015