上传NuGet软件包,如何设置许可证?

时间:2019-08-27 20:55:54

标签: nuget licensing

我正在尝试在网站上上传新的NuGet包。
https://www.nuget.org/packages/manage/upload

第一次尝试时,我收到一条错误消息,提示我需要指定许可证。
我不要...好吧。

因此,我第一次尝试使用指定许可证失败。我阅读了链接的文档,并尝试了多次。
我尝试使用<license>属性,并且在包中还包含了license.txt文件。

这些是我尝试使用.nuspec文件和收到的错误:

<license type="MIT"/>  
    => Error: Unsupported license type 'MIT'.
    (I know it is wrong but I found this "example" here: https://github.com/NuGet/Home/wiki/Packaging-License-within-the-nupkg)

<license type="expression">MIT</license>   
    => Error: To provide a better experience for older clients when a license expression is specified, must be set to 'https://licenses.nuget.org/MIT'.  

<license type="expression">BSD-2-Clause OR MIT</license>
    => Error: To provide a better experience for older clients when a license expression is specified, must be set to 'https://licenses.nuget.org/BSD-2-Clause%20OR%20MIT'.

<license type="expression">https://licenses.nuget.org/MIT</license>
    => Error: Invalid license metadata: The license expression 'https://licenses.nuget.org/MIT' contains invalid characters.  

我也尝试了使用license.txt,但没有成功。

我正在做的是:修改生成的mylibrary.nupkg中包含的mylibrary.nuspec文件,并添加<license>字段。
为什么?因为此VS Studio项目使用nuget.exe mylibrary.csproj文件生成了软件包,所以它不包含许可证。
我将nuget.exe更新到最新的5.1版本,但是我不想修改VS解决方案或项目。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

编辑.csproj文件。添加以下内容:

使用许可证文件:

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

    <ItemGroup>
        <None Include="licenses\LICENSE.txt" Pack="true" 

PackagePath="LICENSE.txt"/>
    </ItemGroup>

使用PackageLicenseExpression:

<PropertyGroup>
  <PackageLicenseExpression>MIT</PackageLicenseExpression>
</PropertyGroup>

有关更多详细信息,请see