Nuget-DOC:Nugetプロフィール

ylbtech-Nuget-DOC:Nugetプロフィール

 

1. トップに戻ります
1、

NuGetについて

すべての近代的な開発プラットフォームのための基本的なツールは、メカニズムとして機能することができ、このメカニズムによって、開発者は、共有を作成し、便利なコードを使用することができます。 これらのパッケージの使用中に、典型的には、「パッケージ」、(例えば、DLLのような)他のコンテンツを含むでコンパイルされたコードに関連付けられ、そのようなコード、および所望のアイテム。

(.NETのコアを含む).NETは、Microsoftの共有コードのサポートの仕組みは、使用を作成する方法を定義しNuGet、だった、と.NETパッケージのために、それぞれの役割がのホスティングに適切なツールを提供します

簡単に言うと、持っNuGetパッケージ  .nupkg 1つのZIPファイルの拡張子は、この拡張機能は、コンパイルされたコード(DLL)、他の文書と(情報パケットのバージョン番号を含む)のコードに関連する記述リストが含まれています。 コードの開発者を使用すると、パッケージ共有を作成し、パブリックまたは専用ホスティングにそれを公開します。 パッケージのユーザは、これらのパッケージは、プロジェクトに追加し、そのプロジェクトのコード内の関数のパッケージを呼び出し、適切なホストから取得します。 その後、NuGet自体は中間細部のすべてを処理する責任を負っています。

ホスト公開nuget.orgホストへの次の専用サポートNuGetので、従って、NuGetパッケージ組織またはワークグループ固有のコードを共有するために使用することができます。 また、また、あなた自身のプロジェクトに加えて、他の項目のためのコードを所有する便利な方法として、NuGetパッケージを使用することができます。 簡単に言えば、NuGetパッケージは、コードの共有可能な単位であるが、任意の特定の共有方法を意味する必要はありません。

クリエイター、ホストとユーザとの間のパケットフロー

公共マスターの役割として、責任NuGet自体  nuget.org  中央リポジトリを維持するには、10万人以上のユニークなパッケージが含まれています。これらのパッケージは、.NET /ネットコア開発者の数百万のための毎日。 NuGetはまた、(アズールDevOpsチームのように)クラウド内のプライベートネットワークをサポートする、あるいは直接個人ローカルファイルシステム上のパッケージを管理していました。 そうすることによって、のみ開発者にこれらのパッケージは、ユーザーの特定のグループへのパッケージが利用できるようにすることができ、ホストへのアクセスが可能である持っています。 独自のNuGetソースをホスティングすることは、関連するオプションの説明を提供します。 設定オプションにより、あなたは正確に任意のホストコンピュータは、アクセスすることができますパッケージは、特定のソース(およびnuget.org好きではないので、共通リポジトリ)から取得されていることを確認するための制御することができます。

どのような宿主の性質は、それがパッケージ作成者およびユーザーパッケージ間の接続ポイントとして使用することができるということです。 Creatorは便利NuGetパッケージを生成し、それをホストに公開します。 ユーザー、ホスト上で検索することができますが、便利と互換性のあるパッケージにアクセスするパッケージをダウンロードし、プロジェクトに含めることができます。 プロジェクト内のインストールパッケージの後、APIパッケージには、残りのプロジェクトコードのために使用されます。

パッケージ作成者、パッケージおよびホスト・ユーザ・パッケージとの関係

互換パッケージの向き

「適合性」パッケージを指す:このパッケージは、アセンブリは、プロジェクトの目標を使用してフレームについて生成された少なくとも1つの目標の.NET Frameworkと互換性がなければならない含まれています。 そしてUWPコントロールは、開発者は、ターゲットの広い範囲をサポートできる枠組みの中で特定のパッケージを作成することができます。 パッケージの互換性を最大にするために、すべての開発者のコア.NETおよび.NETプロジェクトを使用することができ  、.NETの標準を。 単一のパケットは、(通常、単一のアセンブリが含まれています)プロジェクトのすべての使用に適用されるためクリエイターとユーザーの場合、これは、最も効果的な方法です。

標準パッケージの開発者は、彼らが別のアセンブリを作成したいのサポートのためのさまざまなフレームワークをターゲットとし、これらすべてのアセンブリは、「マルチと呼ばれる(同じパッケージに含ま超え一方、それは、.NET APIが必要ですターゲット「)。 ユーザーは、パッケージをインストールすると、NuGetアセンブリは、所望の項目を抽出します。 これは、生成および/または占有量のアセンブリへのプロジェクトの最終的なアプリケーションにパッケージを最小限に抑えることができます。 もちろん、クリエイターのためのマルチターゲットパッケージは維持することがより困難です。

 リマーク

.NET標準は、さまざまなポータブルクラスライブラリ(PCL)の目標を使用して、以前のターゲットに置き換えられます。 したがって、このドキュメントは、.NET Standardのパッケージを作成するに焦点を当てています。

NuGetツール

サポートをホスティングしていることに加えて、NuGetはまた、クリエーターと、使用するユーザーのための様々なツールを提供しています。 特定のツールについての情報を入手する方法の詳細については、インストールNuGetクライアントツールを

ツール プラットフォーム プログラムの適用 説明
DOTNET CLI 完成 作成し、使用 .NET Frameworkのプロジェクト指向スタイルのSDKのための.NETのコアと.NETの標準ライブラリ、およびCLIツール(参照  SDK属性)。.NETのコアツールチェーンで直接特定のNuGet CLI機能を提供します。 そして  nuget.exe CLIのように、DOTNETのCLIは、Visual Studioプロジェクトと相互作用しません。
nuget.exe CLI 完成 作成し、使用 .NET標準SDKスタイルのプロジェクトのための.NET Frameworkライブラリと非ライブラリーのためのCLIツール。 NuGetは、特にパッケージ作成者のためのいくつかを含め、すべての機能を提供し、それがユーザーにのみ適用され、両方のコマンドに適しています。 たとえば、作成するためにパッケージを使用する  nuget pack アセンブリおよび関連文書のさまざまな介してパッケージを作成するためにコマンドを使用するユーザーを含む  nuget install プロジェクトフォルダには、パッケージが含まれていますが、誰でも使用することができます  nuget config NuGet構成変数を設定します。 ツール、プラットフォームに依存しないように、NuGet CLIは、Visual Studioプロジェクトと相互作用しません。
パッケージマネージャコンソール Visual Studioの版のWindows 使用 Visual Studioのプロジェクトでのインストールと管理パッケージを提供する  PowerShellコマンド
パッケージマネージャのUI Visual Studioの版のWindows 使用 Visual Studioのプロジェクトでパッケージをインストールし、管理するためのUIを使用して簡単に提供します。
管理NuGet UI Mac用のVisual Studio 使用 UIは、MacプロジェクトのためのVisual Studioで簡単なインストールと管理パッケージを提供します。
MSBuildの ウィンドウズ 作成し、使用 これは、使用MSBuildのツールチェーンを介して直接パッケージとパッケージ削減プロジェクトの作成をサポートしています。

上述したように、あなたが使用するツールは、パッケージや使用しているプラットフォームを作成、使用または公開することNuGetのユーザーに大きく依存します。 彼らはすでにNuGetの機能を存在する他のパッケージのための基礎として生成しているため、通常はユーザーパッケージは、作成されています。 もちろん、これらのパケットは、順番に、また、他のパッケージに依存する必要があるかもしれません。

詳細については、してくださいワークフローパッケージを作成し、パッケージには、ワークフローの使用記事の開始を。

依存関係を管理します

在其他人的工作基础上轻松生成,这是使程序包管理系统成为最强大功能的方法之一。 相应地,大部分 NuGet 的用途就是代表项目管理该依赖关系树或“关系图”。 简单来说,你仅需要关注在项目中直接使用的包。 如果任何这些包本身使用其他包(这些包仍可以使用其他包),NuGet 将负责所有这些下层依赖项。

下图显示一个依赖于五个包的项目,这些包反过来也依赖于许多其他包。

例えばNuGet .NETプロジェクトの依存関係の用語の関係図

请注意,某些包在依赖项关系图中多次出现。 例如,包 B 有三个不同的使用者,并且每个使用者可能为该包指定不同版本(未显示)。 这是一种常见情况,特别是对于广泛使用的程序包。 幸运的是,NuGet 将执行所有困难的工作来确定包 B 的哪一个版本可满足所有使用者。 随后,无论依赖项关系图多么复杂,NuGet 都将对所有包执行相同操作。

有关 NuGet 如何实现此服务的更多详细信息,请参阅依赖项解析

跟踪引用和还原包

项目可在开发人员计算机、源代码管理存储库、生成服务器等位置之间轻松移动,因此将 NuGet 包的二进制程序集直接绑定到项目非常不切实际。 这样做不仅会使项目的每个副本出现不必要的膨胀(而且会浪费源代码管理存储库中的空间)。 还会使包二进制文件难以更新到新版本(因为这需要更新项目的所有副本)。

而 NuGet 维护一个项目所依赖的包的简单引用列表,包括顶层和下层的依赖关系。 也就是说,每当你将某个主机中的包安装到项目中时,NuGet 都将在此引用列表中记录包标识符和版本号。 (当然,卸载包将从列表中删除此信息。)然后,NuGet 根据请求提供还原所有引用程序包的方法,如软件包还原中所述。

NuGet参照リストを使用すると、パッケージのインストール時に作成され、別の場所にパッケージを復元するために使用することができます

只需引用列表,NuGet 随后即可随时从公共和/或私有主机重新安装—即“还原” —所有这些包。 将项目提交到源代码管理存储库或将其以其他方式进行共享时,只需包含引用列表,不需要包含任何包二进制文件(请参阅包和源代码管理)。

接收项目的计算机(如获得项目副本并将其作为自动部署系统的一部分的生成服务器)仅会在需要时要求 NuGet 还原依赖项。 Azure DevOps 等生成系统会出于此确切目的提供“NuGet 还原”步骤。 同样,当开发人员获取项目副本(如克隆存储库时),他们可以调用 nuget restore(NuGet CLI)、dotnet restore(dotnet CLI) 或 Install-Package(程序包管理器控制台)类似的命令,以获得所有必要的程序包。 对于 Visual Studio 来说,它将在生成项目时自动还原包(前提是启用了自动还原,如包还原中所述)。

显然,开发人员接下来关注的 NuGet 的主要角色则是代表项目维护该引用列表并提供高效还原(和更新)这些引用包的方法。 该列表以两种“包管理格式” 中的一种维护,因为将它们称为:

  • PackageReference(或“项目文件中的包引用”) | (NuGet 4.0+) 维护直接位于项目文件中的项目顶层依赖项的列表,因此无需单独文件。 关联文件 obj/project.assets.json 动态生成,以管理项目使用的包的总依赖项关系图以及所有下层依赖项。 PackageReference 始终由 .NET Core 项目使用。

  • packages.config:(NuGet 1.0+) 一种 XML 文件,用于维护项目中所有依赖项的简单列表,包括其他已安装包的依赖项 。 已安装或已还原的包存储在 packages 文件夹中。

任何特定项目中所用的包管理格式取决于项目类型以及 NuGet(和/或 Visual Studio)的可用版本。若要确认当前使用的格式,只需在安装第一个包后在项目根目录中查找 packages.config。 如果没有该文件,请直接在项目文件中查找 <PackageReference> 元素。

当进行选择时,我们建议使用 PackageReference。 出于与旧版兼容目的对 packages.config 进行维护,将不再主动对其进行开发。

 提示

各种 nuget.exe CLI 命令(如 nuget install)不会自动将包添加到引用列表中。 当使用 Visual Studio 包管理器(UI 或控制台)并使用 dotnet.exe CLI 时,将更新此列表。

NuGet 的其他功能

到目前为止,你已经学习了 NuGet 的以下特征:

  • NuGet 提供支持专用托管的中心 nuget.org 存储库。
  • NuGet 为开发人员提供创建、发布和使用包所需的工具。
  • 最重要的是,NuGet 能维护项目中所用包的引用列表,并且能够通过该列表还原和更新这些包。

为使这些进程高效运行,NuGet 执行了一些后台优化。 最值得注意的是,NuGet 管理包缓存和全局包文件夹,使安装和重新安装过程更为快捷。 缓存可避免下载已在计算机上安装的包。 全局包文件夹允许多个项目共享同一个已安装的包,因此减少了计算机上的 NuGet 的总体占用。 当在生成服务器等位置频繁还原大量包时,缓存和全局包文件夹也非常有帮助。 有关这些机制的详细信息,请参阅管理全局包和缓存文件夹

在一个单独的项目中,NuGet 管理整个依赖项关系图,它同样包括解析对同一个包的不同版本的多个引用。 项目在具有相同依赖项的一个或多个包上选取依赖项是很常见的情况。 nuget.org 上的某些最有用的实用程序包即由其他许多包使用。 然后在整个依赖项关系图中,你可以对同一个包的不同版本轻松发起 10 种不同的引用。 为避免将该包的多个版本引入应用程序本身,NuGet 会挑选出一个适合所有使用者的版本。 (有关详细信息,请参阅依赖项解析。)

また、NuGetは(含む建設のパッケージ方法維持局在化およびデバッグシンボル)及び参照(含むバージョンの範囲プレリリース版を、関連するすべての仕様のために)。また、NuGetは、また、プログラムでそのサービスを利用するには、拡張機能とVisual Studioのプロジェクトテンプレートを書くために、開発者のためのサポートを提供するAPIを用意しています。

あなたはこれらの機能だけでなく、NuGetを果たした最初の問題から、リリースノートのすべてを一覧表示している参照してくださいよ、このドキュメントのカタログを閲覧する時間を割いてください。

2、
2. トップへ戻ります
 
3. トップに戻ります
 
4. トップ
 
5. トップ
1、
2、
 
6. トップに戻ります
 
警告します 著者:ylbtech
出典:http://ylbtech.cnblogs.com/
この記事は、執筆者に属し、公園の合計をブログ、転載することを歓迎しますが、この節で宣言され、著者の同意なしにそれ以外の場合は、保持され、記事ページの見かけ上の位置に元の接続を指定する必要があります私たちは、法的責任を追及する権利を留保します。

おすすめ

転載: www.cnblogs.com/storebook/p/11386797.html