覆盖 nuget 包中的设置

Override settings in nuget package

我有一个项目,我在其中创建了一个设置文件(右键单击属性并添加设置文件 - 见下图)。

然后我将这个项目转换成一个 nuget 包,并安装到我的网站项目中

通常在网站中,我可以在我的web.config中添加以下内容来覆盖项目的设置:

<configSections>
  <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <section name="Nuget.Navigation" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </sectionGroup>
</configSections>
<applicationSettings>
  <Nuget.Navigation>
    <setting name="SelectedSection" serializeAs="String">
      <value>Investors</value>
    </setting>
  </Nuget.Navigation>
</applicationSettings>

但是,对于 nuget,它只是使用发布 nuget 时编译的初始设置。有没有办法覆盖我的 Web 项目中的 nuget 设置?

在我看来,您似乎不想将设置编译到 Nuget 包中。如果父应用程序能够覆盖这些设置,则这些设置可能应该从 Nuget 中删除,并且应该只存在于父应用程序中。为了将设置放入 Nuget,将必要的设置作为参数发送到 Nuget 中的方法。

不确定为什么设置覆盖在与其他 nugets 一起工作时不起作用。

最后,我们将设置移到了 app.config 文件中,并编写了我们自己的单例以使用配置管理器读取设置:

SelectedSection = ConfigurationManager.AppSettings[nameof(SelectedSection)];

这样我们就可以在 web.config 中使用应用设置键覆盖:

<add key="SelectedSection" value="investors" />