[英]How to work with settings spanning over multiple Solutions and Projects in VS 2008 and .NET
我不太确定.NET和C#3.5如何处理跨多个项目的应用程序设置以及多个解决方案。 也许有人可以帮我清理一下。
我有两个解决方案,都包含几个项目。 其中一些项目在Properties文件夹下包含一个Setttings.settings文件,其中包含此项目中源文件所需的特定配置变量。
就像是
可以看出, Manager.Core
包含自己的配置文件来存储数据库连接信息和其他内容,而Importer
包含自己的配置文件,存储导入目录的路径,以便知道从哪里获取需要导入的文件。数据库使用Manager.Core
来做到这一点。 (这就是Manager.Core的用途,它包含了与DB一起使用的所有查询和插入)
Service
,在另一方面,是使用了进口商,让我们运行它每隔一小时左右,包含它自己的配置设置错误日志路径的Windows服务。
现在,当我编译服务时,只有一个名为Service.exe.config的配置文件,其中只包含服务项目中指定的配置参数。 我的第一种方法是复制Service.exe.config中Manager.Core和Importer的每个设置条目。 但测试表明,不知何故,进口商的参数存在并被使用。
Manager.Core
和Importer
在Service.exe.config中不存在时存储的设置在哪里?
Manager.Core
的设置是否也存在,这意味着不必在服务设置文件中复制这些配置设置的条目?
亲切的问候,迈克尔
设置默认值通常生成代码,然后编译到生成的dll中
他们设置了一个CustomTool属性'SettingsSingleFileGenerator'
对于名为Foo.settings的设置文件,其中包含带有作用域的单个值'MyName'的应用程序类型为字符串的应用程序,在名称空间Company.Properties(名为'Company'的项目的默认位置)中的值为“Shuggy”,如果您查看了dll in您可以在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中的持久性。 从各种配置文件中读取实际值,具体取决于范围(以及可能的应用程序决定执行的程序更改)
有关如何使用这些内容的更高级别视图,请参阅本文
没有使用这些,但你可以用解决方案中的单个文件的链接替换它们吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.