次の方法で共有


ソース管理システムでの NuGet パッケージの省略

開発者は通常、ソース管理リポジトリから NuGet パッケージを省略し、代わりに パッケージの復元 に依存して、ビルド前にプロジェクトの依存関係を再インストールします。

パッケージの復元に依存する理由は次のとおりです。

  1. Git などの分散バージョン管理システムには、リポジトリ内のすべてのファイルのすべてのバージョンの完全なコピーが含まれています。 頻繁に更新されるバイナリ ファイルは、大幅な肥大化を招き、リポジトリの複製にかかる時間が長くなります。
  2. パッケージがリポジトリに含まれている場合、開発者は NuGet を介してパッケージを参照するのではなく、ディスク上のパッケージコンテンツに直接参照を追加する責任を負います。これにより、プロジェクト内のパス名がハードコーディングされる可能性があります。
  3. 使用中のパッケージ フォルダーを削除しないようにする必要があるため、未使用のパッケージ フォルダーのソリューションをクリーンアップすることが困難になります。
  4. パッケージを省略すると、コードと依存している他のパッケージとの間で、所有権の境界がクリーンに維持されます。 多くの NuGet パッケージは、独自のソース管理リポジトリに既に保持されています。

パッケージの復元は NuGet の既定の動作ですが、この記事で説明するように、パッケージ (つまり、プロジェクト内の packages フォルダー) をソース管理から省略するには、手動で行う必要があります。

Git でのパッケージの省略

.gitignore ファイルを使用して、.nupkg フォルダーやpackagesなどの NuGet パッケージ (project.assets.json) を無視します。 参照については、 Visual Studio プロジェクトのサンプル .gitignore参照してください。

.gitignore ファイルの重要な部分は次のとおりです。

# Ignore NuGet Packages
*.nupkg

# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*

# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/

# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config

# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Ignore other intermediate files that NuGet might create. project.lock.json is used in conjunction
# with project.json (NuGet v3); project.assets.json is used in conjunction with the PackageReference
# format (NuGet v4 and .NET Core).
project.lock.json
project.assets.json

Team Foundation バージョン管理を使用してパッケージを省略する

可能であれば、ソース管理にプロジェクトを追加する 前に 、次の手順に従ってください。 それ以外の場合は、リポジトリから packages フォルダーを手動で削除し、その変更をチェックインしてから続行します。

選択したファイルに対して TFVC とのソース管理の統合を無効にするには:

  1. ソリューション フォルダー (.nuget ファイルがある場所) に、.slnという名前のフォルダーを作成します。

    • ヒント: Windows では、Windows エクスプローラーでこのフォルダーを作成するには、名前.nuget.末尾にドットを付けて使用します。
  2. そのフォルダーに、 NuGet.Config という名前のファイルを作成し、編集用に開きます。

  3. 次のテキストを最小限に追加します。 disableSourceControlIntegration 設定では、 packages フォルダー内のすべてをスキップするように Visual Studio に指示します。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <solution>
            <add key="disableSourceControlIntegration" value="true" />
        </solution>
    </configuration>
    
  4. TFS 2010 以前を使用している場合は、ワークスペース マッピング内の packages フォルダーをクロークします。

  5. TFS 2012 以降、または Visual Studio Team Services で、「.tfignoreファイルの追加」の説明に従って ファイルを作成します。 そのファイルに以下の内容を含め、リポジトリ レベルの \packages フォルダーとその他の中間ファイルの変更を明示的に無視します。 (Windows エクスプローラーで、末尾にドットが付いた .tfignore. の名前を使用してファイルを作成できますが、最初に [既知のファイル拡張子を非表示にする] オプションを無効にする必要がある場合があります。

    # Ignore NuGet Packages
    *.nupkg
    
    # Ignore the NuGet packages folder in the root of the repository. If needed, prefix 'packages'
    # with additional folder names if it's not in the same folder as .tfignore.   
    packages
    
    # Omit temporary files
    project.lock.json
    project.assets.json
    *.nuget.props
    
  6. ソース管理に NuGet.Config.tfignore を追加し、変更をチェックインします。