首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Properties.Settings 6.0 (核心)“类库”项目中创建经典Properties.Settings

在Properties.Settings 6.0 (核心)“类库”项目中创建经典Properties.Settings
EN

Stack Overflow用户
提问于 2022-11-03 21:25:46
回答 2查看 85关注 0票数 -2

settings"

  • Observed:
  • 创建了一个新的"WPF应用程序“.NET 6.0项目->属性->设置->”创建或打开应用程序“.Net 6.0项目创建了一个新文件夹”属性“,该文件夹有一个带有额外黑色扳手符号的黄色文件夹图标,or
  • ,它包含一个新的项目Settings.settings,可以通过经典的设置设计器进行编辑,看起来像在.Net 4.8中那样,并且在项目的根文件夹中自动创建了一个新的App.config XML文件,这个文件夹看起来也像.Net 4.8中使用的那样,okay

现在,同样的过程显然只能在

在相同的解决方案中添加了一个新的“类库”项目,我希望在这个解决方案中使用configurably:

  • but新的子项目,在项目属性对话框中似乎没有“设置”选项(而不是.Net4.x应该有)

  • but在执行“重建解决方案”时所描述的那样。

在名称空间'System.Configuration‘中找不到类型名称’

‘CS1069。此类型已转发给程序集“System.Configuration.ConfigurationManager、Version=0.0.0.0、Culture=neutral、PublicKeyToken=cc7b13ffcd2ddd51”,请考虑向该程序集添加引用。C:\Users\Stefan\source\repos\WpfCorePropertiesSettings\ClassLibrary1\Properties\Settings.Designer.cs 16活性ClassLibrary1

  • 作为下一步,将NuGet包"System.Configuration.Abstractions“添加到类库项目中,可以治愈症状,”重建解决方案“使错误消失。

TLDNR,实际问题:这是一个可以接受的解决方案还是一个可以避免的假象?

在我看来,NuGet包描述听起来不像是为了这个目的而制作的,我以前也没有听说过维护人员的名字(这可能重要吗?) https://github.com/davidwhitney/System.Configuration.Abstractions

提亚

PS:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-12-03 09:35:04

同时,我对自定义的"AppSettings.json“方法感到满意。

删除前面描述的“经典app.config”方法之后,在添加了两个NuGet包之后:

代码语言:javascript
复制
<PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />

..。我在Visual中的“类库”(子)项目级别手动创建了一个自定义Json文件,并设置了它的CopyToOutputDirectory属性

代码语言:javascript
复制
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>

并添加了“IConfigurationBuilder`”部分:

代码语言:javascript
复制
using Microsoft.Extensions.Configuration;

namespace Xyz.Data
{
    internal class AppSettingsConfig
    {
        public AppSettingsConfig()
        {
            IConfigurationBuilder builder = new ConfigurationBuilder();
            _ = builder.AddJsonFile(Path.Combine(Directory.GetCurrentDirectory(), "AppSettings.Movies3Data.json"));

            var root = builder.Build();
            AttachedDb = root.GetConnectionString("AttachedDb")!;
        }

        public string AttachedDb { get; init; }
    }
}

然后把它变成了“乔恩·斯基特·索尔顿”

代码语言:javascript
复制
    /// <summary>
    /// Singleton as described by Jon Skeet
    /// </summary>
    /// https://csharpindepth.com/Articles/Singleton
    internal sealed class AppSettingsConfigSingleton
    {
        private static readonly Logger log = LogManager.GetCurrentClassLogger();

        private AppSettingsConfigSingleton()
        {
            log.Trace($"{nameof(AppSettingsConfigSingleton)} ctor is running");

            IConfigurationBuilder builder = new ConfigurationBuilder();
            _ = builder.AddJsonFile(Path.Combine(Directory.GetCurrentDirectory(), "AppSettings.Movies3Data.json"));

            var root = builder.Build();
            AttachedDb = root.GetConnectionString("AttachedDb")!;
        }
        static AppSettingsConfigSingleton() { }

        public string? AttachedDb { get; init; }

        public static AppSettingsConfigSingleton Instance { get { return Nested.instance; } }

        private class Nested
        {
            // Explicit static constructor to tell C# compiler
            // not to mark type as beforefieldinit
            static Nested()
            {
            }

            internal static readonly AppSettingsConfigSingleton instance = new();
        }
    }

而且它“运行良好”,它还阅读JSON内容,只是在运行时被管理员修改了。(这将是多UI解决方案中工作单元模式的Entity Framework Core "localdb“位置)。“我也再次感谢你,”EldHasp说。

票数 0
EN

Stack Overflow用户

发布于 2022-11-04 04:51:49

也许我不明白什么..。为什么要创建“等价于UserSettings"?

我的配置是Win10+VS2022。我正在创建一个WPF .Net6项目。我转到“Properties”菜单。在“项目属性”选项卡的菜单(左边的列)中有一个项选项。选中时,如果尚未创建设置,则将有一个小注释和一个指向“打开或创建应用程序设置”的链接。

不幸的是,我有俄语本土化,所以屏幕截图与俄罗斯名字。

加法

,但是一个额外的“类库”子项目在我的En/US本地化中似乎没有那个Properties选项。是你的吗?

这些是应用程序的设置。因此,它们在图书馆里没有多大意义。但如果需要,只需将类复制到库中,然后设置所需的链接即可。

为此,输入应用程序代码行Properties.Settings.Default.Save();。将光标移动到Settings并按下F12键。

您将被带到Settings类声明的源代码中。此代码由代码生成器生成。

移到后,将所有源代码复制到另一个项目中的类中。迁移之后,您可能需要在项目中添加引用,修复名称空间并添加using

至于类库项目中的参数,它可能取决于这个库的类型。我在WPF的类库中有这样的设置。

但在图书馆的标准-不。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74309719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档