NuGet に関してよく寄せられる質問

NuGet.org アカウントの質問など、NuGet.org に関してよく寄せられる質問については、「NuGet.org に関してよく寄せられる質問」を参照してください。

全般

NuGet を実行するために必要なものは何ですか?

UI とコマンド ライン ツールの両方に関するすべての情報は、インストール ガイドで入手できます。

NuGet で Mono はサポートされますか?

コマンド ライン ツール nuget.exe は Mono 3.2+ でビルドおよび実行され、Mono でパッケージを作成できます。

nuget.exe は Windows では完全に動作しますが、Linux と OS X では既知の問題があります。GitHub の Mono に関する問題を参照してください。

グラフィカル クライアントは、MonoDevelop 用のアドインとして使用できます。

パッケージの内容と、それが自分のアプリケーションに対して安定したものであり、役立つものであるかどうかはどのように判別すればよいですか?

パッケージについて学習するための主なソースとして、nuget.org (または別のプライベート フィード) のリスト ページがあります。 nuget.org の各パッケージ ページには、パッケージ、そのバージョン履歴、使用状況の統計の説明が含まれます。 パッケージ ページの [情報] セクションには、プロジェクトの Web サイトへのリンクも含まれています。通常はこのサイトで、パッケージの使用方法について学習する際に役立つ多くの例とその他のドキュメントを見つけます。

詳細については、「パッケージの検索と選択」を参照してください。

Visual Studio の NuGet

別の Visual Studio 製品では NuGet はどのようにサポートされますか?

インストールされている NuGet ツールの正確なバージョンはどのように確認すればよいですか?

Visual Studio で、[ヘルプ > Microsoft Visual Studio の情報] コマンドを使用して、[NuGet パッケージ マネージャー] の横に表示されるバージョンを確認します。

または、パッケージ マネージャー コンソールを起動 ([ツール > NuGet パッケージ マネージャー > パッケージ マネージャー コンソール] の順に選択) し、「$host」と入力して、バージョンを含む NuGet に関する情報を表示します。

NuGet ではどのようなプログラミング言語がサポートされますか?

通常、NuGet は .NET 言語に対して動作し、プロジェクトに .NET ライブラリを取り込むように設計されています。 また、いくつかのプロジェクトの種類で MSBuild と Visual Studio オートメーションがサポートされるため、程度の差はありますが他のプロジェクトと言語もサポートされます。

最新バージョンの NuGet では C#、Visual Basic、F#、WiX、C++、Q# がサポートされます。

NuGet ではどのようなプロジェクト テンプレートがサポートされますか?

NuGet では、Windows、Web、クラウド、SharePoint、Wix などのさまざまなプロジェクト テンプレートが完全にサポートされます。

Visual Studio テンプレートの一部であるパッケージはどのように更新すればよいですか?

パッケージ マネージャー UI の [更新] タブに移動して、[すべて更新] を選択するか、パッケージ マネージャー コンソールで Update-Package コマンドを使用します。

テンプレート自体を更新するには、テンプレート リポジトリを手動で更新する必要があります。 これについては、Xavier Decoster のブログを参照してください。 最新バージョンのすべての依存関係が相互に互換性がない場合、手動で更新するとテンプレートが壊れる可能性があるため、これは自身の責任で行うことに注意してください。

Visual Studio 外部で NuGet を使用できますか?

はい。NuGet はコマンド ラインから直接動作します。 インストール ガイドCLI 参照に関するページを参照してください。

NuGet コマンド ライン

最新バージョンの NuGet コマンド ライン ツールはどのように取得すればよいですか?

インストール ガイドを参照してください。 現在インストールされているツールのバージョンを確認するには、nuget help を使用します。

nuget.exe のライセンスとは何ですか?

MIT ライセンスの条件に従って、nuget.exe を再配布できます。 再配布を選択した nuget.exe のコピーを更新および修正するのは、お客様の責任です。

NuGet コマンド ライン ツールを拡張することはできますか?

はい。Archive.org から利用可能な Rob Reynold の投稿で説明されているように、nuget.exe にカスタム コマンドを追加することができます。

NuGet パッケージ マネージャー コンソール (Windows の Visual Studio)

パッケージ マネージャー コンソールでは DTE オブジェクトにどのようにアクセスするのですか?

Visual Studio オートメーション オブジェクト モデルのトップ レベル オブジェクトは、DTE (開発ツール環境) オブジェクトと呼ばれます。 コンソールでは、$DTE という名前の変数を通じてこれが提供されます。 詳細については、Visual Studio 機能拡張ドキュメントの「オートメーション モデルの概要」を参照してください。

$DTE 変数を DTE2 型にキャストしようとしましたが、""EnvDTE.DTEClass" 型の "EnvDTE.DTEClass" 値を "EnvDTE80.DTE2" 型に変換できません" という内容のエラーが表示されました。 理由

これは、PowerShell が COM オブジェクトと対話する方法に関する既知の問題です。 次の操作を試してみてください。

`$dte2 = Get-Interface $dte ([EnvDTE80.DTE2])`

Get-Interface は、NuGet PowerShell ホストによって追加されたヘルパー関数です。

パッケージの作成と発行

フィードではどのように自分のパッケージをリストするのですか?

パッケージの作成と発行」を参照してください。

異なるバージョンの .NET Framework をターゲットとする複数バージョンのライブラリがあります。 これをサポートする 1 つのパッケージをビルドするにはどうすればよいですか?

複数の .NET Framework バージョンとプロファイルのサポートに関するページを参照してください。

独自のリポジトリまたはフィードを設定するにはどうすればよいですか?

パッケージのホスティングの概要に関するページを参照してください。

パッケージを自分の NuGet フィードに一括でアップロードするにはどうすればよいですか?

Bulk publishing NuGet packages」 (NuGet パッケージの一括発行) (jeffhandly.com) を参照してください。

パッケージの操作

インターネットに接続せずに NuGet パッケージをインストールすることはできますか?

はい。Scott Hanselman のブログ投稿「How to access NuGet when nuget.org is down (or you're on a plane)」 (nuget.org がダウンしたとき (または飛行機内で) NuGet にアクセスする方法) (hanselman.com) を参照してください。

既定のパッケージ フォルダーとは異なる場所にパッケージをインストールするにはどうすればよいですか?

nuget config -set repositoryPath=<path> を使用して、Nuget.ConfigrepositoryPath を設定します。

NuGet パッケージ フォルダーがソース管理に追加されないようにするにはどうすればよいですか?

Nuget.ConfigdisableSourceControlIntegrationtrue に設定します。 このキーはソリューション レベルで動作するため、$(Solutiondir)\.nuget\Nuget.Config ファイルに追加する必要があります。 Visual Studio からのパッケージの復元を有効にすると、このファイルは自動的に作成されます。

パッケージの復元を無効にするにはどうすればよいですか?

パッケージの復元の有効化と無効化」を参照してください。

リモートの依存関係があるローカル パッケージをインストールするときに、"依存関係を解決できません" という内容のエラーが表示されるのはなぜですか?

プロジェクトにローカル パッケージをインストールする場合は、すべてのソースを選択する必要があります。 これにより、フィードを 1 つだけ使用するのではなく、すべて集約することになります。 このエラーが表示されるのは、ローカル リポジトリのユーザーは、多くの場合、企業ポリシーにより、リモート パッケージが誤ってインストールされないようにする必要があるためです。

同じフォルダーに複数のプロジェクトがあります。プロジェクトごとに別個の packages.config ファイルを使用するにはどうすればよいですか?

別個のプロジェクトが別個のフォルダーに存在するほとんどのプロジェクトでは、NuGet で各プロジェクトの packages.config ファイルが特定されるため、これは問題ではありません。 NuGet 3.3+ では、同じフォルダーに複数のプロジェクトがある場合、プロジェクトの名前を packages.config ファイル名に挿入できます (パターン packages.{project-name}.config を使用)。NuGet はそのファイルを使用します。

各プロジェクト ファイルには独自の依存関係リストが含まれるため、PackageReference を使用する場合、これは問題ではありません。

自分のリポジトリ リストに nuget.org が表示されません。これを戻すにはどうすればよいですか?

  • 自分のソース リストに https://api.nuget.org/v3/index.json を追加します。または、
  • %appdata%\.nuget\NuGet.Config (Windows) または ~/.nuget/NuGet/NuGet.Config (Mac/Linux) を削除し、NuGet で自動的に再作成します。

PackageReference に移行しましたが、ビルドが 'このプロジェクトは、このコンピューターに存在しない NuGet パッケージを参照しています。' で失敗するのはなぜですか?

packages.config プロジェクトでは、build プロパティまたはターゲットを含むパッケージがインストールされると、NuGet によって EnsureNuGetPackageBuildImports ターゲットが追加され、ビルド前にパッケージの msbuild コンテンツがインポートされたことが確認されます。 target が手動で変更された場合、移行時に削除する必要があることが NuGet によって検出できない場合があります。

プロジェクトが PackageReference であり、プロジェクト ファイルにこのターゲットがまだある場合は、削除しても問題ありません。