【问题标题】:How to pack linked files from referenced NuGet packages如何从引用的 NuGet 包中打包链接文件
【发布时间】:2023-02-26 00:09:11
【问题描述】:

我有一个将由所有库使用的构建属性定义包。
一些库可能会提供一个 json 文件,当它们被其他一些库引用时应该保留该文件,然后最终所有配置文件都应该传递给顶级库的消费者。

有一个约定,库将它们的配置文件放在 appsettings/cfgs 目录中。

目前我的构建定义包的xxx.targets 文件中有以下内容

...
<ItemGroup>
  <Content Include="$(ProjectDir)\appsettings\cfgs\*.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    <Pack>true</Pack>
    <PackagePath>contentFiles\any\any\appsettings\cfgs</PackagePath>
    <PackageCopyToOutput>true</PackageCopyToOutput>
  </Content>
</ItemGroup>
...

使用上面的目标文件时有效:

  • 当一个json文件被添加到appsettings/cfgs时,它被默认复制到构建输出
  • 当一个 json 文件被添加到库的 appsettings/cfgs 时,它通过 dotnet pack 打包到库的 NuGet 包中
  • 当引用库时,其配置文件在解决方案资源管理器中显示为 appsettings/cfgs 链接目录,链接文件被复制到消费者的输出。

什么不起作用: 我有 library1,它提供了一个配置文件 1.json。我有 library2,它使用 library1 的 NuGet 包:

  • 1.json 显示在解决方案资源管理器中
  • 1.json 在构建时被复制到 library2 的输出
  • 尽管我尽了最大努力,1.json 并未包含在 library2 的 NuGet 包中,而位于同一输出目录中的 library2 的 json 文件已成功打包。

我如何确保从引用的 NuGet 包链接的文件被添加到由 dotnet pack 生成的消费库的 NuGet 包?

由图书馆提供,被打包到一个 NuGet 包中

【问题讨论】:

    标签: json .net nuget nuget-package pack


    【解决方案1】:

    由于我无法为我的案例找到完整的答案,我将提供一个目前为止对我有用的解决方案。

    我的xxx.targets现在看起来像这样

    <ItemGroup>
      <Content Include="$(ProjectDir)ppsettings***.json">
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        <!-- Target below will ensure that the configuration files are correctly packed -->
        <Pack>false</Pack>
      </Content>
    </ItemGroup>
    
    <Target Name="PackConfigurationFiles" AfterTargets="Build">
      <ItemGroup Condition="'$(IsPackable)' == 'true'">
        <Content Include="$(TargetDir)appsettings/cfgs/*.json">
          <Pack>true</Pack>
          <PackagePath>contentFilesnynyppsettingscfgs</PackagePath>
          <PackageCopyToOutput>true</PackageCopyToOutput>
        </Content>
      </ItemGroup>
    </Target>
    

    因此,我们不是依赖 dotnet pack 来获取链接文件(目前还没有),而是在构建输出中专门使用 appsettings/cfgs 目录,我们所有链接的配置文件实际上都与消费者的一起存在自己的 json 文件,如果有的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多