Visual Studio 2015 .NET Standard および .NET Framework パッケージを作成する

Note: Visual Studio 2017 は、.NET Standard ライブラリの開発に推奨されます。 Visual Studio 2015 は機能しますが、.NET Core ツールはプレビュー状態に限定されました。 NuGet 4.x+ および Visual Studio 2017 の使用については、「 Visual Studio 2017 を使用してパッケージを作成して発行する」を参照してください。

.NET標準ライブラリは、すべての.NETランタイムで使用できるように設計された.NET API の正式な仕様であるため、.NET エコシステムの統一性が向上します。 .NET標準ライブラリでは、ワークロードに関係なく、実装するすべての.NET プラットフォーム用の BCL (基本クラス ライブラリ) API の統一されたセットが定義されています。 これにより、開発者はすべての.NETランタイムで使用できるコードを生成でき、共有コード内のプラットフォーム固有の条件付きコンパイル ディレクティブを排除しない場合は削減できます。

このガイドでは、.NET Standard Library 1.4 をターゲットとする NuGet パッケージ、または .NET Framework 4.6 をターゲットとするパッケージを作成する手順について説明します。 .NET Standard 1.4 ライブラリは、.NET Framework 4.6.1、Universal Windows Platform 10、.NET Core、Mono/Xamarin で動作します。 詳細については、.NET Standard マッピング テーブル (.NET ドキュメント) を参照してください。 必要に応じて、.NET標準ライブラリの他のバージョンを選択できます。

前提条件

  1. Visual Studio 2015 Update 3

  2. (.NET Standard のみ) .NET Core SDK

  3. NuGet CLI。 nuget.org/downloads から最新バージョンの nuget.exe をダウンロードし、選択した場所に保存します。 その場所がまだない場合は、その場所を PATH 環境変数に追加します。

    nuget.exe は CLI ツール自体であり、インストーラーではないため、ダウンロードしたファイルを実行するのではなく、ブラウザーから保存してください。

クラス ライブラリ プロジェクトを作成する

  1. Visual Studio、File > New > ProjectVisual C# > Windows ノードを展開し、Class Library (Portable) を選択し、名前を AppLogger に変更して、OK を選択します。

    新しいクラス ライブラリ プロジェクトを作成する

  2. 表示される ポータブル クラス ライブラリの追加 ダイアログで、.NET Framework 4.6ASP.NET Core 1.0 のオプションを選択します。 (.NET Framework を対象とする場合は、適切なオプションを選択できます)。

  3. Standard .NETターゲットの場合は、Solution Explorerで AppLogger (Portable) を右クリックします。 Properties を選択し、Library タブを選択し、Targeting セクションで Target .NET Platform Standard を選択します。 この操作により確認が求められます。その後、ドロップダウンから .NET Standard 1.4 (または別の使用可能なバージョン) を選択できます。

    .NET Standard 1.4 にターゲットを設定します

  4. [ ビルド ] タブをクリックし、[ 構成 ] を Releaseに変更し、 XML ドキュメント ファイルのチェック ボックスをオンにします。

  5. コードをコンポーネントに追加します。例えば:

    namespace AppLogger
    {
        public class Logger
        {
            public void Log(string text)
            {
                Console.WriteLine(text);
            }
        }
    }
    
  6. 構成を Release に設定し、プロジェクトをビルドし、DLL ファイルと XML ファイルが bin\Release フォルダー内に生成されていることを確認します。

.nuspec ファイルを作成して更新する

  1. コマンド プロンプトを開き、 AppLogger.csproj フォルダー ( .sln ファイルがある場所の 1 つ下のレベル) を含むフォルダーに移動し、NuGet spec コマンドを実行して初期 AppLogger.nuspec ファイルを作成します。

    nuget spec
    
  2. エディターで AppLogger.nuspec を開き、次に一致するように更新し、YOUR_NAMEを適切な値に置き換えます。 <id>値は、具体的には、nuget.org 全体で一意である必要があります (パッケージの作成で説明されている名前付け規則参照してください)。 また、作成者タグと説明タグも更新する必要があります。また、パッキング手順中にエラーが発生します。

    <?xml version="1.0"?>
    <package >
        <metadata>
        <id>AppLogger.YOUR_NAME</id>
        <version>1.0.0</version>
        <title>AppLogger</title>
        <authors>YOUR_NAME</authors>
        <owners>YOUR_NAME</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Awesome application logging utility</description>
        <releaseNotes>First release</releaseNotes>
        <copyright>Copyright 2018 (c) Contoso Corporation. All rights reserved.</copyright>
        <tags>logger logging logs</tags>
        </metadata>
    </package>
    
  3. .nuspec ファイル、つまりライブラリの DLL と IntelliSense XML ファイルに参照アセンブリを追加します。

    Standard .NET対象の場合、エントリは次のようになります。

    <!-- Insert below <metadata> element -->
    <files>
        <file src="bin\Release\AppLogger.dll" target="lib\netstandard1.4\AppLogger.dll" />
        <file src="bin\Release\AppLogger.xml" target="lib\netstandard1.4\AppLogger.xml" />
    </files>
    

    .NET Framework を対象とする場合、エントリは次のように表示されます。

    <!-- Insert below <metadata> element -->
    <files>
        <file src="bin\Release\AppLogger.dll" target="lib\net46\AppLogger.dll" />
        <file src="bin\Release\AppLogger.xml" target="lib\net46\AppLogger.xml" />
    </files>
    
  4. ソリューションを右クリックし、[ ソリューションのビルド ] を選択して、パッケージのすべてのファイルを生成します。

依存関係の宣言

他の NuGet パッケージに依存関係がある場合は、マニフェストの <dependencies> 要素内の依存関係を <group> 要素と共に一覧表示します。 たとえば、NewtonSoft.Json 8.0.3 以降への依存関係を宣言するには、次を追加します。

<!-- Insert within the <metadata> element -->
<dependencies>
    <group targetFramework="uap">
        <dependency id="Newtonsoft.Json" version="8.0.3" />
    </group>
</dependencies>

ここでの version 属性の構文は、バージョン 8.0.3 以降が許容されることを示しています。 異なるバージョン範囲を指定するには、「 パッケージのバージョン管理」を参照してください。

readme の追加

readme.txt ファイルを作成し、プロジェクト のルート フォルダーに配置し、.nuspec ファイルで参照します。

<?xml version="1.0"?>
<package >
    <metadata>...
    </metadata>
    <files>
    <file src="readme.txt" target="" />
    </files>
</package>

パッケージをプロジェクトにインストールすると、Visual Studioにreadme.txtが表示されます。 ファイルは、.NET Core プロジェクトにインストールされている場合、または依存関係としてインストールされているパッケージには表示されません。

コンポーネントをパッケージ化する

パッケージに含める必要があるすべてのファイルを参照する完了した .nuspec で、 pack コマンドを実行する準備ができました。

nuget pack AppLogger.nuspec

これにより、 AppLogger.YOUR_NAME.1.0.0.nupkgが生成されます。 NuGet パッケージ エクスプローラーすべてのノードを展開すると、次の内容が表示されます (.NET Standard の場合)。

AppLogger パッケージを示す NuGet パッケージ エクスプローラー

ヒント

.nupkgファイルは、別の拡張子を持つZIPファイルにすぎません。 .nupkg.zipに変更することで、パッケージの内容を調べることもできますが、パッケージを nuget.org にアップロードする前に拡張機能を復元することを忘れないでください。

他の開発者がパッケージを使用できるようにするには、「 パッケージを発行する」の手順に従います。

pack Mac OS X では Mono 4.4.2 が必要であり、Linux システムでは機能しないことに注意してください。 Mac では、.nuspec ファイルWindowsパス名を Unix スタイルのパスに変換する必要もあります。