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:
- 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.
- 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.
- 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.
- 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:
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.
- Tips: di Windows, untuk membuat folder ini di Windows Explorer, gunakan nama
Di folder tersebut, buat file bernama
NuGet.Config
dan buka untuk pengeditan.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>
Jika Anda menggunakan TFS 2010 atau yang lebih lama, tutup
packages
folder di pemetaan ruang kerja Anda.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
Tambahkan
NuGet.Config
dan.tfignore
ke kontrol sumber dan periksa perubahan Anda.