如何通过 .csproj 文件要求接受 NuGet 包的许可证

Posted

技术标签:

【中文标题】如何通过 .csproj 文件要求接受 NuGet 包的许可证【英文标题】:How to require license acceptance for NuGet package through .csproj file 【发布时间】:2022-01-04 02:33:17 【问题描述】:

我正在远离 .NET Core/5/6 NuGet 包的 .nuspec 文件,但我不知道如何在 .csproj 文件中设置等效的 <requireLicenseAcceptance> 元素。

我在包中包含一个名为 license.txt 的许可证文件,例如:

<ItemGroup>
    <None Include="license.txt">
        <Pack>True</Pack>
        <PackagePath></PackagePath>
    </None>
</ItemGroup>

然后我设置以下内容:

<PropertyGroup>
    <PackageLicenseExpression></PackageLicenseExpression>
    <PackageLicenseFile>license.txt</PackageLicenseFile>
</PropertyGroup>

这会在生成的.nuspec 文件中产生以下内容:

<license type="file">license.txt</license>
<licenseUrl>https://aka.ms/deprecateLicenseUrl</licenseUrl>

我希望&lt;requireLicenseAcceptance&gt;true&lt;/requireLicenseAcceptance&gt;也包含在生成的.nuspec文件中,以便在安装包时弹出license.txt的内容。

【问题讨论】:

【参考方案1】:

哦。我没有意识到它可以通过项目属性进行设置,这样做揭示了我应该猜到的:元素名称几乎相同,只是前缀为“Package”。

.nuspec:

&lt;RequireLicenseAcceptance&gt;True&lt;/RequireLicenseAcceptance&gt;

.csproj:

&lt;PackageRequireLicenseAcceptance&gt;True&lt;/PackageRequireLicenseAcceptance&gt;

【讨论】:

以上是关于如何通过 .csproj 文件要求接受 NuGet 包的许可证的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio解决方案未保存,请先保存你的解决方案,然后再管理Nuget包

如何通过 NuGet 包共享源代码以用于 .NET Core 项目

在 nuget 包中包含引用的项目 DLL [.Net Core RC3 *.csproj 文件]

nuget打包

将NuGet构建工具包与ASP.NET Core一起使用

Dotnet 发布到同一文件夹