NuGet.Server

NuGet.Server は、.NET Foundation によって提供されるパッケージです。このパッケージでは、IIS を実行する任意のサーバー上でパッケージ フィードをホストできる、ASP.NET アプリケーションを作成します。 単純に言うと、NuGet.Server では HTTP (具体的には OData) 経由で利用できるサーバーにフォルダーを作成します。 設定は簡単で、単純なシナリオに最適です。

  1. Visual Studio で空の ASP.NET Web アプリケーションを作成して、NuGet.Server パッケージを追加します。
  2. アプリケーションで Packages フォルダーを設定し、パッケージを追加します。
  3. アプリケーションを適切なサーバーに展開します。

次のセクションでは、C# を使用して、このプロセスを詳しく確認します。

NuGet.Server についてさらに質問がある場合は、https://github.com/nuget/NuGetGallery/issues で問題を作成してください。

NuGet.Server を使用して ASP.NET Web アプリケーションを作成して配置する

  1. Visual Studioで、[新しい>ファイル>] Projectを選択し、[ASP.NET Web アプリケーション (.NET Framework)]を検索し、C# の一致するテンプレートを選択します。

    Select the .NET Framework web project template

  2. [フレームワーク] を [.NET Framework 4.6] に設定します。

    Setting the target framework for a new project

  3. アプリケーションに NuGet.Server 以外の適切な名前を付けて [OK] を選択し、次のダイアログでのテンプレートを選択して [OK] を選択します。

    Select the empty web project

  4. プロジェクトを右クリックし、 [NuGet パッケージの管理] を選択します。

  5. .NET Framework 4.6 を対象にしている場合は、パッケージ マネージャー UI で [参照] タブを選択し、最新バージョンの NuGet.Server パッケージを検索してインストールします (また、Install-Package NuGet.Server を使用して、パッケージ マネージャー コンソールからインストールすることもできます。)メッセージに従って、ライセンス条項に同意します。

    Installing the NuGet.Server package

  6. NuGet.Server をインストールすると、空の Web アプリケーションはパッケージ ソースに変換されます。 この操作を行うと、他の多様なパッケージがインストールされ、アプリケーション内に Packages フォルダーが作成され、追加の設定を含めるために web.config が変更されます (詳細については、ファイルのコメントを参照してください)。

    重要

    NuGet.Server パッケージでファイルの変更が完了した後は、web.config をよく確認してください。 NuGet.Server で既存の要素を上書きすることはできません。代わりに重複する要素が作成されます。 このような重複があると、後でプロジェクトを実行しようとしたときに "内部サーバー エラー" が発生します。 たとえば、NuGet.Server をインストールする前に web.config<compilation debug="true" targetFramework="4.5.2" /> を含めると、パッケージによって上書きされませんが 2 つ目の <compilation debug="true" targetFramework="4.6" /> が挿入されます。 この場合は、以前の Framework バージョンの要素を削除してください。

  7. Visual Studioでローカルにサイトを実行します (デバッグなしでデバッグ>を開始するか、Ctrl + F5 キーを押します)。 ホーム ページには、パッケージ フィードの URL が次のように表示されます。 エラーが表示される場合は、前述のような重複する要素がないか web.config をよく確認します。

    Default home page for an application with NuGet.Server

  8. 初めてアプリケーションを実行すると、NuGet.Server では各パッケージにフォルダーが含まれるように、Packages フォルダーが再構築されます。 これは、パフォーマンスを向上させるために、NuGet 3.3 で導入されたローカル記憶域のレイアウトに一致します。 さらにパッケージを追加する場合、継続してこの構造に従います。

  9. ローカルの配置をテストしたら、必要に応じてアプリケーションをその他の内部または外部のサイトに展開します。

  10. http://<domain> に展開されると、パッケージ ソースに使用する URL は http://<domain>/nuget になります。

パッケージを外部からフィードに追加する

web.config で API キーの値を設定した場合、NuGet.Server サイトが実行されているときに、nuget push を使用してパッケージを追加できます。

NuGet.Server パッケージをインストールした後、web.config に空の appSetting/apiKey 値が含まれます。

<appSettings>
    <add key="apiKey" value="" />
</appSettings>

apiKey が省略された場合、または空白の場合は、パッケージのフィードへのプッシュは無効になります。

この機能を有効にするには、apiKey に値 (理想的には、強力なパスワード) を設定し、true の値を含む appSettings/requireApiKey と呼ばれるキーを追加します。

<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 キーが必要ない場合 (たとえば、ローカル チーム ネットワーク上でプライベート サーバーを使用している場合)、requireApiKeyfalse に設定できます。 これで、サーバーへのアクセス権を持つすべてのユーザーは、パッケージをプッシュできるようになります。

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 に加えて、スタートアップ構成 (既定では NuGetODataConfig.cs) の enableLegacyPushRoute: true オプションを使用して既定で有効になります。 同じプロジェクトで複数のフィードがホストされている場合、この機能は無効になることに注意してください。

フィードからパッケージを削除する

NuGet.Server で、API キーをコメントに追加して nuget delete コマンドを実行すると、リポジトリからパッケージを削除できます。

代わりにパッケージをリストから削除する (パッケージの復元のために使用できる状態のままにする) ように動作を変更する場合は、web.configenableDelisting キーを true に変更します。

パッケージ フォルダーを構成する

NuGet.Server 1.5 以降では、web.configappSettings/packagesPath 値を使用して、パッケージ フォルダーをカスタマイズできます。

<appSettings>
    <!-- Set the value here to specify your custom packages folder. -->
    <add key="packagesPath" value="C:\MyPackages" />
</appSettings>

packagesPath は絶対パスまたは仮想パスにすることができます。

packagesPath が省略された場合、または空白のままの場合は、パッケージ フォルダーは既定の ~/Packages です。

Web アプリを公開するときにパッケージを使用できるようにする

アプリケーションをサーバーに公開するときに、パッケージをフィードで使用できるようにするには、Visual Studio の Packages フォルダーに各 .nupkg ファイルを追加して、それぞれの [ビルド アクション][コンテンツ] に、 [出力ディレクトリにコピー][常にコピーする] に設定します。

Copying packages to the Packages folder in the project

リリース ノート

NuGet.Server のリリース ノートについては、GitHub リリースページを参照してください。 これには、追加されたバグの修正と新機能の詳細が含まれます。

NuGet.Server のサポート

NuGet.Server の使用についてその他のサポートが必要な場合は、https://github.com/nuget/NuGetGallery/issues で問題を作成してください。