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

时间:2009-04-23 09:33:47

标签: c# .net settings projects

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

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

这样的东西
  1. JobManager解决方案
    • Manager.Core(带设置文件)
    • Manager.UserInterface(带设置文件)
    • Manager.Extension
  2. 导入解决方案
    • 导入程序(带设置文件)
    • 服务(带设置文件)
  3. 可以看出,Manager.Core包含自己的配置文件来存储数据库连接信息和其他东西,而Importer包含自己的配置文件,存储导入目录的路径以知道在哪里使用Manager.Core获取导入数据库所需的文件。 (这就是Manager.Core的用途,它包含了与DB一起使用的所有查询和插入内容)

    另一方面,

    Service是一个使用Importer的Windows服务,让它每小时左右运行一次,包含自己的错误记录路径配置设置。

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

    Service.exe.config 中不存在Manager.CoreImporter时存储的设置在哪里?

    Manager.Core的设置是否也存在,这意味着不必在服务设置文件中复制这些配置设置的条目?

    亲切的问候, 迈克尔

2 个答案:

答案 0 :(得分:1)

设置默认值通常生成代码,然后编译为生成的dll

他们设置了CustomSoolFileGenerator的CustomTool属性

对于名为Foo.settings的设置文件,其中包含带有范围的单个值“MyName”应用程序类型为字符串的应用程序,在名称空间Company.Properties(项目的默认位置,名为“Company”)中,值为“Shuggy”(如果您查看)反射器中的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中的持久性。从各种配置文件中读取实际值,具体取决于范围(以及可能的应用程序决定做的程序更改)

有关如何使用这些内容的更高级别视图,请参阅this article

答案 1 :(得分:0)

不使用这些,但是你可以用解决方案中单个文件的链接替换它们吗?