【发布时间】: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