Paket geri yükleme hatalarını giderme
Bu makale, paketleri geri yüklerken sık karşılaşılan hatalara ve bunları çözme adımlarına odaklanır.
Paket Geri Yükleme, tüm paket bağımlılıklarını proje dosyanızdaki (.csproj) veya packages.config dosyanızdaki paket başvurularıyla eşleşen doğru duruma yüklemeyi dener. (Visual Studio'da, başvurular Çözüm Gezgini içinde Dependencies \ NuGet veya References düğümü altında görünür.) Paketleri geri yüklemek için gerekli adımları izlemek için bkz. Paketleri geri yükleme. Proje dosyanızdaki (.csproj) paket başvuruları veya packages.config dosyanız yanlışsa (Paket Geri Yükleme'nin ardından istediğiniz durumla eşleşmiyorsa), Paket Geri Yükleme'yi kullanmak yerine paketleri yüklemeniz veya güncelleştirmeniz gerekir.
Buradaki yönergeler size uygun değilse, senaryonuzu daha dikkatli inceleyebilmemiz için lütfen GitHub bir sorun oluşturun. Daha fazla bilgi için sizinle iletişim kurmamıza olanak sağlamadığından, bu sayfada görünen "Bu sayfa yararlı mı?" denetimini kullanmayın.
Visual Studio kullanıcıları için hızlı çözüm
Visual Studio kullanıyorsanız, önce paket geri yüklemeyi aşağıdaki gibi etkinleştirin. Aksi takdirde, izleyen bölümlere geçin.
- Araçlar > NuGet Paket Yöneticisi > Paket Yöneticisi Ayarlar menü komutunu seçin.
- Paket Geri Yükleme altında her iki seçeneği de ayarlayın.
- Tamam’ı seçin.
- Projenizi yeniden oluşturun.
Bu ayarlar dosyanızda NuGet.Config
da değiştirilebilir; onay bölümüne bakın. Projeniz MSBuild tümleşik paket geri yüklemesini kullanan eski bir projeyse, otomatik paket geri yüklemesine geçmeniz gerekebilir.
Bu proje, bu bilgisayarda eksik olan NuGet pakete başvurur
Tamamlandı hata iletisi:
This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. The missing file is {name}.
Bu hata, bir veya daha fazla NuGet paketine başvuru içeren bir proje oluşturmaya çalıştığınızda oluşur, ancak bu paketler bilgisayarda veya projede yüklü değildir.
- PackageReference yönetim biçimi kullanılırken, bu hata packages.config PackageReference geçişine kalan bir hata olabilir ve proje dosyasından el ile kaldırılması gerekir.
- packages.configkullanırken hata, paketin çözüm kökündeki
packages
klasöre yüklenmediği anlamına gelir.
Bu durum genellikle projenin kaynak kodunu kaynak denetiminden veya başka bir indirmeden aldığınızda oluşur. Paketler genellikle kaynak denetiminden veya indirmelerden atlanır çünkü nuget.org gibi paket akışlarından geri yüklenebilirler (bkz . Paketler ve kaynak denetimi). Bunları dahil ederek depoyu şişirebilirsiniz veya gereksiz büyük .zip dosyaları oluşturabilirsiniz.
Proje dosyanız paket konumlarının mutlak yollarını içeriyorsa ve projeyi taşırsanız da hata oluşabilir.
Paketleri geri yüklemek için aşağıdaki yöntemlerden birini kullanın:
- Proje dosyasını taşıdıysanız, paket başvurularını güncelleştirmek için dosyayı doğrudan düzenleyin.
- Visual Studio (otomatik geri yükleme veya el ile geri yükleme)
- dotnet CLI
- nuget.exe CLI
- MSBuild
- Azure Pipelines
- Azure DevOps Server
Başarılı bir geri yüklemeden sonra paket genel paketler klasöründe bulunmalıdır. PackageReference kullanan projeler için, geri yükleme dosyasını yeniden oluşturmalıdır obj/project.assets.json
; kullanan packages.config
projeler için paket projenin packages
klasöründe görünmelidir. Proje artık başarıyla derlenmelidir. Aksi takdirde, sizi takip edebilmemiz için GitHub bir sorun bildirin.
Assets file project.assets.json bulunamadı
Tamamlandı hata iletisi:
Assets file '<path>\project.assets.json' not found. Run a NuGet package restore to generate this file.
Dosya, project.assets.json
packageReference yönetim biçimini kullanırken projenin bağımlılık grafiğini korur ve bu, gerekli tüm paketlerin bilgisayara yüklendiğinden emin olmak için kullanılır. Bu dosya, paket geri yükleme aracılığıyla dinamik olarak oluşturulduğundan, genellikle kaynak denetimine eklenmez. Sonuç olarak bu hata, paketleri otomatik olarak geri yüklemeyen bir araçla msbuild
proje oluştururken oluşur.
Bu durumda, komutunu ve ardından komutunu çalıştırın msbuild -t:restore
veya kullanın dotnet build
(paketleri otomatik olarak geri msbuild
yükler). Önceki bölümdeki paket geri yükleme yöntemlerinden herhangi birini de kullanabilirsiniz.
Bir veya daha fazla NuGet paketinin geri yüklenmesi gerekiyor, ancak onay verilmediği için geri yüklenemedi
Tamamlandı hata iletisi:
One or more NuGet packages need to be restored but couldn't be because consent has
not been granted. To give consent, open the Visual Studio Options dialog, click on
the NuGet Package Manager node and check 'Allow NuGet to download missing packages
during build.' You can also give consent by setting the environment variable
'EnableNuGetPackageRestore' to 'true'. Missing packages: {name}
Bu hata, NuGet yapılandırmanızda paket geri yüklemenin devre dışı bırakıldığını gösterir.
Visual Studio kullanıcıları için hızlı çözüm altında daha önce açıklandığı gibi Visual Studio'da ilgili ayarları değiştirebilirsiniz.
Bu ayarları doğrudan ilgili nuget.config
dosyada da düzenleyebilirsiniz (genellikle %AppData%\NuGet\NuGet.Config
Windows ve ~/.nuget/NuGet/NuGet.Config
Mac/Linux'ta). altındaki packageRestore
ve automatic
tuşlarının enabled
True olarak ayarlandığından emin olun:
<!-- Package restore is enabled -->
<configuration>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
</configuration>
Önemli
Ayarları doğrudan içinde nuget.config
düzenlersenizpackageRestore
, seçenekler iletişim kutusunun geçerli değerleri göstermesi için Visual Studio yeniden başlatın.
Diğer olası koşullar
Eksik dosyalar nedeniyle derleme hatalarıyla karşılaşabilirsiniz ve bunları indirmek için NuGet geri yükleme özelliğini kullanmanız gerekir. Ancak, bir geri yükleme çalıştırıldığında "Tüm paketler zaten yüklü ve geri yüklenecek bir şey yok" ifadesi yer alabilir. Bu durumda, klasörü (kullanırken
packages.config
) veyaobj/project.assets.json
dosyayı (PackageReference kullanırken) silinpackages
ve geri yüklemeyi yeniden çalıştırın. Hata yine de devam ederse, genel paketleri ve önbellek klasörlerini genel paketleri ve önbellek klasörlerini yönetme konusunda açıklandığı gibi temizlemek için komut satırından veyadotnet nuget locals all --clear
kullanınnuget locals all -clear
.Kaynak denetiminden bir proje alırken, proje klasörleriniz salt okunur olarak ayarlanabilir. Klasör izinlerini değiştirin ve paketleri geri yüklemeyi yeniden deneyin.
NuGet eski bir sürümünü kullanıyor olabilirsiniz. Önerilen en son sürümler için nuget.org/downloads denetleyin. Visual Studio 2015 için 3.6.0'ı öneririz.
Başka sorunlarla karşılaşırsanız, sizden daha fazla ayrıntı alabilmemiz için GitHub bir sorun oluşturun.