.NET Frameworkでnugetのパッケージを作成する

.NET Frameworkでもnuget対応可能
その為のコマンドラインツールが提供されている
ちなみに、作成したnugetパッケージは別にサーバーシステムも不要で、任意のフォルダとかファイルサーバーに置いておくだけで使える。

ここに一通り手順は書かれているのでこのままやればOK

nugetツール入手
そのままではセキュリティでブロックされるので、exeのプロパティから
セキュリティを許可する。

nuget化したいプロジェクトの *.csproj ファイルがあるフォルダで、
nuget spec
を実行すると、
<プロジェクト名>.nuspec
というファイルが作成される。
中身はこんな感じで
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<!-- <icon>icon.png</icon> -->
<projectUrl>http://project_url_here_or_delete_this_line/</projectUrl>
<description>$description$</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>$copyright$</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
</package>
必要に応じて、projectUrl、releaseNotes, tagsとかを埋めていく。"$~$"なところは自動で埋められる。

これは初回だけでOK

プロジェクトをビルド後、プロジェクトフォルダ直下で以下を実行すると、
nuget pack
<プロジェクト名>.<バージョン>.nupkg
という規則でnugetパッケージが作成される。
これで完成。

nuget packコマンド打った時に、
Authors is required.
Description is required.
とか怒られた場合は、プロジェクトのアセンブリ情報を埋めておく。
Authrosは会社(AssemblyInfo.csのAssemblyCompany)
Descriptionは説明(AssemblyInfo.csのAssemblyDescription)

ビルド後イベントで自動実行するなら、
プロジェクトファイルが在る場所(.nuspecファイルが在る場所)を付けて、
nuget pack $(ProjectDir)
とすることで、dllと同じ場所にnupkgファイルが生成される。

パッケージファイル(.nupkg)の公開
オンラインに上げる場合は最初のリンク先読んでちゃんと作って上げること。ここでは言及しない。
ローカルではどこかにnugetパッケージ管理フォルダを作って放り込んでおく、
基準フォルダを作ってその下に任意フォルダを掘って格納しても認識出来る模様。

ビルド後イベントからCOPYコマンドで自動コピーしても良いかも。

では、任意のアプリに、作成したnugetコンポーネントをインストールする方法となる。
先ずは初回設定。
メニューのツールから、NuGetパッケージマネジャーの、
パッケージマネージャー設定を開く、
オプション画面でパッケージソースを追加する。
名前は任意で、ソースには格納したパスを設定する。
そのまま C:\~ とか \\fileserver\machineA\~ とかファイルパスでOK。

さて通常のアプリ開発作業でnugetコンポーネントをインストールする方法。
いつものnuget管理画面を開く、
右のパッケージソースから自分が追加したところを選択する。
さすれば、
自分が作成したパッケージをインストールすることが出来る。

.NET Frameworkベースのパッケージを作る場合、
そのプロジェクトからさらに外部のnugetパッケージを参照している場合に、
PackageReference だと参照関係の情報がnugetパッケージに載らない。
package.config にしておくこと。
参考