Практически никогда не следует жестко программировать абсолютные пути. Если вы хотите сослаться на путь в папке программы, тогда вы используете Application.StartupPath
как root и относительный путь, например,
Dim filePath = Path.Combine(Application.StartupPath, "Resource\Check.txt")
Тогда неважно, откуда вы запускаете свою программу. . Для других стандартных путей к папкам следует использовать Environment.GetFolderPath
или My.Computer.FileSystem.SpecialDirectories
. Для нестандартных путей вы должны позволить пользователю выбрать FolderBrowserDialog
, OpenFileDialog
или SaveFileDialog
, а затем, при необходимости, сохранить этот путь в настройках или тому подобном.
Когда это произойдет для строк подключения к базе данных некоторые поставщики ADO. NET поддерживают использование "| DataDirectory |" в пути к файлу данных, который заменяется во время выполнения. Чем его заменить, зависит от типа приложения и способа его развертывания. Для приложений веб-форм он разрешается в папку App_Data . Для приложений ClickOnce Windows он разрешается в специальную папку данных. Для других приложений Windows он разрешается в папку программы, как и Application.StartupPath
. Я думаю, что поставщик SQLite поддерживает это, но я не уверен на 100%. Если это так, вы можете использовать что-то вроде этого:
m_dbConnection = New SQLiteConnection("Data Source=|DataDirectory|\Resource\MyDatabase.sqlite; Version=3;")
EDIT:
Если вы добавляете файлы данных в свой проект в обозревателе решений и хотите, чтобы они были частью развернутого приложения, вам необходимо настроить их, чтобы это произошло. Выберите файл в обозревателе решений, а затем установите для Build Action
значение Content
, а для свойства Copy to Output Directory
значение Copy Always
или, если вы собираетесь внести изменения в файл во время работы приложения, Copy if Newer
.
При сборке этот файл будет скопирован из исходной папки проекта в выходную папку вместе с EXE. Затем вы можете получить к нему доступ, используя Application.StartupPath
во время выполнения. Это означает, что во время отладки, а также после развертывания, он будет скопирован в выходную папку «\ bin \ Release», а также в выходную папку «\ bin \ Debug». Если вы добавите файл в папку в обозревателе решений, этот файл будет скопирован, поэтому я сказал ранее, что использовать его:
Dim filePath = Path.Combine(Application.StartupPath, "Resource\Check.txt")