NuGet.Server は.NET Foundation によって提供されるパッケージであり、IIS を実行する任意のサーバーでパッケージ フィードをホストできる ASP.NET アプリケーションを作成します。 簡単に言うと、NuGet.Server はサーバー上のフォルダーを HTTP (S) (具体的には OData) 経由で使用できるようにします。 簡単に設定でき、単純なシナリオに最適です。
- Visual Studio で空の ASP.NET Web アプリケーションを作成し、それに NuGet.Server パッケージを追加します。
- Visual Studio 2022 を使用している場合は、.NET Framework 開発ツールを追加する必要があります。 これは、 新しい ASP.NET Web アプリケーション (.NET Framework) プロジェクトを作成できるようにするために必要です。
- アプリケーションで
Packagesフォルダーを構成し、パッケージを追加します。 - 適切なサーバーにアプリケーションをデプロイします。
次のセクションでは、C# を使用して、このプロセスについて詳しく説明します。
NuGet.Server についてさらに質問がある場合は、 https://github.com/nuget/NuGetGallery/issuesで問題を作成します。
NuGet.Server を使用して ASP.NET Web アプリケーションを作成してデプロイする
Visual Studio で、[ ファイル] > [新しい > プロジェクト] を選択し、"ASP.NET Web アプリケーション (.NET Framework)" を検索し、 C# の一致するテンプレートを選択します。
Framework を ".NET Framework 4.6" に設定します。
アプリケーションに NuGet.Server 以外 の適切な名前を付け、[OK] を選択し、次のダイアログで 空 のテンプレートを選択し、[ OK] を選択します。
プロジェクトを右クリックし、[ NuGet パッケージの管理] を選択します。
パッケージ マネージャー UI で、[ 参照 ] タブを選択し、.NET Framework 4.6 を対象としている場合は、NuGet.Server パッケージの最新バージョンを検索してインストールします。 (
Install-Package NuGet.Serverを使用してパッケージ マネージャー コンソールからインストールすることもできます)。メッセージが表示されたら、ライセンス条項に同意します。
NuGet.Server をインストールすると、空の Web アプリケーションがパッケージ ソースに変換されます。 他のさまざまなパッケージをインストールし、アプリケーションに
Packagesフォルダーを作成し、追加の設定を含むようにweb.configを変更します (詳細については、そのファイルのコメントを参照してください)。Important
NuGet.Server パッケージがそのファイルに対する変更を完了した後、
web.configを慎重に検査します。 NuGet.Server では、既存の要素を上書きするのではなく、重複する要素を作成できます。 これらの重複により、後でプロジェクトを実行しようとすると"内部サーバー エラー" が発生します。 たとえば、NuGet.Server をインストールする前にweb.configに<compilation debug="true" targetFramework="4.5.2" />が含まれている場合、パッケージは上書きせず、2 つ目の<compilation debug="true" targetFramework="4.6" />を挿入します。 その場合は、古いフレームワーク バージョンの要素を削除します。Visual Studio でローカルでサイトを実行します ( デバッグ > デバッグなしで開始 するか、Ctrl + F5 キーを押します)。 ホーム ページには、次に示すようにパッケージ フィードの URL が表示されます。 エラーが発生した場合は、前に説明したように、
web.configで重複する要素がないか慎重に調べます。
アプリケーションを初めて実行すると、NuGet.Server によって
Packagesフォルダーが再構築され、各パッケージのフォルダーが格納されます。 これは、パフォーマンスを向上させるために NuGet 3.3 で導入された ローカル ストレージ レイアウト と一致します。 さらにパッケージを追加する場合は、この構造に従い続けます。ローカル展開をテストしたら、必要に応じて他の内部サイトまたは外部サイトにアプリケーションを展開します。
http://<domain>にデプロイすると、パッケージ ソースに使用する URL がhttp://<domain>/nugetされます。
外部からのフィードへのパッケージの追加
NuGet.Server サイトが実行されたら、で API キー値を設定した場合はweb.configを使用してパッケージを追加できます。
NuGet.Server パッケージをインストールした後、 web.config には空の appSetting/apiKey 値が含まれます。
<appSettings>
<add key="apiKey" value="" />
</appSettings>
apiKeyを省略するか空白にすると、フィードへのパッケージのプッシュは無効になります。
この機能を有効にするには、apiKeyを値 (理想的には強力なパスワード) に設定し、appSettings/requireApiKeyの値を持つ true というキーを追加します。
<appSettings>
<!-- Sets whether an API Key is required to push/delete packages -->
<add key="requireApiKey" value="true" />
<!-- Set a shared password (for all users) to push/delete packages -->
<add key="apiKey" value="" />
</appSettings>
サーバーが既にセキュリティで保護されているか、API キーが不要な場合 (たとえば、ローカル チーム ネットワークでプライベート サーバーを使用する場合)、 requireApiKey を false に設定できます。 その後、サーバーにアクセスできるすべてのユーザーがパッケージをプッシュできます。
NuGet.Server 3.0.0 以降では、パッケージをプッシュするための URL が http://<domain>/nugetに変更されました。 3.0.0 リリースより前は、プッシュ URL が http://<domain>/api/v2/packageされました。
NuGet 3.2.1 以降では、このレガシ URL /api/v2/packageは、スタートアップ構成の /nuget オプションを使用して既定でenableLegacyPushRoute: trueに加えて有効になります (既定ではNuGetODataConfig.cs)。 この機能は、同じプロジェクトで複数のフィードがホストされている場合は機能しないことに注意してください。
フィードからのパッケージの削除
NuGet.Server では、コメントに API キーを含める場合、 nuget delete コマンドによってリポジトリからパッケージが削除されます。
代わりにパッケージを一覧から削除するように動作を変更する場合 (パッケージの復元に使用できるようにしておく)、enableDelistingのweb.config キーを true に変更します。
パッケージ フォルダーの構成
NuGet.Server 1.5 以降では、appSettings/packagesPathのweb.config値を使用してパッケージ フォルダーをカスタマイズできます。
<appSettings>
<!-- Set the value here to specify your custom packages folder. -->
<add key="packagesPath" value="C:\MyPackages" />
</appSettings>
packagesPath には、絶対パスまたは仮想パスを指定できます。
packagesPathを省略するか空白のままにすると、packages フォルダーが既定の~/Packagesになります。
Web アプリを発行するときにパッケージを使用できるようにする
アプリケーションをサーバーに発行するときにフィードでパッケージを使用できるようにするには、Visual Studio の .nupkg フォルダーに各Packages ファイルを追加し、それぞれのビルド アクションをコンテンツに設定し、出力ディレクトリにコピーして常にコピーします。
リリース ノート
NuGet.Server のリリース ノートは、 GitHub リリース ページで入手できます。 これには、バグ修正と追加される新機能に関する詳細が含まれます。
NuGet.Server のサポート
NuGet.Server の使用に関するその他のヘルプについては、 https://github.com/nuget/NuGetGallery/issuesで問題を作成してください。