生成dotnet核心的nuget许可证摘要

时间:2018-11-14 10:29:03

标签: .net-core nuget

对于我们的应用程序(JavaScript Web应用程序)的前端,我们可以生成依赖项使用的所有许可证的列表。有没有办法对我们的服务器端nuget软件包执行此操作?

之所以适用于前端,是因为我们有一个node_modules目录,其中包含完整的版本解析依赖关系集。使用旧样式的nuget(使用packages.config和packages文件夹),我们可以使用类似的解决方案,但是dotnet核心项目使用全局包存储。

我们当前的旅行方向是使用nuget API中的元数据并以这种方式遍历树,但这会抛出其他要解决的问题的完整列表(解决部分版本号,处理丢失/不正确的许可证数据)

1 个答案:

答案 0 :(得分:1)

.NET Core与“旧”样式的csproj实际上无关。 SDK项目可以构建.NET Framework项目,因此不限于.NET Core。它也不是SDK项目还是“旧”项目,因为“旧”项目可以使用PackageReference。

因此,如果您的解决方案包含多个packages.config文件,则这些软件包将还原到单个packages文件夹中,但是packages.config不支持传递依赖项,并且如果所请求的确切版本不正确,它将失败可用。因此,很容易遍历每个项目,阅读packages.config并在解决方案的packages文件夹中找到确切的软件包。该程序包也应该存在于全局程序包文件夹中,但是在某些情况下,情况可能并非如此。

PackageReference将引入传递依赖项,并且在存在冲突或请求的版本不可用时选择不同的版本。但是,还原成功后,它将写入文件obj\project.assets.json,您可以读取该文件。它列出了完整的还原图以及所使用的每个软件包的确切版本。使用此信息,您可以在全局软件包文件夹中找到每个软件包的确切版本。

我的理解是,在npm中,通常(如果不需要)将许可证文件放入保存在用户计算机上的软件包中。不幸的是,nuget包并非如此。但是至少使用资产文件时,您不需要弄清楚依赖关系树,也不用担心版本选择逻辑与nuget的逻辑不同。