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

时间:2018-11-26 19:16:57

标签: .net-core

过去几天,我在编译.NET Standard / Core项目时收到警告:

  

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

要解决此问题,我改用<PackageLicenseFile>...</PackageLicenseFile>而不是<PackageLicenseUrl>...</PackageLicenseUrl>

但是,为了使其正常工作,我必须(自然地)将许可证文件添加到我的软件包中,但是它被添加到contentcontentFiles目录中,这意味着一个项目使用此软件包将许可证文件添加到其中。

是否有一种方法可以嵌入许可证文件,以使PackageLicenseFile正常工作,而无需使用软件包将许可证文件添加到项目中?

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

<ItemGroup>
  <Content Include="..\LICENSE" />
</ItemGroup>

输出包的结构:

_rels
package
lib
contentFiles
 +- any
  +- netstandard2.0
   +- LICENSE
content
 +- LICENSE

例如,我可以将其添加到软件包中除content之外的单独文件夹中吗?

1 个答案:

答案 0 :(得分:1)

与软件包一起打包许可证文件的推荐方法是

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

<ItemGroup>
  <None Include="LICENSE.txt" Pack="true" PackagePath="$(PackageLicenseFile)"/>
</ItemGroup>

但是现在还有PackageLicenseExpression可以用作您在评论中提到的许可文件/ URL的替代。

有关更多详细信息,请参见NuGet的Wiki条目Packaging License within the nupkg