【问题标题】:Add configuration to appsettings.json with nuget package使用 nuget 包将配置添加到 appsettings.json
【发布时间】:2016-12-21 15:09:20
【问题描述】:

我创建了一个 nuget 包,我需要在其中添加一个部分到 appsettings.json,或者添加我自己的配置文件,该文件复制到应用程序中,但我无法弄清楚如何。

我想要这个:

{
 "mysection" : 
  { 
        "value1": "value, 
        "value2": "value"
  }
}

要添加到配置文件中,或者下载nuget包时要复制的包含此文件的文件。我们正在使用 Visual Studio Team Services 来构建和托管 nuget 包。

【问题讨论】:

  • 在 Github 上有一个关于这个功能的请求,但是团队说他们不打算实现它:github.com/dotnet/extensions/issues/796
  • 我们在 4 年零 5 个月后,我找不到解决方案。你有没有找到解决办法?
  • 不幸的是,除了这里的答案之外,我没有任何其他建议,但我在大约 3.5 年的时间里没有从事过需要这个项目的项目......

标签: .net configuration asp.net-core azure-devops nuget-package


【解决方案1】:
  1. 转到要打包到 Nuget 中的文件的属性 包(F4 或右键单击-> 属性)并更改“构建操作” “EmbeddedResource”的值
  2. 右键单击-> 编辑项目文件,然后只需添加以下几行:
    <ItemGroup>
        <EmbeddedResource Include="settings.json" Pack="true">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </EmbeddedResource>
    </ItemGroup>

【讨论】:

  • 虽然这部分起到了作用,但复制的文件不会存储在项目中,而是存储在包本身中,使用包的项目会获得指向该文件的链接。如果您有多个项目使用相同版本的软件包,那么它们都必须共享同一个文件,这在我看来是不可取的。经过这么长时间,你会期望微软有一个解决方案,但我所有的研究都无济于事。
【解决方案2】:

您想编辑 nuspec 文件并使用 files 元素并在那里添加文件。

<files>
    <file src="myConfig.json" target="Content" />
</files>

如果您使用 NuGet 3.3+ 或 PackageReference 和 NuGet 4+,您应该改用 contentFiles elemenet。

<contentFiles>
    <files include="any/any/myConfig.json" buildAction="None" copyToOutput="true" flatten="true" />
</contentFiles>

文档建议指定这两个元素以实现最大兼容性。你可以阅读更多here

【讨论】:

  • 我认为这将更多是如何引入一个附加文件,但作者正在寻找的是如何让该设置部分合并到 applicationsettings.json 文件中......类似于如何您可以通过 web.config 中的转换添加部分。
  • @DylanHayes:我不确定,但我相信你在说什么已经解决了。在 ASP.NET Core 中有足够多的配置选项 => Configuration in ASP.NET Core.
  • @dropoutcoder 我认为 Dylan 的意思是能够在安装包时操作 appsettings.json 文件。例如,将特定于包的部分添加到现有的 appsettings.json 文件中,如果它不存在,只需创建一个。他们曾经在 .Net Framework 中有此功能,您可以在其中以这种方式操作配置文件。但显然,微软不打算为 .Net Core 或 5 实现这个未来。
  • @EgeAydın 你不需要操作 appsettings.json。在 ASP.NET Core 中,您可以加载任何 json 文件,因此您可以从包中获取一个。
猜你喜欢
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-05
  • 2019-11-22
  • 2019-10-24
  • 2018-04-27
  • 2013-03-13
  • 1970-01-01
相关资源
最近更新 更多