「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>NuGet]]

* 目次 [#mdf74180]
#contents

*概要 [#i9733684]
NuGetパッケージを作成してみたくなったので調査。

*手順 [#e7f7484f]
-NuGet Gallery | Home~
https://www.nuget.org/

**Nugetのサイトにサインイン [#a55f9b01]
-NuGet Gallery | Home~
https://www.nuget.org/

-Microsoftアカウントでサインアップ可能。
--連携するのはメールアドレスで、同時にユーザ名の入力が必要。
--サインアップ後、サインインが可能になる。
--ローカル・ログオン用のパスワード設定は必要に応じて入力可能。

-以下はサインアップ・サインイン後のアカウント編集画面~
--~
https://www.nuget.org/account

**NugetのサイトからNuget.exeを取得 [#l2fefcbe]
-NuGet Gallery | Home~
https://www.nuget.org/
>[Install NuGet]~
latest nuget.exe - all downloads - documentation

--[Install NuGet]をクリックして、NuGetのInstallを行う。~
NuGet.Tools.vsixがダウンロードされるので実行してInstallする。~
この時、関連付けされるVisual Studioのバージョンが表示される。

--latest nuget.exeをクリックして、nuget.exeのDownloadを行う。


**nuspecファイルの生成 [#jb00308a]
***nuspecファイルとは? [#v00b525f]
-パッケージのメタデータを含むXML形式のマニフェスト(公約文書)。 
-マニフェスト(公約文書)は常にパッケージに含まれる。
-パッケージを構築し、消費者に情報を提供するために使用される。

***nuget.exeからnuspecファイルを出力 [#x6cccfb1]
-nuget.exeへのパスを通しておくか、~
プロジェクトファイル(*.csproj)のあるフォルダにnuget.exeを配置する。
-プロジェクトファイル(*.csproj)のあるフォルダで[nuget spec]コマンドを実行する。
-*.nuspecファイルが生成される。

 <?xml version="1.0"?>
 <package >
   <metadata>
     <id>$id$</id>
     <version>$version$</version>
     <title>$title$</title>
     <authors>$author$</authors>
     <owners>$author$</owners>
     <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
     <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
     <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
     <requireLicenseAcceptance>false</requireLicenseAcceptance>
     <description>$description$</description>
     <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
     <copyright>Copyright 2017</copyright>
     <tags>Tag1 Tag2</tags>
   </metadata>
 </package>

**nuspecファイルの編集 [#ee2e5317]
***生成されたnuspecファイルを修正する。 [#j73e5da8]
それぞれの項目については[[下記>#n3a85383]]を参照。

*参考 [#y156cbe0]
-NuGet パッケージを作成して公開する | Do Design Space~
https://sakapon.wordpress.com/2013/07/16/nugetpackage/
-NuGet パッケージを作って公開する - しばやん雑記~
http://blog.shibayan.jp/entry/20110306/1299422776

**nuspecファイルのメタデータ要素の説明 [#n3a85383]
-.nuspec File Reference for NuGet | Microsoft Docs~
https://docs.microsoft.com/en-us/nuget/schema/nuspec
--NuGet.Client/nuspec.xsd at dev · NuGet/NuGet.Client~
https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Packaging/compiler/resources/nuspec.xsd
>このnuspec.xsdをVisual Studioで確認するとSchemeの詳細が解るらしい。

-著名なパッケージを参考にする。
--Newtonsoft.Json(Json.NET)~
https://github.com/JamesNK/Newtonsoft.Json/blob/master/Build/Newtonsoft.Json.nuspec
--Dapper~
https://github.com/perliedman/dapper-dot-net/blob/master/dapper.nuspec

***必要なメタデータ要素(最小要件) [#t3a22c04]
|#|要素|説明|h
|1|id|大文字と小文字を区別しない、nuget.orgなどのパッケージ・ギャラリー内で一意なパッケージ識別子。&br;IDにはURLに有効でないスペースや文字含めない。|
|2|version|major.minor.patchパターンのパッケージのバージョン。&br;バージョン番号には、[[プレリリースパッケージ>https://docs.microsoft.com/en-us/nuget/create-packages/prerelease-packages#semantic-versioning]]に記載されているリリース前のサフィックスが含まれている場合があります。|
|3|description|UI表示用のパッケージの詳細な説明。|
|4|authors|nuget.orgのプロファイル名と一致するパッケージ作成者のカンマ区切りのリスト。&br;これらはnuget.orgのNuGet Galleryに表示され、同じ著者によるパッケージの相互参照に使用されています。|

***オプションのメタデータ要素(必要に応じて追加) [#y3cb29dd]
-単項目
|#|要素名|説明|h
|1|title|パッケージには、一般的にはUIで使用される、パッケージの人間にとって使いやすいタイトルがnuget.orgやVisual Studioのパッケージマネージャで表示されます。&br;指定しない場合、パッケージIDが代わりに使用されます。|
|2|owners|nuget.orgでプロファイル名を使用しているパッケージ作成者のカンマ区切りのリスト。&br;これはしばしば著者と同じリストであり、パッケージをnuget.orgにアップロードするときは無視されます。&br;nuget.orgのパッケージオーナーの管理を参照してください。|
|3|projectUrl|パッケージのホームページのURL。&br;多くの場合、UI表示とnuget.orgに表示されます。|
|4|licenseUrl|パッケージのライセンスのURL。&br;nuget.orgと同様にUI表示にも表示されることがよくあります。|
|5|iconUrl|UI表示でパッケージのアイコンとして使用する透過背景を持つ64x64画像のURL。|
|6|requireLicenseAcceptance|パッケージをインストールする前に、パッケージライセンスを受け入れるようにクライアントに指示する必要があるかどうかを指定するブール値。|
|7|developmentDependency|(2.8+)パッケージが開発専用依存としてマークされるかどうかを指定するブール値。&br;パッケージが他のパッケージへの依存として含まれないようにします。|
|8|summary|UI表示用のパッケージの短い説明。&br;省略された場合、記述の切り詰められたバージョンが使用されます。|
|9|releaseNotes|(1.5+)このパッケージのリリースで行われた変更の説明。&br;パッケージ説明の代わりにVisual Studioパッケージマネージャの[更新]タブなどのUIでよく使用されます。|
|10|copyright|(1.5+)パッケージの著作権詳細。|
|11|language|パッケージのロケールID。&br;ローカライズされたパッケージの作成を参照してください。|
|12|tags|パッケージを記述するタグとキーワードのスペース区切りリストで、&br;検索とフィルタリングのメカニズムを通じたパッケージの発見可能性を支援します。|
|13|serviceable|(3.3+)内部NuGet専用|
|14|minClientVersion|(2.5+)このパッケージをインストールできるNuGetクライアントの最小バージョンを指定します。&br;このバージョンは、nuget.exeとVisual Studio Package Managerによって適用されます。&br;これは、パッケージがNuGetクライアントの特定のバージョンで追加された.nuspecファイルの特定の機能に依存する場合に使用されます。&br;例えば、developmentDependency属性を使用するパッケージは、minClientVersionに「2.8」を指定します。&br;同様に、contentFiles要素を使用するパッケージ(次のセクションを参照)は、minClientVersionを "3.3"に設定します。&br;また、2.5より前のNuGetクライアントはこのフラグを認識しないため、minClientVersionで使用する値に関係なく、常にパッケージのインストールを拒否します。|

-複数項目
|#|要素名|説明|h
|1|packageTypes|(3.3+)伝統的な依存パッケージ以外のパッケージのタイプを指定する0個以上の<packageType>要素の集合。&br;各packageTypeにはnameとversionの属性があります。パッケージタイプの設定を参照してください。|
|2|dependencies|パッケージの依存関係を指定する0個以上の<dependency>要素の集合。&br;各依存関係には、id、version、include(3.x +)、およびexclude(3.x +)の属性があります。&br;下記の依存関係を参照してください。|
|3|frameworkAssemblies|(1.2+)このパッケージに必要な.NET Frameworkアセンブリ参照を識別する0個以上の<frameworkAssembly>要素のコレクション。&br;パッケージを使用するプロジェクトに参照が確実に追加されます。&br;各frameworkAssemblyにはassemblyName属性とtargetFramework属性があります。&br;下記のフレームワークアセンブリ参照GACの指定を参照してください。|
|4|references|(1.5+)プロジェクトの参照として追加される、パッケージのlibフォルダ内のアセンブリを命名する0個以上の<reference>要素のコレクション。&br;各参照にはファイル属性があります。&br;<references>は、<reference>要素を含むtargetFramework属性を持つ<group>要素も含むことができます。&br;省略すると、libのすべての参照が含まれます。&br;下記の明示的アセンブリ参照の指定を参照してください。|
|5|contentFiles|(3.3+)コンシューマプロジェクトに含めるコンテンツファイルを識別する<files>要素のコレクション。&br;これらのファイルは、プロジェクトシステム内でどのように使用されるべきかを記述する一連の属性で指定されます。&br;下記のパッケージに含めるファイルの指定を参照してください。|

----
Tags: [[:デプロイ]], [[:NuGet]], [[:.NET開発]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS