Sebelum NuGet, adalah 'praktik terbaik' yang diterima secara umum untuk check-in semua DLL eksternal yang digunakan pada suatu proyek. Biasanya di direktori Libs
atau 3rdParty
.
Saat bekerja dengan NuGet, apakah saya harus memeriksa packages
direktori, atau adakah cara bagi MSBuild untuk mengunduh otomatis paket yang diperlukan dari umpan nuget?
version-control
msbuild
nuget
Scott Weinstein
sumber
sumber
Jawaban:
Tidak
Sejak pertanyaan ini ditanyakan, sekarang ada alur kerja yang mudah untuk menggunakan NuGet tanpa memasukkan paket ke kontrol sumber
Dari konsol manajer paket Anda, Anda perlu menginstal 'NuGetPowerTools' :
Kemudian untuk mengaktifkan proyek Anda untuk mendukung pemulihan paket, Anda perlu menjalankan perintah lain:
Sekarang Anda siap untuk memasukkan basis kode Anda tanpa folder paket. Perintah sebelumnya mengubah file proyek Anda sehingga jika ada paket yang hilang, mereka akan diunduh dan ditambahkan secara otomatis.
Sumber
Menggunakan NuGet tanpa memasukkan paket ke kontrol sumber
sumber
Enable NuGet Package Restore
,. Lihat dokumennya .Iya. Pertimbangkan direktori "paket" untuk setara dengan direktori "libs" yang Anda sebutkan dalam pertanyaan Anda. Ini adalah pendekatan yang saya ambil secara pribadi dengan proyek OSS saya.
Kami sedang menyelidiki fitur-fitur yang memungkinkan MSBuild mengunduh otomatis paket-paket yang dibutuhkan, tetapi itu belum diimplementasikan (mulai NuGet 1.1).
Saya pikir beberapa orang mungkin telah mengimplementasikan fitur-fitur tersebut sendiri, tetapi rencana kami adalah untuk melihat fitur tersebut dibangun di NuGet 1.2 atau 1.3 semoga.
sumber
Terlepas dari semua jawaban di sini, ini masih merupakan solusi yang mengerikan untuk tidak memiliki semua dependensi Anda di bawah "semacam" kontrol versi.
Untuk GIT, ini berarti GIT-LFS.
Episode terbaru dengan NPM menunjukkan alasannya: Jika repositori internet yang Anda andalkan rusak, tidak tersedia, dll., Maka Anda kacau bukan?
Anda tidak lagi dapat membuat barang - dan karena itu tidak dapat mengirimkannya.
sumber
npm
rusak karena tidak membatalkan daftar paket, itu benar-benar menghapusnya. NuGet tidak melakukan ini; jika pada titik tertentu Anda tidak dapat mengakses NuGet ada sesuatu yang tidak beres. Saya tidak berpikir bahwa menyimpan sembarang dependensi di git adalah solusi yang baik: cukup kunci dependensi Anda ke versi tertentu dan miliki cermin di antara Anda dan di internet jika itu penting bagi Anda.Sejak mengajukan pertanyaan tersebut, saya telah menerapkan pendekatan berikut sehingga saya tidak perlu memeriksa di direktori Paket toplovel .
Dalam file build.msbuild tingkat atas:
<Target Name="NuGet"> <ItemGroup> <NuGetPackage Include="*\packages.config" /> </ItemGroup> <Exec Command='libs\NuGet.exe install "%(NuGetPackage.FullPath)" -o Packages' /> <!-- optional for project that has JavaScript content --> <CreateItem Include="Packages\*\Content\Scripts\*"> <Output TaskParameter="Include" ItemName="NuGetJSFiles"/> </CreateItem> <Copy SourceFiles="@(NuGetJSFiles)" DestinationFolder="MainProj\Scripts\" OverwriteReadOnlyFiles="true" SkipUnchngedFiles="true" /> <Delete Files="MainProj\Scripts\.gitignore" /> <WriteLinesToFile File="MainProj\Scripts\.gitignore" Lines="%(NuGetJSFiles.Filename)%(NuGetJSFiles.Extension)" / <Delete Files="@(PostNuGetFiles)" /> </Target>
Di setiap file project.csproj
<Target Name="BeforeBuild"> <Error Condition="!Exists('..\Packages\')" Text="You must run > msbuild build.msbuild to download required NuGet Packages" /> <!-- optional for project that has JavaScript content --> <ReadLinesFromFile File="Scripts\.gitignore"> <Output TaskParameter="Lines" ItemName="ReqJSFiles" /> </ReadLinesFromFile> <Message Text="@(ReqJSFiles)" /> <Error Condition="!Exists('Scripts\%(ReqJSFiles.Identity)')" Text="You must run > msbuild build.msbuild to download required NuGet JS Package - Scripts\%(ReqJSFiles.Identity)" /> </Target>
sumber
Saya menyadari kenyataannya berbeda ketika pertanyaan ini awalnya diposting dan dijawab, tetapi untungnya jawabannya sedikit berubah. Sekarang dimungkinkan untuk menggunakan NuGet untuk mengunduh dependensi melalui MSBuild menggunakan acara Pra-Build. Anda tidak perlu meletakkan folder paket di repositori kode Anda, semua dependensi akan diunduh dan / atau diperbarui pada build. Ini mungkin solusi, tetapi terlihat cukup layak. Lihat entri blog berikut untuk detailnya: http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
sumber
PER 09/20/13, ada yang namanya "Nuget Restore". Anda sebenarnya tidak perlu memeriksa folder paket jika ingin melakukannya. (Terutama jika Anda menggunakan DVCS)
Lihat ini: Menggunakan NuGet Tanpa melakukan paket ke kontrol sumber http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
sumber
Posting ini sudah sangat usang. Jawabannya tetap TIDAK, tetapi solusinya telah berubah. Mulai NuGet 2.7+ Anda dapat mengaktifkan pemulihan paket otomatis tanpa menyertakan file NuGet.exe di sumber Anda (ini tidak diinginkan untuk sedikitnya) dan jika Anda menggunakan DVCS modern, Anda dapat mengabaikan folder paket. Jika Anda memerlukan kustomisasi khusus, Anda dapat membuat file nuget.config di root solusi.
http://docs.nuget.org/docs/reference/package-restore
Selain itu, dengan format csproj yang baru, Anda juga dapat menghindari file nuget.config tambahan karena sudah terintegrasi sekarang. Silakan lihat posting ini yang menjelaskan itu lebih baik:
Haruskah folder .nuget ditambahkan ke kontrol versi?
sumber