Bagikan melalui


Menghilangkan paket NuGet dalam sistem kontrol sumber

Pengembang biasanya menghilangkan paket NuGet dari repositori kontrol sumber mereka dan mengandalkan pemulihan paket untuk menginstal ulang dependensi proyek sebelum build.

Alasan mengandalkan pemulihan paket meliputi hal berikut:

  1. Sistem kontrol versi terdistribusi, seperti Git, menyertakan salinan lengkap dari setiap versi setiap file dalam repositori. File biner yang sering diperbarui menyebabkan kembung yang signifikan dan memperpanjang waktu yang diperlukan untuk mengkloning repositori.
  2. Ketika paket disertakan dalam repositori, pengembang bertanggung jawab untuk menambahkan referensi langsung ke konten paket pada disk daripada mereferensikan paket melalui NuGet, yang dapat menyebabkan nama jalur yang dikodekan secara permanen dalam proyek.
  3. Menjadi lebih sulit untuk membersihkan solusi Anda dari folder paket yang tidak digunakan, karena Anda perlu memastikan Anda tidak menghapus folder paket apa pun yang masih digunakan.
  4. Dengan menghilangkan paket, Anda mempertahankan batas kepemilikan yang bersih antara kode Anda dan paket dari orang lain yang Anda andalkan. Banyak paket NuGet dipertahankan di repositori kontrol sumber mereka sendiri.

Meskipun pemulihan paket adalah perilaku default dengan NuGet, beberapa pekerjaan manual diperlukan untuk menghilangkan paket—yaitu, packages folder dalam proyek Anda—dari kontrol sumber, seperti yang dijelaskan dalam artikel ini.

Menghilangkan paket dengan Git

Gunakan file .gitignore untuk mengabaikan paket NuGet (.nupkg) packages folder, dan project.assets.json, antara lain. Untuk referensi, lihat sampel .gitignore untuk proyek Visual Studio:

Bagian penting dari .gitignore file adalah:

# 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

Menghilangkan paket dengan Kontrol Versi Team Foundation

Catatan

Ikuti instruksi ini jika memungkinkan sebelum menambahkan proyek Anda ke kontrol sumber. Jika tidak, hapus packages folder secara manual dari repositori Anda dan periksa perubahan tersebut sebelum melanjutkan.

Untuk menonaktifkan integrasi kontrol sumber dengan TFVC untuk file yang dipilih:

  1. Buat folder yang dipanggil .nuget di folder solusi Anda (tempat .sln file berada).

    • Tips: di Windows, untuk membuat folder ini di Windows Explorer, gunakan nama .nuget. dengan titik berikutnya.
  2. Di folder tersebut, buat file bernama NuGet.Config dan buka untuk pengeditan.

  3. Tambahkan teks berikut sebagai minimum, di mana pengaturan disableSourceControlIntegration menginstruksikan Visual Studio untuk melewati semua yang ada packages di folder:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <solution>
            <add key="disableSourceControlIntegration" value="true" />
        </solution>
    </configuration>
    
  4. Jika Anda menggunakan TFS 2010 atau yang lebih lama, tutup packages folder di pemetaan ruang kerja Anda.

  5. Pada TFS 2012 atau yang lebih baru, atau dengan Visual Studio Team Services, buat file seperti yang .tfignore dijelaskan pada Tambahkan File ke Server. Dalam file tersebut, sertakan konten di bawah ini untuk secara eksplisit mengabaikan modifikasi ke \packages folder pada tingkat repositori dan beberapa file perantara lainnya. (Anda dapat membuat file di Windows Explorer menggunakan nama a .tfignore. dengan titik berikutnya, tetapi Anda mungkin perlu menonaktifkan opsi "Sembunyikan ekstensi file yang diketahui" terlebih dahulu.):

    # 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. Tambahkan NuGet.Config dan .tfignore ke kontrol sumber dan periksa perubahan Anda.