.NET Core/Standard .csproj文件,嵌入许可证文件而不使用该软件包添加到项目中?

ang*_*son 5 .net-core

过去几天我在编译.NET标准/核心项目时遇到了警告:

NuGet.Build.Tasks.Pack.targets(202,5):[NU5125]'licenseUrl'元素将被弃用.请考虑使用'license'元素.

为了解决这个问题,我改用了<PackageLicenseFile>...</PackageLicenseFile>而不是<PackageLicenseUrl>...</PackageLicenseUrl>.

但是,为了实现这一点,我必须将许可证文件添加到我的软件包中(当然),但它会被添加到contentcontentFiles目录中,这意味着使用此软件包的项目会将许可文件添加到其中.

有没有办法嵌入许可证文件,以便PackageLicenseFile正常工作,而无需将许可证文件添加到使用该软件包的项目?

这是我添加到.csproj文件中以嵌入许可证文件的部分:

<ItemGroup>
  <Content Include="..\LICENSE" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

输出包结构:

_rels
package
lib
contentFiles
 +- any
  +- netstandard2.0
   +- LICENSE
content
 +- LICENSE
Run Code Online (Sandbox Code Playgroud)

例如,我可以将它添加到包内的单独文件夹中content吗?

Mar*_*ich 6

使用包打包许可证文件的推荐方法是

<PropertyGroup>
  <PackageLicenseFile>LICENSE.txt</PackageLicenseFile>
</PropertyGroup>

<ItemGroup>
  <None Include="LICENSE.txt" Pack="true" PackagePath="$(PackageLicenseFile)"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

但现在PackageLicenseExpression也可以用作您在评论中提到的许可证文件/URL 的替代方案。

有关更多详细信息,请参阅nupkg 中NuGet 的 wiki 条目Packaging License