我不太确定 .NET 和 C# 3.5 如何处理跨越多个项目和多个解决方案的应用程序设置。也许有人可以帮我解决问题。
我有 2 个解决方案,都包含多个项目。其中一些项目在 Properties 文件夹下包含一个 Setttings.settings 文件,其中包含此项目中的源文件所需的特定配置变量。
有点像
- JobManager 解决方案
- Manager.Core(带有设置文件)
- Manager.UserInterface(带有设置文件)
- Manager.Extension
- 进口商解决方案
- 导入器(带有设置文件)
- 服务(带有设置文件)
可以看出,Manager.Core
包含自己的配置文件来存储数据库连接信息和其他内容,而 Importer
包含自己的配置文件来存储路径使用 Manager.Core
到导入目录以了解从哪里获取需要导入数据库的文件。 (这就是 Manager.Core 的用途,它包含与数据库一起使用的所有查询和插入)
Service
是一个使用 Importer 的 Windows 服务,让它每隔一小时左右运行一次,包含它自己的错误记录路径配置设置。
现在当我编译服务时,只有 1 个名为 Service.exe.config 的配置文件,仅包含在服务项目中指定的配置参数。我的第一个方法是在 Service.exe.config 中复制 Manager.Core 和 Importer 的每个设置条目。但测试表明,不知何故,Importer 的参数存在并被使用。
Service.exe.config 中不存在 Manager.Core
和 Importer
的设置存储在哪里?
Manager.Core
的设置是否也存在,这意味着无需在服务设置文件中复制这些配置设置的条目?
亲切的问候, 迈克尔
最佳答案
设置默认值通常生成到代码中,然后编译到生成的 dll 中
他们有一个设置为“SettingsSingleFileGenerator”的 CustomTool 属性
对于一个名为 Foo.settings 的设置文件,它包含一个单一的值“MyName”,其范围为 Application of type string with value "Shuggy"in namespace Company.Properties(名为“Company”的项目的默认位置),如果您查看在反射器中的 dll 中,您会在 Company.Properties 命名空间中找到一个类,如下所示:
[GeneratedCode(
"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator"
,"9.0.0.0")]
[CompilerGenerated]
internal sealed class Foo : ApplicationSettingsBase
{
private static Settings defaultInstance =
((Settings) SettingsBase.Synchronized(new Settings()));
public static Settings Default
{
get { return defaultInstance; }
}
[ApplicationScopedSetting]
[DefaultSettingValue("Shuggy")]
[DebuggerNonUserCode]
public string MyName
{
get
{
return (string) this["MyName"];
}
}
}
这就是设置结构和默认值在它们相关的 dll 中持久化的方式。根据范围(可能还有应用程序决定执行的编程更改)从各种配置文件中读取实际值
有关如何使用它们的更高级别的 View ,请参阅 this article
关于c# - 如何在 VS 2008 和 .NET 中使用跨越多个解决方案和项目的设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/780974/