我和MikeD一起使用SQLite而不是SQL Compact,但你仍然会遇到同样的问题(从app.config加载连接字符串)。虽然在 .NET 外接程序 DLL 项目中可以添加 app.config 文件,但如果没有特殊代码,使用 System.Configurations.ConfigurationManager 的代码将无法读取 DLL 项目的 app.config 中的配置数据(其生成输出应为 [外接程序名称].dll.config)。在早期的 .NET (1.x) 中,DLL 的 app.config 中的所有配置内容都应合并到加载 DLL 的 EXE 应用的 app.config 中。在AutoCAD中,即Acad.exe.config。所以,是的,您可以将 DLL 的 app.config 合并到 acad.exe.config 中。但是,对于后来的.NET(我不记得从什么时候开始,2.x或3.x?),您可以以某种方式直接在dll的*.dll.config中加载配置,唯一作为System.Configuration.Configuration.AppSettings。例如,在 DLL 的 app.config 中,可以添加 appSettings,如:
生成项目时,获取 [外接程序名称].dll.config,将其放在与 DLL 相同的文件夹中。你可以有这样的代码来加载设置:private void LoadSettings(out string dbName, out string fileName)。
{。
dbName=“”;。
文件名=“”;。
。
配置配置 = 空;。
字符串 exeConfigPath = this,GetType().组装.位置;。
尝试。
{。
config = ConfigurationManager.OpenExeConfiguration(exeConfigPath);。
}。
捕获(异常例)。
{。
throw new System.IO.FileFormatException(。
$“正在加载配置错误:{例如,消息}“);。
}。
。
if (config != null)。
{。
dbName = config,AppSettings.Settings[MyDBName].价值;。
文件名 = 配置,AppSettings.Settings[MyDBFileName].价值;。
}。
还。
{。
抛出新的无效程序异常(。
“无效的 *.dll.confg 文件,。
}。
}。
如果设置基于每个用户,则还可以简单地在项目>资源>设置中添加设置,然后在用户范围中添加设置。然后,您只需使用Properties.Settings.Default.xxxxx 加载设置(确保在代码首次运行时为其提供默认值,并在某个时刻保存设置)。呵呵。
|