繁体   English   中英

如何使用跨越VS 2008和.NET中的多个解决方案和项目的设置

[英]How to work with settings spanning over multiple Solutions and Projects in VS 2008 and .NET

我不太确定.NET和C#3.5如何处理跨多个项目的应用程序设置以及多个解决方案。 也许有人可以帮我清理一下。

我有两个解决方案,都包含几个项目。 其中一些项目在Properties文件夹下包含一个Setttings.settings文件,其中包含此项目中源文件所需的特定配置变量。

就像是

  1. JobManager解决方案
    • Manager.Core(带设置文件)
    • Manager.UserInterface(带设置文件)
    • Manager.Extension
  2. 进口商解决方案
    • 导入器(带设置文件)
    • 服务(带设置文件)

可以看出, Manager.Core包含自己的配置文件来存储数据库连接信息和其他内容,而Importer包含自己的配置文件,存储导入目录的路径,以便知道从哪里获取需要导入的文件。数据库使用Manager.Core来做到这一点。 (这就是Manager.Core的用途,它包含了与DB一起使用的所有查询和插入)

Service ,在另一方面,是使用了进口商,让我们运行它每隔一小时左右,包含它自己的配置设置错误日志路径的Windows服务。

现在,当我编译服务时,只有一个名为Service.exe.config的配置文件,其中包含服务项目中指定的配置参数。 我的第一种方法是复制Service.exe.config中Manager.Core和Importer的每个设置条目。 但测试表明,不知何故,进口商的参数存在并被使用。

Manager.CoreImporterService.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM