NetCore 应用程序配置可以使用 Properties.Settings 覆盖 class 库中的值吗?
Can a NetCore application config overwrite values from class library using Properties.Settings?
在 NetFramework 中,您可以拥有一个带有 Settings.Setting 文件的 class 库,它最终会像这样提供一个 app.config 文件:
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Namespace.Lib.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
</configSections>
<applicationSettings>
<Namespace.Lib.Properties.Settings>
<setting name="MyVariable" serializeAs="String">
<value>Default Value</value>
</setting>
</NameSpace.Lib.Properties.Settings>
</applicationSettings>
在 class 库代码中,您可以使用 Properties.Settings.Default.MyVariable
读取值
之后,在您的主应用程序中,您还可以有一个 app.config(或 web.config),其部分与上面完全相同,但变量值不同,并且它将覆盖默认值,以便库将使用您的应用程序所需的内容。
--
现在在 NetCore 中,我知道新方法正在使用 appsettings.json
文件,主机 Startup 会收到一个 IConfiguration class,它可以在其中读取设置、提要模型,甚至注入服务。但要使其工作,您的 class 库需要以接受新配置格式或模型的方式进行编码。
我还知道 System.Configuration.ConfigurationManager
NuGet 包的引入是为了继续支持旧的配置文件格式。并在 class 库中使用它允许它像以前一样使用其 app.config 值而不会出现任何错误。
--
我有一个 class 库在其代码中使用 Properties.Settings.Default
,我不想重新编码以接受 IConfiguration(以保持与仍在使用它的其他 NetFramework 项目的兼容性)。我将 class 库移植到 netstandard2.0
并添加了配置 NuGet 包并构建它。
我的问题是,在我的 NetCore 应用程序中,即使我添加了 NuGet 包,并手动添加 app.config(或 web.config)并像以前一样覆盖这些部分,它也不会似乎传播到 class 库或根本被使用。当 class 库访问 Properties.Settings.Default.MyVariable
时,它仍然读取自己的默认值,而不是我试图从我的应用程序覆盖的值。这是为什么?
还有可能吗?
问题只是文件名。
使用“Web.config”允许 IIS 读取服务器的 部分。
但要在应用程序中使用,需要命名为“ApplicationName.dll.config”。
以前 NetFramework 的 ASP.NET 会自动将 web.config 复制到应用程序名称,现在好像不会了。
在 NetFramework 中,您可以拥有一个带有 Settings.Setting 文件的 class 库,它最终会像这样提供一个 app.config 文件:
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Namespace.Lib.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
</configSections>
<applicationSettings>
<Namespace.Lib.Properties.Settings>
<setting name="MyVariable" serializeAs="String">
<value>Default Value</value>
</setting>
</NameSpace.Lib.Properties.Settings>
</applicationSettings>
在 class 库代码中,您可以使用 Properties.Settings.Default.MyVariable
之后,在您的主应用程序中,您还可以有一个 app.config(或 web.config),其部分与上面完全相同,但变量值不同,并且它将覆盖默认值,以便库将使用您的应用程序所需的内容。
--
现在在 NetCore 中,我知道新方法正在使用 appsettings.json
文件,主机 Startup 会收到一个 IConfiguration class,它可以在其中读取设置、提要模型,甚至注入服务。但要使其工作,您的 class 库需要以接受新配置格式或模型的方式进行编码。
我还知道 System.Configuration.ConfigurationManager
NuGet 包的引入是为了继续支持旧的配置文件格式。并在 class 库中使用它允许它像以前一样使用其 app.config 值而不会出现任何错误。
--
我有一个 class 库在其代码中使用 Properties.Settings.Default
,我不想重新编码以接受 IConfiguration(以保持与仍在使用它的其他 NetFramework 项目的兼容性)。我将 class 库移植到 netstandard2.0
并添加了配置 NuGet 包并构建它。
我的问题是,在我的 NetCore 应用程序中,即使我添加了 NuGet 包,并手动添加 app.config(或 web.config)并像以前一样覆盖这些部分,它也不会似乎传播到 class 库或根本被使用。当 class 库访问 Properties.Settings.Default.MyVariable
时,它仍然读取自己的默认值,而不是我试图从我的应用程序覆盖的值。这是为什么?
还有可能吗?
问题只是文件名。
使用“Web.config”允许 IIS 读取服务器的
以前 NetFramework 的 ASP.NET 会自动将 web.config 复制到应用程序名称,现在好像不会了。