我正在编写一个需要简单持久层的桌面应用程序 - 我发现了SubSonic,它能够使用SQLite。但是我需要将数据库文件保存在用户的AppData文件夹中,并且不知道如何将这样的值放入app.config中 - 我不想使用绝对路径。
app.config可以以某种方式访问环境变量或引用应用程序数据文件夹吗?
答案 0 :(得分:2)
对于亚音速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);
答案 1 :(得分:1)
无法在app.config中为连接字符串指定AppData文件夹。
但是您可以做的是在安装期间或首次运行应用程序时将值写入配置文件。
答案 2 :(得分:0)
查找appdata的“框架方式”是使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
无论平台如何,都会找到正确的appdata路径。
答案 3 :(得分:0)
如果您使用ASP.NET语言
,有几种方法Server.MapPath(“〜”)将以完整路径名的形式返回应用程序的根目录,然后您只需添加“/ app_data”即可获得完整路径。
或者检查HttpContext.Current.Request和HttpContext.Current.Application 有很多(比我刚才提到的要好得多)属性可以为你提供相同的文件夹 - 作为完整路径的应用程序的根目录。
请注意,即使您将应用程序作为虚拟文件夹,并且在该文件夹的IIS中配置了应用程序的常规文件夹,这些应该都可以正常工作
但是这只能在运行时使用,因此在app.config中无法真正提及。你可以尝试使用app.config驻留在IE“../App_Data”或“/ App_data”的相关路径,但我不确定你是不是确切要求。
祝你好运