如何为 C# 添加数据库文件的相对路径

How to add relative path to DB file for C#

我有一个 C# 项目,我已经通过 New Data Source 选项添加了一个 Access 文件 (.mdb)。

所以它的副本总是在我的项目文件夹中。现在我的连接字符串使用该路径 (C:\Users\PC\Visual Studio\Projects...)。如果我要将项目移动到另一个目录或机器,我必须手动更改路径。但是,如果我将应用程序设置为可安装,这可能是不可能的。

如何使数据库路径相对于项目?

配置安装程序时,您指定 .mdb 文件将转到哪个文件夹。您可以选择将其放在与您的应用程序的 .exe 文件相同的文件夹中,或者放在 AppData 下的应用程序文件夹中,或者放在用户的主文件夹中,或者您喜欢的任何其他位置。正如您向安装程序指定它一样,您可以使用 Environment.SpecialFolder 枚举在代码中指定它。

问题是在开发的时候,你的.mdb文件一般在你项目文件夹的根目录下,正好和上面的none一致。

我所做的是,首先,在项目选项中,我确保当我的应用程序在开发过程中启动时,它总是在我的项目的根文件夹中启动,而不是在 ./bin/Debug 文件夹中。

然后,每次启动我的应用程序时,我都会检查我的 .mdb 文件是否在应用程序的当前目录中,如果是,那么这一定是一个开发 运行,所以我在用。

否则,这一定是一个部署 运行,所以我使用 SpecialFolder 枚举来获取安装程序应该放置 .mdb 文件的文件夹。

我建议使用:System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);

你可以看看这个question作为参考。