Vynechání balíčků NuGet v systémech správy zdrojového kódu

Vývojáři obvykle vynechají balíčky NuGet ze svých úložišť správy zdrojového kódu a spoléhají místo toho na obnovení balíčku, aby před sestavením přeinstalovali závislosti projektu.

Mezi důvody, proč se spoléhat na obnovení balíčku, patří:

  1. Distribuované systémy správy verzí, jako je Git, zahrnují úplné kopie každé verze každého souboru v úložišti. Binární soubory, které se často aktualizují, vedou k významnému bloudu a prodlužují dobu potřebnou ke klonování úložiště.
  2. Pokud jsou balíčky zahrnuté v úložišti, mohou vývojáři přidávat odkazy přímo na obsah balíčku na disku místo odkazování na balíčky prostřednictvím NuGetu, což může vést k pevně zakódovaným názvům cest v projektu.
  3. Je obtížnější vyčistit řešení všech nepoužívaných složek balíčků, protože potřebujete zajistit, abyste neodstranili žádné složky balíčků, které se stále používají.
  4. Vynecháním balíčků zachováte čisté hranice vlastnictví mezi kódem a balíčky od ostatních, na které závisíte. Mnoho balíčků NuGet se udržuje ve svých vlastních úložištích správy zdrojového kódu.

I když je obnovení balíčku výchozím chováním nuGetu, je nutné některé ruční práce vynechat balíčky – konkrétně packages složku v projektu – ze správy zdrojového kódu, jak je popsáno v tomto článku.

Vynechání balíčků pomocí Gitu

Pomocí souboru .gitignore ignorujte balíčky NuGet (.nupkg) packages složku a project.assets.jsonmimo jiné. Referenční informace najdete v ukázce .gitignore projektů sady Visual Studio:

Důležité části .gitignore souboru jsou:

# 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

Vynechání balíčků pomocí Správa verzí Team Foundation

Poznámka:

Pokud je to možné , před přidáním projektu do správy zdrojového kódu postupujte podle těchto pokynů. Jinak ručně odstraňte packages složku z úložiště a před pokračováním se změnami změny se změnami.

Zakázání integrace správy zdrojového kódu s TFVC pro vybrané soubory:

  1. Ve složce řešení vytvořte složku s názvem .nuget (kde .sln je soubor).

    • Tip: Pokud chcete ve Windows vytvořit tuto složku v Průzkumníku Windows, použijte název .nuget.s koncovou tečkou.
  2. V této složce vytvořte soubor s názvem NuGet.Config a otevřete ho pro úpravy.

  3. Přidejte následující text jako minimum, kde nastavení disableSourceControlIntegration dává sadě Visual Studio pokyn, aby přeskočí všechno ve packages složce:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <solution>
            <add key="disableSourceControlIntegration" value="true" />
        </solution>
    </configuration>
    
  4. Pokud používáte TFS 2010 nebo starší, zakryjte packages složku do mapování pracovních prostorů.

  5. V TFS 2012 nebo novějším nebo v sadě Visual Studio Team Services vytvořte .tfignore soubor, jak je popsáno v části Přidat soubory na server. Do tohoto souboru zahrňte níže uvedený obsah, abyste explicitně ignorovali úpravy \packages složky na úrovni úložiště a několik dalších zprostředkujících souborů. (Soubor můžete vytvořit v Průzkumníku Windows pomocí názvu s koncovou tečkou .tfignore. , ale možná budete muset nejdřív zakázat možnost Skrýt známé přípony souborů.):

    # 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. Přidejte NuGet.Config do správy zdrojového kódu a .tfignore zkontrolujte změny.