我正在编写一个需要简单持久层的桌面应用程序——我发现了 SubSonic 并且它能够与 SQLite 一起工作。但是我需要将数据库文件保存在用户的 AppData 文件夹中,并且不知道如何将这些值放入 app.config - 我不想使用绝对路径。
app.config 可以以某种方式访问环境变量或引用应用程序数据文件夹吗?
我正在编写一个需要简单持久层的桌面应用程序——我发现了 SubSonic 并且它能够与 SQLite 一起工作。但是我需要将数据库文件保存在用户的 AppData 文件夹中,并且不知道如何将这些值放入 app.config - 我不想使用绝对路径。
app.config 可以以某种方式访问环境变量或引用应用程序数据文件夹吗?
对于 subsonic v2.x,我会忽略 app.config 连接字符串,并在使用数据库之前在运行时设置它。当然,提供者名称保持不变。
string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"MyApplication\Northwind.db3");
DataService.Providers["Northwind"].DefaultConnectionString =
String.Format(@"Data Source={0};Version=3;New=False;Connection Timeout=3", dbPath);
无法在 app.config 中为连接字符串指定 AppData 文件夹。
但是您可以做的是在安装期间或首次运行应用程序时将值写入配置文件。
查找appdata的“框架方式”是使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
无论平台如何,这都会找到正确的 appdata 路径。
如果您使用 ASP.NET 有几种方法,无论是哪一种语言
Server.MapPath("~") 会将应用程序的根目录作为完整路径名返回,然后您只需将“/app_data”添加到它即可获得完整路径。
或者检查 HttpContext.Current.Request 和 HttpContext.Current.Application 有许多(并且比我刚才提到的那个更好)属性将为您提供相同的文件夹 - 作为完整路径的应用程序的根。
请注意,即使您将应用程序作为虚拟文件夹,并且在该文件夹的 IIS 中配置了应用程序的常规文件夹,这些都应该可以工作
但是,这仅在运行时才有可能,因此在 app.config 中无法真正提及。您可以尝试使用 app.config 驻留的相对路径 IE“../App_Data”或“/App_data”,但我不确定您的确切要求。
祝你好运