03.NuGetプロジェクトの作成

CoreプロジェクトをラップしてNuGetパッケージを作成するプロジェクトを作成します。

windows:vs:newproject.png

Visual Studio

ソリューションエクスプローラーの『ソリューション』で右クリック➡『追加(D)』➡『新しいプロジェクト(N)…』でプロジェクトをソリューションに追加します。

windows:vs:cs:library:nuget0101.png

新しいプロジェクトを追加

C# Windows ライブラリから.NETまたは.NET Standardを対象とするクラスライブラリを選択します。

windows:vs:cs:library:nuget0102.png

新しいプロジェクトを構成します

プロジェクト名を『NuGet』にしています。

次へ(N)』で次に進みます。

windows:vs:cs:library:nuget0103.png

追加情報

作成(C)』でNuGetプロジェクトが作成されます。

windows:vs:cs:library:nuget0104.png

Class1.csの削除

自動的に作成された『Class1.cs』を削除します。

NuGetプロジェクトの定義を作成

下記のいずれかの方法でNuGetプロジェクトのプロジェクトファイルを開いて編集します。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;net10.0</TargetFrameworks>
  </PropertyGroup>
  <PropertyGroup>
    <PackageId>$(RootPackageId)</PackageId>
    <AssemblyName>$(NuGetAssemblyName)</AssemblyName>
    <RootNamespace>$(PackageId)</RootNamespace>
    <SignAssembly>true</SignAssembly>
    <AssemblyOriginatorKeyFile>$(SnKeyFile)</AssemblyOriginatorKeyFile>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\Core\Core.csproj" PrivateAssets="all" />
  </ItemGroup>
  <PropertyGroup>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <TargetsForTfmSpecificBuildOutput>
      $(TargetsForTfmSpecificBuildOutput);IncludeProjectReferences
    </TargetsForTfmSpecificBuildOutput>
    <PackageIcon>NuGet.png</PackageIcon>
    <PackageReadmeFile>README.md</PackageReadmeFile>
  </PropertyGroup>
  <Target Name="IncludeProjectReferences" DependsOnTargets="ResolveReferences">
    <ItemGroup>
      <BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" />
    </ItemGroup>
  </Target>
  <ItemGroup>
    <None Include="../README.md" Pack="true" PackagePath="\" />
    <None Include="NuGet.png" Pack="true" PackagePath="\" />
  </ItemGroup>
</Project>

3行目
Com用のソリューションで使用するときはnetstandard2.0フレームワークのNuGetパッケージが必要になります。
6行目~10行目
アセンブリ情報を定義しています。
12行目~14行目
XMLドキュメントファイルを生成します。
16行目
Coreプロジェクトを参照しますが、プロジェクト内のファイルは公開しません。
19行目
ビルド時にパッケージを生成します。
20行目~24行目
パッケージに含めるファイルを定義しています。
20行目~22行目
TFM(Target Framework Moniker)ごとに参照プロジェクトのファイルもパッケージに含めます。
26行目~30行目
参照プロジェクトの出力をNuGetパッケージのlibフォルダーにコピーします。