Saya telah menyalin proyek saya ke mesin Windows 10 yang bersih dengan hanya Visual Studio 2015 Community dan SQL Server 2016 Express yang diinstal. Tidak ada versi kerangka kerja lain yang diinstal selain yang diinstal dengan Windows 10 dan VS2015 atau SQL Server.
Ketika saya mencoba memulai proyek WebApi saya mendapatkan pesan:
Tidak dapat memuat file atau rakitan "System.Net.Http, Versi = 4.0.0.0, Culture = netral, PublicKeyToken = b03f5f7f11d50a3a" atau salah satu dari ketergantungannya. Sistem tidak dapat menemukan berkas yang dicari.
Paket-paket proyek meliputi:
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Tracing" version="5.2.3" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />
Setelah membangun proyek dengan .NET Framework 4.6.1, System.Net.Http
file tidak ditemukan di bin
folder.
Jalur file menunjuk ke:
C: \ Program Files (x86) \ Assemblies Referensi \ Microsoft \ Framework.NETFramework \ v4.6.1 \ System.Net.Http.dll
Jalur file System.Net.Http.Formatting
menunjuk ke:
C: \ Development \ MyApp \ Packages \ Microsoft.AspNet.WebApi.Client.5.2.3 \ lib \ net45 \ System.Net.Http.Formatting.dll
Haruskah seluruh target proyek 4.5.1 atau adakah cara lain untuk merujuk majelis yang tepat?
sumber
update-package xxx -reinstall
untuk semua paket nuget yang saya gunakan. Itu juga tidak berhasil.Jawaban:
Ikuti langkah-langkah berikut,
web.config
Tambahkan ini ke
.csproj
file:bin
folder itu harus ada(WebAppName).dll.config
fileweb.config
.csproj
fileItu harus bekerja
sumber
Mengubah informasi yang mengikat di web.config saya (atau app.config) - sementara "hack" dalam pandangan saya, memungkinkan Anda untuk bergerak maju dengan proyek Anda setelah paket NuGet memperbarui aplikasi Anda dan memberi Anda System.Net.Http kesalahan.
Set newVersion = "4.0.0.0"
sumber
Di salah satu proyek saya ada paket nuget dengan versi System.Net.Http yang lebih tinggi. dan dalam proyek startup saya ada referensi untuk System.Net.Http v 4.0.0, saya baru saja menginstal paket nuget System.Net.Http dalam proyek startup saya dan masalah terpecahkan
sumber
A
,B
danC
.A
adalah proyek startup, dan tidak ada hubungannya dengan salah satuB
atauC
.C
adalah proyek uji untukB
. Menjalankan tes sayaC
gagal, karena saya tidak punya proyek referensi (System.Net.Http)A
.Ubah yang berikut:
dengan yang berikut ini:
di web.config
sumber
Jika Anda memiliki beberapa proyek dalam solusi Anda, kemudian klik kanan pada ikon solusi di Visual Studio dan pilih 'Kelola Paket NuGet untuk Solusi', lalu klik pada tab keempat 'Konsolidasi' untuk mengkonsolidasikan semua proyek Anda ke versi yang sama dari DLL. Ini akan memberi Anda daftar majelis referensi untuk dikonsolidasikan. Klik pada setiap item dalam daftar, lalu klik instal pada tab yang muncul di sebelah kanan.
sumber
Bind-redirect di atas tidak berfungsi untuk saya, jadi saya berkomentar referensi
System.Net.Http
diweb.config
. Segalanya tampak berjalan baik tanpa itu.sumber
Anda dapat memperbaikinya dengan memutakhirkan proyek Anda ke .NET Framework 4.7.2. Ini dijawab oleh Alex Ghiondea - MSFT . Tolong angkat dia karena dia benar-benar layak mendapatkannya!
sumber
Ini akan bekerja di .NET 4.7.2 dengan Visual Studio 2017 (15.9.4):
sumber
Saya memiliki masalah yang sama dan satu-satunya cara bagaimana saya dapat memperbaikinya adalah menambahkan bindingRedirect ke app.confing bagaimana wrote @ tripletdad99.
Tetapi jika Anda memiliki solusi dengan lebih banyak proyek benar-benar menyedot pembaruan setiap proyek dengan tangan (dan juga kadang-kadang setelah memperbarui beberapa paket nuget Anda perlu melakukannya lagi). Dan itu adalah alasan mengapa saya menulis skrip PowerShell sederhana yang jika semua app.configs.
Contoh cara menggunakan:
Mungkin itu tidak sempurna dan juga akan lebih baik jika seseorang menghubungkannya dengan tugas pra-bangun.
sumber
4.6.1-2 di VS2017 pengguna dapat mengalami penggantian yang tidak diinginkan dari versi System.Net.Http mereka dengan yang ingin digunakan oleh VS2017 atau Msbuild 15.
Kami menghapus versi ini di sini:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ net461 \ lib \ System.Net.Http.dll
dan di sini:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ Microsoft.NET.Build.Extensions \ net461 \ lib \ System.Net.Http.dll
Kemudian proyek dibangun dengan versi yang telah kami rujuk melalui NuGet.
sumber
Saya punya ini, tapi, itu karena saya telah menambahkan paket NuGet yang telah memperbarui pengalihan yang mengikat. Setelah saya menghapus paket itu, arahan ulang masih ada. Saya menghapus semuanya, dan kemudian menjalankan pembaruan-paket-instal. Ini menambahkan pengalihan yang benar.
sumber
Periksa versi .net framework.
Kerangka kerja .net asli saya adalah versi yang lebih lama.
Setelah saya menginstal .net framework 4.6, masalah ini secara otomatis diselesaikan.
sumber
Bagi saya, saya telah mengatur proyek saya untuk berjalan pada versi terbaru .Net Framework (perubahan dari .Net Framework 4.6.1 ke 4.7.2).
Semuanya berfungsi, tidak ada kesalahan dan diterbitkan tanpa masalah, dan hanya kebetulan saya menemukan pesan kesalahan System.Net.Http, ditampilkan dalam permintaan API kecil, sulit untuk diketahui, tetapi cukup penting di situs web saya. sedang mengerjakan.
Saya kembali ke 4.6.1 dan semuanya baik-baik saja lagi.
sumber
Satu-satunya cara yang dengan bersih menyelesaikan masalah ini untuk saya (.NET 4.6.1) adalah tidak hanya menambahkan referensi Nuget ke System.Net.Http V4.3.4 untuk proyek yang benar-benar menggunakan System.Net.Http, tetapi juga ke proyek startup (proyek uji dalam kasus saya).
(Yang aneh, karena System.Net.Http.dll yang benar ada di direktori bin dari proyek pengujian dan .config assemblyBingings tampak OK juga.)
sumber
Sedang memperbarui situs web lama menggunakan nuget (termasuk pembaruan .Net dan pembaruan MVC).
Saya menghapus referensi System.Net.HTTP di VS2017 (itu ke versi 2.0.0.0) dan menambahkan kembali referensi, yang kemudian menunjukkan 4.2.0.0.
Saya kemudian memperbarui satu ton 'paket' menggunakan nuget dan mendapatkan pesan kesalahan, kemudian melihat ada sesuatu yang mengatur ulang referensi ke 2.0.0.0, jadi saya menghapus dan menambahkan lagi dan berfungsi dengan baik ... aneh.
sumber