Posted at

【NuGet】C#、.NETでライブラリを公開する【2019年版】

「C#、.NETでライブラリを作って、それを公開したい」

そんなときは、NuGetを使いましょう。

NuGetはMicrosoftがサポートする.NETのコード共有メカニズムです。「nuget.org」には、100000個以上のライブラリがあるらしいです!NuGetは、Windowsだけでなく、MacやLinuxでも使えます。

やり方は公式ドキュメントにまとまっていますので、本投稿では公式ドキュメントのピックアップ、チップス、サンプルを紹介します。


公式ドキュメントピックアップ

NuGetの概要は次のドキュメントを!


dotnet CLIを使ったNuGetのライブラリの作成・公開方法をサクッと確認したい方はこちら!


NuGetのライブラリの作成・公開方法のワークフローはこちらから!


NuGetでライブラリを作成・公開するにはいくつかの方法があります。方法によって、読むべきドキュメントが異なるので注意してください。

また、NuGetのバージョンアップによっていろいろ設定方法が変更されている点に注意してください。

NuGet4.0以降では、ライブラリのためのメタデータをプロジェクトファイル(.csproj)に直接保存できます。(それより前は別のファイルを作る必要がありました)

どのような項目で設定をすればいいかは次のドキュメントを参照してください。


チップス

クイック スタート: パッケージの作成と公開 (dotnet CLI)」では最小限の設定として、次の4項目を設定するようにという指示があります。

<PackageId>AppLogger</PackageId>

<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>

ところが、この状態でnuget.orgに公開すると次のようなライセンス関連の警告が表示されます。

スクリーンショット 2019-02-16 13.52.53.png

これはPackageLicenseExpressionを設定することで消えます。


サンプル

LinqAliasというライブラリを作成しました。こちらをサンプルとして参照してください。

以下に、LinqAliasの.csprojを示します。

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

<PropertyGroup>
<Title>LinqAlias</Title>
<Description>Aliases of System.Linq extension methods.</Description>
<AssemblyName>LinqAlias</AssemblyName>
<Version>0.0.1.0</Version>
<Authors>RyotaMurohoshi</Authors>
<TargetFramework>netstandard1.0</TargetFramework>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/RyotaMurohoshi/LinqAlias</PackageProjectUrl>
<RepositoryUrl>https://github.com/RyotaMurohoshi/LinqAlias</RepositoryUrl>
<PackageTags>linq;extensions;alias</PackageTags>
<Copyright>Copyright (c) 2019 RyotaMurohoshi</Copyright>
<RepositoryType>git</RepositoryType>
</PropertyGroup>

</Project>