如何在(App.config)connectionString中使用应用程序数据

我在一个项目中有一个SQL Server CE数据库,我不想将它存储在%AppData%目录中。 但是我找不到在连接字符串中引用Application Data路径的方法(在App.Config中)

         

到目前为止,我了解到:%APPDATA%不受支持,并且使用设置类(如建议的)也不起作用(在抛出exception时不构造设置类)。

是否可以在connectionString属性中使用应用程序数据文件夹(或其他特殊文件夹)(在App.Config中)?

注意:似乎我正在寻找一种解决方案来尽可能早地修改连接字符串(在代码中)而不是本机App.Config解决方案。

使用您的自定义构建环境变量支持:

让你有:

    

你可以使用:

 using System.Configuration; // requires reference to System.Configuration.dll ConfigurationManager.ConnectionStrings["EntityConnectionString"].ConnectionString.Replace("%AppData%", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

接下来,您可以支持多个环境变量:

 var vars = new Dictionary { { "%AppData%", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), { "%Temp%", Environment.GetFolderPath(SpecialFolder.Temp) }, // etc.. { "%YourNonStandardVar", "YourNonStandartPath" } }; var result = ConfigurationManager.ConnectionStrings["YourString"].ConnectionString foreach (var v in vars) result = result.Replace(v.Key, v.Value);