2,653 バイト追加,
2024年4月17日 (水) == Nugetパッケージになるライブラリプロジェクトを作る ==
: 例 NugetBuildTask1
== プロジェクト名と同じtargetsファイルを作る ==
プロジェクト名というかNuGetのパッケージIDと同一のtargetsファイルを作る。
: 例: NugetBuildTask1.targets
<source lang="xml">
<Project>
<Target Name="HelloWorld" AfterTargets="build">
<Message Text="Hello, World!" Importance="high" />
</Target>
</Project>
</source>
== プロジェクトファイルをテキストエディタで編集する ==
プロジェクトファイル(csprojファイル)をテキストエディタで編集する。
NuGetのパッケージ情報やNuGetに含めるファイルを記述する。
: 例 NugetBuildTask1.csproj
<source lang="xml">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!-- nugetのパッケージ情報 -->
<PackageId>NugetBuildTask1</PackageId>
<Version>1.0.0</Version>
<Authors>Your Name</Authors>
<Description>Your Description</Description>
</PropertyGroup>
<!-- nugetに含めるファイルを列挙 -->
<ItemGroup>
<!-- targetsファイルはbuildディレクトリに格納すること -->
<!-- targetsファイルの名前はPackageIdと同一にすること -->
<None Include="NugetBuildTask1.targets" Pack="true" PackagePath="build" />
</ItemGroup>
</Project>
</source>
なお、ItemGroupタグの中身はContentタグを使った記法も存在するらしいが、targetsファイルについてはNoneタグが推奨らしい。なんでかは知らんがgithub上のこの手法を使っているプロジェクトを見て回った限りでは両方の記法が乱立しているので知識として覚えておいた方がいい。
<source lang="xml">
<ItemGroup>
<Content Include="NugetBuildTask1.targets">
<Pack>true</Pack>
<PackagePath>build</PackagePath>
</Content>
</ItemGroup>
</source>
== NuGetパッケージを作る ==
Visual Studioであればメニューの「ビルド」の「パック」を実行する。
コマンドラインの場合は以下のようになる。
<source lang="sh">
$ dotnet pack
</source>
== NuGetサーバーにぶち込む ==
デバッグ用に壮大なNuGetサーバーを立てるのは面倒なのでdockerあたりでシンプルなのを探してくるとよい。
* https://hub.docker.com/search?q=docker-nuget-server
== デバッグ ==
コンソールプロジェクトなどを作って上記のNuGetを追加してみる。