Überspringen von NuGet-Paketen in Quellcodeverwaltungssystemen

Entwickler veranlassen in der Regel, dass ihre Repositorys zur Quellcodeverwaltung NuGet-Pakete nicht berücksichtigen. Stattdessen verwenden die Entwickler die Paketwiederherstellung, um die Abhängigkeiten eines Projekts vor der Projekterstellung erneut zu installieren.

Lesen Sie hier einige Gründe, die für das Verwenden der Paketwiederherstellung sprechen:

  1. Verteilte Versionskontrollsysteme, z.B. Git, enthalten vollständige Kopien aller Versionen aller Repositorydateien. Wenn Binärdateien häufig aktualisiert werden, führt das zu enormer Überfrachtung und höherem Zeitaufwand beim Klonen des Repositorys.
  2. Wenn Pakete in einem Repository berücksichtigt werden, neigen Entwickler dazu, direkt auf Paketinhalte auf dem Datenträger zu verweisen, statt über NuGet auf Pakete zu verweisen. Dies kann im Projekt zu hartcodierten Pfadnamen führen.
  3. Es wird schwieriger, nicht verwendete Paketordner aus Ihrer Projektmappe zu entfernen, da Sie sicherstellen müssen, dass Sie keine Ordner löschen, die noch verwendet werden.
  4. Das Überspringen von Paketen erlaubt Ihnen eine klare Grenzziehung zwischen Ihrem Code und den von Ihnen benötigten Paketen anderer Personen. Viele NuGet-Pakete werden bereits in eigenen Repositorys zur Quellcodeverwaltung verwaltet.

Das Wiederherstellen von Paketen ist bei NuGet zwar standardmäßig eingestellt, es ist jedoch etwas Aufwand notwendig, damit Pakete – genauer gesagt der Ordner packages in Ihrem Projekt – von der Quellcodeverwaltung übersprungen werden. Dies wird in diesem Artikel beschrieben.

Überspringen von Paketen mit Git

Verwenden Sie die .gitignore-Datei, um u.a. NuGet-Pakete (.nupkg), den packages-Ordner und project.assets.json zu ignorieren. Schauen Sie sich als Referenz das Beispiel .gitignore für Visual Studio-Projekte an:

Folgende Teile der Datei .gitignore sind wichtig:

# 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

Überspringen von Paketen mithilfe von Team Foundation-Versionskontrolle

Hinweis

Befolgen Sie diese Anweisungen möglichst bevor Sie Ihr Projekt zur Quellcodeverwaltung hinzufügen. Löschen Sie andernfalls den Ordner packages manuell aus Ihrem Repository, und checken Sie diese Änderung ein, bevor Sie fortfahren.

So deaktivieren Sie mit TFVC die Integration der Quellcodeverwaltung für ausgewählte Dateien:

  1. Erstellen Sie im Projektmappenordner an der Stelle, an der sich die Datei .sln befindet, einen Ordner namens .nuget.

    • Tipp: Wenn Sie diesen Ordner unter Windows im Windows Explorer erstellen möchten, sollten Sie den Namen .nuget.inklusive des nachgestellten Punkts verwenden.
  2. Erstellen Sie in diesem Ordner eine Datei namens NuGet.Config und öffnen Sie diese zum Bearbeiten.

  3. Fügen Sie mindestens folgenden Text hinzu, damit Visual Studio durch die Einstellung disableSourceControlIntegration angewiesen wird, den Inhalt des Ordners packages zu überspringen:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <solution>
            <add key="disableSourceControlIntegration" value="true" />
        </solution>
    </configuration>
    
  4. Falls Sie TFS 2010 oder niedriger verwenden, müssen Sie den Ordner packages in Ihren Arbeitsbereichszuordnungen verdecken.

  5. Falls Sie TFS 2012 oder höher bzw. Visual Studio Team Services verwenden, müssen Sie eine Datei des Typs .tfignore erstellen, wie im Artikel zum Thema Hinzufügen von Dateien zum Server beschrieben. Kopieren Sie in diese Datei unten stehenden Text, damit Änderungen am Ordner \packages auf Repositoryebene sowie einige Zwischendateien explizit ignoriert werden. (Sie können die Datei in Windows Explorer unter dem Namen .tfignore. mit dem nachgestellten Punkt erstellen, müssen aber möglicherweise zuerst die Option „Hide known file extensions“ (Bekannte Erweiterungen ausblenden) deaktivieren.):

    # 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. Fügen Sie NuGet.Config und .tfignore zur Quellcodeverwaltung hinzu, und checken Sie die Änderungen ein.