NuGet.ServerNuGet.Server

NuGet.Server は、.NET Foundation によって提供されるパッケージです。このパッケージでは、IIS を実行する任意のサーバー上でパッケージ フィードをホストできる、ASP.NET アプリケーションを作成します。NuGet.Server is a package provided by the .NET Foundation that creates an ASP.NET application that can host a package feed on any server that runs IIS. 単純に言うと、NuGet.Server では HTTP (具体的には OData) 経由で利用できるサーバーにフォルダーを作成します。Simply said, NuGet.Server makes a folder on the server available through HTTP(S) (specifically OData). 設定は簡単で、単純なシナリオに最適です。It's easy to set up and is best for simple scenarios.

  1. Visual Studio で空の ASP.NET Web アプリケーションを作成して、NuGet.Server パッケージを追加します。Create an empty ASP.NET Web application in Visual Studio and add the NuGet.Server package to it.
  2. アプリケーションで Packages フォルダーを設定し、パッケージを追加します。Configure the Packages folder in the application and add packages.
  3. アプリケーションを適切なサーバーに展開します。Deploy the application to a suitable server.

次のセクションでは、C# を使用して、このプロセスを詳しく確認します。The following sections walk through this process in detail, using C#.

NuGet.Server についてさらに質問がある場合は、https://github.com/nuget/NuGetGallery/issues で問題を作成してください。If you have further questions about NuGet.Server, create an issue on https://github.com/nuget/NuGetGallery/issues.

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

  1. Visual Studio で、 [ファイル] > [新規] > [プロジェクト] を選択し、「ASP.NET」を検索し、C# 用に [ASP.NET Web アプリケーション (.NET Framework)] テンプレートを選択し、 [フレームワーク] を [.NET Framework 4.6] に設定します。In Visual Studio, select File > New > Project, search for "ASP.NET", select the ASP.NET Web Application (.NET Framework) template for C#, and set Framework to ".NET Framework 4.6":

    新しいプロジェクトのターゲット フレームワークを設定する

  2. アプリケーションに NuGet.Server 以外の適切な名前を付けて [OK] を選択し、次のダイアログでのテンプレートを選択して [OK] を選択します。Give the application a suitable name other than NuGet.Server, select OK, and in the next dialog select the Empty template, then select OK.

  3. プロジェクトを右クリックし、 [NuGet パッケージの管理] を選択します。Right-click the project, select Manage NuGet Packages.

  4. .NET Framework 4.6 を対象にしている場合は、パッケージ マネージャー UI で [参照] タブを選択し、最新バージョンの NuGet.Server パッケージを検索してインストールしますIn the Package Manager UI, select the Browse tab, then search and install the latest version of the NuGet.Server package if you're targeting .NET Framework 4.6. (また、Install-Package NuGet.Server を使用して、パッケージ マネージャー コンソールからインストールすることもできます。)メッセージに従って、ライセンス条項に同意します。(You can also install it from the Package Manager Console with Install-Package NuGet.Server.) Accept the license terms if prompted.

    NuGet.Server パッケージをインストールする

  5. NuGet.Server をインストールすると、空の Web アプリケーションはパッケージ ソースに変換されます。Installing NuGet.Server converts the empty Web application into a package source. この操作を行うと、他の多様なパッケージがインストールされ、アプリケーション内に Packages フォルダーが作成され、追加の設定を含めるために web.config が変更されます (詳細については、ファイルのコメントを参照してください)。It installs a variety of other packages, creates a Packages folder in the application, and modifies web.config to include additional settings (see the comments in that file for details).

    重要

    NuGet.Server パッケージでファイルの変更が完了した後は、web.config をよく確認してください。Carefully inspect web.config after the NuGet.Server package has completed its modifications to that file. NuGet.Server で既存の要素を上書きすることはできません。代わりに重複する要素が作成されます。NuGet.Server may not overwrite existing elements but instead create duplicate elements. このような重複があると、後でプロジェクトを実行しようとしたときに "内部サーバー エラー" が発生します。Those duplicates will cause an "Internal Server Error" when you later try to run the project. たとえば、NuGet.Server をインストールする前に web.config<compilation debug="true" targetFramework="4.5.2" /> を含めると、パッケージによって上書きされませんが 2 つ目の <compilation debug="true" targetFramework="4.6" /> が挿入されます。For example, if your web.config contains <compilation debug="true" targetFramework="4.5.2" /> before installing NuGet.Server, the package doesn't overwrite it but inserts a second <compilation debug="true" targetFramework="4.6" />. この場合は、以前の Framework バージョンの要素を削除してください。In that case, delete the element with the older framework version.

  6. アプリケーションをサーバーに公開するときに、パッケージをフィードで使用できるようにするには、Visual Studio の Packages フォルダーに各 .nupkg ファイルを追加して、それぞれの [ビルド アクション][コンテンツ] に、 [出力ディレクトリにコピー][常にコピーする] に設定します。To make packages available in the feed when you publish the application to a server, add each .nupkg files to the Packages folder in Visual Studio, then set each one's Build Action to Content and Copy to Output Directory to Copy always:

    プロジェクト内の [Packages] フォルダーにパッケージをコピーする

  7. Visual Studio のローカルでサイトを実行します ( [デバッグ] > [デバッグなしで開始] を使用するか Ctrl キーを押しながら F5 キーを押します)。Run the site locally in Visual Studio (using Debug > Start Without Debugging or Ctrl+F5). ホーム ページには、パッケージ フィードの URL が次のように表示されます。The home page provides the package feed URLs as shown below. エラーが表示される場合は、手順 5 で説明したような重複する要素がないか web.config をよく確認します。If you see errors, carefully inspect your web.config for duplicate elements are noted earlier with step 5.

    NuGet.Server を使用したアプリケーションの既定のホーム ページ

  8. パッケージの OData フィードを表示するには、上記の囲まれた領域内にある [ここ] をクリックします。Click on here in the area outlined above to see the OData feed of packages.

  9. 初めてアプリケーションを実行すると、NuGet.Server では各パッケージにフォルダーが含まれるように、Packages フォルダーが再構築されます。The first time you run the application, NuGet.Server restructures the Packages folder to contain a folder for each package. これは、パフォーマンスを向上させるために、NuGet 3.3 で導入されたローカル記憶域のレイアウトに一致します。This matches the local storage layout introduced with NuGet 3.3 to improve performance. さらにパッケージを追加する場合、継続してこの構造に従います。When adding more packages, continue to follow this structure.

  10. ローカルの配置をテストしたら、必要に応じてアプリケーションをその他の内部または外部のサイトに展開します。Once you've tested your local deployment, deploy the application to any other internal or external site as needed.

  11. http://<domain> に展開されると、パッケージ ソースに使用する URL は http://<domain>/nuget になります。Once deployed to http://<domain>, the URL that you use for the package source will be http://<domain>/nuget.

パッケージ フォルダーを構成するConfiguring the Packages folder

NuGet.Server 1.5 以降を使用して、web.config 内の appSetting/packagesPath 値を使用して、パッケージ フォルダーをより具体的に構成できます。With NuGet.Server 1.5 and later, you can more specifically configure the package folder using the appSetting/packagesPath value in web.config:

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

packagesPath は絶対パスまたは仮想パスにすることができます。packagesPath can be an absolute or virtual path.

packagesPath が省略された場合、または空白のままの場合は、パッケージ フォルダーは既定の ~/Packages です。When packagesPath is omitted or left blank, the packages folder is the default ~/Packages.

パッケージを外部からフィードに追加するAdding packages to the feed externally

web.config で API キーの値を設定した場合、NuGet.Server サイトが実行されているときに、nuget push を使用してパッケージを追加できます。Once a NuGet.Server site is running, you can add packages using nuget push provided that you set an API key value in web.config.

NuGet.Server パッケージをインストールした後、web.config に空の appSetting/apiKey 値が含まれます。After installing the NuGet.Server package, web.config contains an empty appSetting/apiKey value:

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

apiKey が省略された場合、または空白の場合は、パッケージのフィードへのプッシュは無効になります。When apiKey is omitted or blank, pushing packages to the feed is disabled.

この機能を有効にするには、apiKey に値 (理想的には、強力なパスワード) を設定し、true の値を含む appSettings/requireApiKey と呼ばれるキーを追加します。To enable this capability, set the apiKey to a value (ideally a strong password) and add a key called appSettings/requireApiKey with the value of 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 キーが必要ない場合 (たとえば、ローカル チーム ネットワーク上でプライベート サーバーを使用している場合)、requireApiKeyfalse に設定できます。If your server is already secured or you do not otherwise require an API key (for example, when using a private server on a local team network), you can set requireApiKey to false. これで、サーバーへのアクセス権を持つすべてのユーザーは、パッケージをプッシュできるようになります。All users with access to the server can then push packages.

フィードからパッケージを削除するRemoving packages from the feed

NuGet.Server で、API キーをコメントに追加して nuget delete コマンドを実行すると、リポジトリからパッケージを削除できます。With NuGet.Server, the nuget delete command removes a package from the repository provided that you include the API key with the comment.

代わりにパッケージをリストから削除する (パッケージの復元のために使用できる状態のままにする) ように動作を変更する場合は、web.configenableDelisting キーを true に変更します。If you want to change the behavior to delist the package instead (leaving it available for package restore), change the enableDelisting key in web.config to true.

NuGet.Server のサポートNuGet.Server support

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