gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:20:40 24 4
gpt4 key购买 nike

我在项目中有一个 SQL Server CE 数据库,我不想将其存储在 %AppData% 目录中的某个位置。但是我找不到一种方法来引用连接字符串中的应用程序数据路径(在 App.Config 中)

<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="EntityConnectionString" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlServerCe.3.5;provider connection string=&quot;Data Source=|ApplicationData|\Entities.sdf&quot;" providerName="System.Data.EntityClient"/>
</connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>

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

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

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

最佳答案

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

让你拥有:

<connectionStrings>
<add name="My" connectionString="..;Data Source=|%AppData%|\Entities.sdf;.." />
</connectionStrings>

你可以使用:

using System.Configuration; // requires reference to System.Configuration.dll

ConfigurationManager.ConnectionStrings["EntityConnectionString"].ConnectionString.Replace("%AppData%", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

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

var vars = new Dictionary<string, string>
{
{ "%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);

关于c# - 如何在 (App.config) connectionString 中使用应用程序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4243731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com