rksoftware

Visual Studio とか C# とかが好きです

NuGet パッケージにライセンスファイルを埋め込む

意外と難しかったのでメモ。
Visual Studio の UI で設定する方法が見つけられなかったので。

■ 前提

いつもこんな感じにリポジトリのトップにライセンスファイルを置いて、src ディレクトリの中にソリューションのディレクトリ、その中にプロジェクトのディレクトリという形にしています。

/
┣src/
┃┗ソリューション ディレクトリ/
┃ ┣プロジェクト ディレクトリ/
┃ ┗プロジェクト ディレクトリ/
┣ライセンス ファイル/
┗README.md/

例)

■ ライセンスファイルの指定

.csproj を編集しました。
ライセンスファイルの指定は Visual Studio の UI でもできます。しかし、後述のライセンスファイルのプロジェクトへの追加ができませんでした。
ならもういっそライセンスファイルの指定も .csproj の編集で良いと思います。

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        ...
        <PackageLicenseFile>LICENSE</PackageLicenseFile>
        ...
    </PropertyGroup>
     ...
</Project>

■ プロジェクトにリポジトリトップのライセンスファイルを追加

.csproj を編集しました。
Pack を GUI で設定する方法が見つけられなかったので。

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        ...
    </PropertyGroup>
     ...
    <ItemGroup>
        <None Include="..\..\LICENSE" Pack="true" PackagePath="" />
    </ItemGroup>
     ...
</Project>

■ .nupkg の中を確認する

パックで生成された .nupkg の中身は拡張子を .zip に変えて展開すれは確認できます。

簡単ですね。