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

标签 c# .net settings projects

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

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

有点像

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

可以看出,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.CoreImporter 的设置存储在哪里?

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/

相关文章:

c# - 如何获得更新记录数的计数(*)

android - 如何添加适用于移动和非移动友好 URLS 的 Android WebView 设置?

c# - 是否有 System.Text.Json 替代 Json.NET 的 JsonProperty(Order)?

c# - 从列表而不是整个索引中删除对象属性

c# - 责任绩效链

.net - TCPListener blues,无法弄清楚为什么连接没有正确关闭

android - Settings.Secure.HTTP_PROXY 在 ICS 中已弃用,但没有关于替换的信息

c# - 相当于库 (DLL) 的 'app.config'

c# - 无法将反序列化 Json 对象绑定(bind)到类模型中

c# - 如何在 Ado.Net 中使用 DataReader 将 varchar 获取为 byte[]?