次の方法で共有


Visual Studio 2015 での NET Standard および NET Framework パッケージの作成

注: .NET Standard ライブラリを開発するには、Visual Studio 2017 をお勧めします。 Visual Studio 2015 でも動作できますが、.NET Core ツールはプレビュー状態にしかなりません。 NuGet 4.x 以降および Visual Studio 2017 を使用している場合は、Visual Studio 2017 でのパッケージの作成と公開に関するページを参照してください。

.NET Standard ライブラリは、すべての .NET ランタイムで使用できるようにすることを目的とした .NET API の正式な仕様です。したがって、.NET エコシステムでより高い統一性が確立されます。 .NET Standard Library は、ワークロードに関係なく、すべての .NET プラットフォーム用に統一された BCL (基本クラス ライブラリ) API のセットを定義して実装します。 これにより、開発者はすべての .NET ランタイム間で使用可能なコードを生成できます。また、共有コードでプラットフォーム固有の条件付きコンパイル ディレクティブを除去するまでとはいかないまでも減らすことはできます。

このガイドでは、 .NET Standard Library 1.4 をターゲットとするか、または .NET Framework 4.6 をターゲットとする NuGet パッケージの作成について説明します。 .NET Standard 1.4 ライブラリは、.NET Framework 4.6.1、ユニバーサル Windows プラットフォーム 10、.NET Core、および Mono/Xamarin に適用できます。 詳細については、「.NET Standard マッピング テーブル」 (.NET ドキュメント) を参照してください。 必要な場合は、他のバージョンの .NET Standard ライブラリを選択できます。

前提条件

  1. Visual Studio 2015 更新プログラム 3

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

  3. NuGet CLI。 nuget.org/downloads から最新バージョンの nuget.exe をダウンロードして、任意の場所に保存します。 次に、その場所を PATH 環境変数に追加します (まだ存在していない場合)。

    Note

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

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

  1. Visual Studioの [新しい>ファイル>] Projectで、Visual C# > Windows ノードを展開し、[クラス ライブラリ (ポータブル)] を選択し、名前を AppLogger に変更して、[OK] を選択します

    Create new class library project

  2. 表示された [ポータブル クラス ライブラリの追加] ダイアログ ボックスで、.NET Framework 4.6ASP.NET Core 1.0 のオプションを選択します。 (.NET Framework をターゲットにしている場合は、どちらか適切なオプションを選択できます。)

  3. .NET Standard を対象とする場合は、ソリューション エクスプローラー内をAppLogger (Portable)右クリックし、[プロパティ] を選択し、[ライブラリ] タブを選択し、[ターゲット] セクションで [ターゲット .NET Platform Standard] を選択します。 この動作によって確認を促すメッセージが表示され、以降はドロップ ダウンから .NET Standard 1.4 (または、使用可能な別のバージョン) を選択できるようになります。

    Setting the target to .NET Standard 1.4

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

  5. たとえば、次のようにコンポーネントにコードを追加します。

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

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

  1. コマンド プロンプトを開き、(.sln ファイルの 1 レベル下の) AppLogger.csproj フォルダーを含むフォルダーに移動して 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 ファイルに追加します。

    .NET Standard をターゲットにしている場合、エントリは以下のように表示されます。

    <!-- 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 に対する表示) が表示されます。

NuGet Package Explorer showing the AppLogger package

ヒント

.nupkg ファイルは、異なる拡張子が付いた単なる .zip ファイルです。 したがって、.nupkg.zip に変えてパッケージの内容を調べることもできますが、パッケージを nuget.org にアップロードする前に必ず、拡張子を復元してください。

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

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