Tidak dapat memuat file atau perakitan 'Microsoft.Build.Framework' (VS 2017)

87

Ketika saya mencoba menjalankan perintah "update-database", saya mendapatkan pengecualian ini:

Tentukan tanda '-Verbose' untuk melihat pernyataan SQL yang diterapkan ke database target. System.IO.FileNotFoundException: Tidak dapat memuat file atau assembly 'Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' atau salah satu dependensinya. Sistem tidak dapat menemukan berkas yang dicari. Nama file: 'Microsoft.Build.Framework, Versi = 15.1.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: Pencatatan pengikatan perakitan dimatikan. Untuk mengaktifkan pencatatan kegagalan pengikatan perakitan, setel nilai registri [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) ke 1. Catatan: Ada beberapa penalti kinerja yang terkait dengan pengelogan kegagalan pengikatan assembly. Untuk mematikan fitur ini, hapus nilai registri [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Tidak dapat memuat file atau rakitan 'Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' atau salah satu dependensinya. Sistem tidak dapat menemukan file yang ditentukan.`

Oleksii Vorochenko
sumber
1
Dalam bahasa Jerman, pesan kesalahan ini berbunyi: "Die Datei oder Assembly" Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a "oder eine Abhängigkeit davon wurde nicht gefunden".
Uwe Keim

Jawaban:

93

Saya yakin saya memiliki masalah yang sama seperti Anda. Saya tidak menyimpan keseluruhan pesan kesalahan, tetapi pesan kesalahan saya disimpan

' Tidak dapat memuat file atau rakitan' Microsoft.Build.Framework, Versi = 15.1.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a 'atau salah satu dependensinya. Sistem tidak dapat menemukan berkas yang dicari. '

Saya menggunakan Visual Studio 2017 dan coba lakukan Update-Databasesetelahnya Add-Migration.

Untuk mengatasi masalah ini saya menutup Visual Studio dan membukanya kembali , lalu jalankan Update-Databasekembali.

Ini mungkin atau mungkin tidak menyelesaikan masalah Anda, tetapi saya pikir saya akan mempostingnya kalau-kalau itu bisa membantu.

Eightgate
sumber
6
Ya, tampaknya "Turn-It-Off-And-On-Again" adalah jalur yang benar menuju resolusi dalam kasus ini.
Darren Oster
16
Ini berfungsi tetapi saya tidak menganggapnya sebagai jawaban yang benar. Saya ingin memperbaikinya sekali dan selamanya, tanpa harus memulai ulang VS.
Stanislav
1
Ini terjadi setiap kali setelah migrasi sekarang dan ini membutuhkan reboot PC penuh agar berfungsi.
OverMars
3
Saya telah mencoba setiap solusi yang diusulkan. Tak satu pun dari mereka tampaknya menyelesaikan masalah secara permanen. Saya harus terus memulai ulang Visual Studio.
Augusto Barreto
4
Ini adalah masalah terbuka di Github di sini github.com/aspnet/EntityFramework6/issues/382
Bil Simser
99

Skrip build lokal kami menggunakan versi lama nuget.exe( 4.7.1.5393) untuk memulihkan paket NuGet. Kami mulai mendapatkan kesalahan ini setelah memperbarui ke versi Visual Studio 2019 16.5.0. Memperbarui ke versi terbaru nuget.exe( 5.4.0.6315) memperbaiki masalah kami.

nuget.exedapat diunduh di sini: https://www.nuget.org/downloads .

Corey Smith
sumber
27
Menghadapi tantangan itu ketika kami hanya menginstal VS2019 di server build. Untuk memperbaikinya di Azure DevOps, build ini berfungsi untuk meminta versi 5.4.0 di langkah penginstal alat NuGet.
Penatua Smash
3
Ditingkatkan dari 4.3.0 menjadi 5.6 di TeamCity saya. Ini memperbaiki masalah saya. Terima kasih!
Esaith
3
Ini dia. Terima kasih banyak! Beralih dari 4.4.1 ke 5.4.0.
DaleyKD
2
@ElderSmash Kami juga menggunakan build Azure DevOps. Dalam kasus kami, masalah diselesaikan dengan memperbarui langkah pemasang NuGet dari NuGetToolInstaller@0menjadi NuGetToolInstaller@1, bahkan tanpa menentukan versi yang lebih baru. Namun tidak yakin, apakah ini memperbaiki akar penyebab masalah atau perbaikan hanya efek samping dari membersihkan cache lokal.
MarkusM
2
@ElderSmash Itulah masalah dan solusi saya, terima kasih!
Danie
41

Akar penyebab masalah ini berasal dari jalur relatif di devenv.exe.configfile ke Microsoft.Build.Framework.dll(lihat tag xml).

Beberapa ekstensi Visual Studio mengubah direktori saat ini dan membuat jalur relatif tidak valid.

Untuk memperbaikinya, buka file ini di C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\direktori. dan ganti semua ..\..\MSBuild\15.0\Bin\dengan C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\.

Renaud Bancel
sumber
Saya menggunakan Visual Studio Professioal haruskah saya juga melakukan hal yang sama. Saya mendapatkan kesalahan ini beberapa kali?
Shan
Saya tidak memiliki folder MSBuild di bawah IDE (versi Komunitas), saya menyalin MSBuild saya dari "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community" dan tidak memperbaiki apa pun.
OverMars
1
Saya menggunakan 2017 Pro dan ini memperbaiki masalah untuk saya. +1
Tom Wright
2
Perhatikan bahwa jika Anda memperbarui VS2017 setelah melakukan perbaikan ini, Anda mungkin harus memperbarui devenv.exe.config lagi
Mike Peterson
2
Jawaban ini baru membantu saya untuk kedua kalinya - setelah memperbarui VS2017 Anda perlu melakukan ini lagi seperti yang dikatakan @MikePeterson.
James Monger
35

Saya telah menemukan solusi yang tampaknya menyelesaikan masalah untuk selamanya, setidaknya di lingkungan saya yang menjalankan VS 2017 Professional 15.5.2 dan Entity Framework 6.1.1.

Pada dasarnya, instal DLL (dengan beberapa yang terkait) ke GAC (Global Assembly Cache) dan masalah akan hilang.

Ikuti langkah ini:

  1. Tutup semua contoh yang berjalan dari Visual Studio 2017

  2. Luncurkan Prompt Perintah Pengembang Visual Studio 2017

  3. Ketik perintah berikut (ganti Professional dengan edisi Anda, baik Perusahaan atau Komunitas, atau sesuaikan jalur yang sesuai):

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Framework.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Engine.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Conversion.Core.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll"

gacutil /i "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll"
  1. Mulai ulang Visual Studio 2017

Intinya, GAC akan (dalam banyak kasus) diprioritaskan ketika .NET mencoba memuat DLL dan FileNotFoundException akan hilang karena DLL Anda sekarang akan diselesaikan melalui GAC.

Sekali lagi, ini berfungsi untuk saya dan ini hanya solusi, itu tidak akan menyelesaikan masalah inti itu sendiri tetapi setidaknya saya tidak harus memulai ulang VS sepanjang waktu ketika mencoba bekerja dengan migrasi EF, dan itu cukup baik untuk saya.

Tuan Lingua
sumber
1
Bekerja untuk saya juga. Prompt Perintah Pengembang Visual Studio 2017 ada di C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Visual Studio 2017 \ Visual Studio Tools dan harus dijalankan sebagai administrator.
David Létourneau
2
FYI - ini dapat menyebabkan masalah ketika microsoft Meningkatkan produk dan entri GAC menjadi tidak valid (versi yang lebih baru, atau perubahan jalur .. pro vs perusahaan, dll). Terutama masalah pada peningkatan ke 15.8.0 terbaru Jika proyek Anda tidak dimuat (karena telah menggunakan solusi ini), lihat di sini: developercommunity.visualstudio.com/content/problem/311136/…
Barry
11

Ini berhasil untuk saya - tampaknya masalah non-dukungan mulai tahun 2020.

Di Azure Build Pipeline> NuGet tool installerlangkah, ubah Version of NuGet.exe to installke versi yang lebih baru, seperti 5.4.0. Periksa versi di https://dist.nuget.org/tools.json .

Masalah hilang dan sekarang berhasil dibangun.

Alfred Wallace
sumber
Memperbarui versi nuget bekas juga merupakan cara untuk memperbaiki masalah bagi saya.
NP83
7

File saya yang hilang atau versi perakitan berbeda dengan pertanyaannya.

Saya mengalami kesalahan ini ketika saya mencoba untuk mempublikasikan proyek ASP.net saya

Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Saya memecahkan masalah dengan menginstal Microsoft Build Tools 2015

Saya pikir masalah saya disebabkan oleh saya mempublikasikan proyek yang dibangun dengan VS 2015 di VS 2017. Semoga dapat membantu orang lain yang memiliki masalah yang sama.

V-SHY
sumber
Ini membantu memperbaiki CI yang dibangun di TFS lokal untuk saya. Salah satu server build saya tidak memiliki alat ini dan terus gagal dengan masalah yang sangat mirip.
Budhead2004
4

Untuk berjaga-jaga jika me-restart Visual Studio tidak berhasil Pergi ke Task Manager / Process Explorer dan skill VBCSCompiler.exe

masukkan deskripsi gambar di sini

Sarankan menggunakan Process Explorer

bitsmonkey
sumber
1
Saya mencoba solusi ini "Kalau-kalau me-restart Visual Studio tidak berfungsi Buka Task Manager / Process Explorer dan skill VBCSCompiler.exe" dan berfungsi dengan baik.
Mohammad Jihad Helal
2

Menutup dan membuka kembali Visual Studio bekerja seperti pesona!

Masoud Darvishian
sumber
2

Dalam kasus saya, sesuatu (mungkin NuGet-Update) menambahkan AssemblyBinding ke dalam web.config-File:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" />
</dependentAssembly>

Setelah menghapus dependentAssemby-Entry tersebut, saya dapat Publikasikan Proyek lagi.

redM76
sumber
2

Ini berhasil untuk saya: Kesalahan terjadi saat saya menjalankan perintah nuget restore. Nuget versi 4.6.2. Saya punya dua cara untuk mengatasi masalah ini.

Gunakan Nuget 4.8.2 dan yang lebih tinggi. gacutil / i "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll

Yovanny Rodríguez
sumber
1

Kami mengalami masalah ini, dan inilah yang perlu kami lakukan dalam kasus kami:

Masalahnya adalah kita memiliki sebuah penghubung perintah database yang (IDbCommandInterceptor)dikonfigurasikan yang memanggil HttpRuntime.Cache["somekey"], dan untuk beberapa alasan perintah migrasi gagal dijalankan karena ini. Setelah menghilangkan ketergantungan ini, semua perintah berjalan dengan sempurna. Mungkin HttpRuntimetidak dapat menemukan dll Build Framework?

Jadi periksa seluruh callstack saat perintah migrasi gagal untuk melihat apakah Anda memiliki masalah serupa.

Øyvind Rask
sumber
Sangat menarik, pelacakan tumpukan saya menyertakan panggilan ke metode menggunakan HttpContext.Current. Menghapus ini menghilangkan masalah.
Timores
0

Saya menghadapi masalah yang sama ketika memperbarui komponen XCode / Mono di macOS.

Solusinya adalah memperbarui Visual Studio untuk Mac ke versi terbaru.

Saya pikir masalah itu menyebabkan penggunaan alat MSBuild baru dari paket .NET Core 3.0 yang diinstal dengan versi XCode / Mono baru.

picolino
sumber
0

Terima kasih untuk mereka yang sudah memposting. Situasi saya diselesaikan dengan kombinasi di atas. Saya telah memiliki beberapa versi Visual Studio: 2015, 2017, 2019. Pada titik tertentu versi MSBUILD berubah dari 15.1 menjadi 15.9, dan saya memecahkan masalah ini dengan memperbarui C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.configfile agar mengarah ke perpustakaan 15.9. Berikut adalah contoh salah satu entri:

<dependentAssembly>
      <assemblyIdentity name="Microsoft.Build.Utilities.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
      <bindingRedirect oldVersion="2.0.0.0-99.0.0.0" newVersion="15.9.0.0"/>
      <codeBase version="15.9.0.0" href="..\..\MSBuild\15.0\Bin\Microsoft.Build.Utilities.Core.dll" />
</dependentAssembly>
Chilberto
sumber
2
teladan Anda tampaknya telah lenyap.
Jammer
0

Menggunakan Visual Studio 2019 Community edition. Saya mencoba solusi lain tanpa banyak keberuntungan, tetapi setelah membersihkan cache NuGet saya, masalah tersebut tampaknya telah teratasi. masukkan deskripsi gambar di sini

JDandChips
sumber
0

Setelah mencoba semua metode di atas dan banyak lagi - menjalankan WCFaplikasi masih gagal untuk saya. Kesalahan: Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0..

catatan: mencoba Restart VS, PC, mematikan proses, membersihkan cache VS, cache nuget, obj, bin, .vs, folder paket

Apa yang berhasil untuk saya adalah menghapus file proyek *.csproj.user.. Rupanya ada beberapa konfigurasi usang di dalamnya. Kehilangan 4 jam mencoba mencari tahu ..

Alex
sumber
0

Saya melakukan restart, setelah itu saya menemukan bahwa layanan web lokal yang saya jalankan diblokir oleh proses lain yang mengambil port itu. Saya memeriksa proses yang sedang berjalan dan mematikan proses menggunakan TCPView dan semua sepertinya mulai bekerja lagi.

SharpC
sumber