我正在将应用程序移植到依赖于 .settings
文件的.NET核心 . 不幸的是,我找不到从.NET核心读取它的方法 . 通常,将以下行添加到 .csproj
将生成 TestSettings
类,让我可以读取设置 .
<ItemGroup>
<None Include="TestSettings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
</None>
</ItemGroup>
不幸的是,这似乎不再做任何事情 . 我甚至无法验证 SettingsSingleFileGenerator
是否完全运行 . 这GitHub issue表明这是新的 .csproj
格式的错误,但没有人提供替代方案 .
在.NET核心中读取 .settings
文件的正确方法是什么?
3 回答
对于.NET Core 2.x,使用
Microsoft.Extensions.Configuration
命名空间,NuGet上有大量扩展,您可以从环境变量到Azure Key Vault等来源读取(但更实际的是,JSON文件,XML等) ) .以下是一个控制台程序的示例,该程序以与Kestrel为Azure站点启动时相同的方式检索设置:
然后在您需要设置的代码中,您只需引用
Configuration
或注册IConfiguration
以进行依赖注入或其他任何操作 .正如我在问题中所提出的那样,这绝不是“正确的”,但我将这用作止损,直到出现更合理的东西 . 我无法保证它能为其他人工作 .
将您的
.settings
文件包含为嵌入式资源,然后像这样使用它:码:
移植现有项目时,我通常会将生成的Settings.Designer.cs从旧项目复制到新项目 . 但我知道,这对于更改设置文件或添加新的设置键是不好的 . 我还注意到安装新版本后删除了用户的设置,但.net-Framework-Settings的情况并非如此 .