ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'Microsoft.Build.Framework' (VS 2017)


87

เมื่อฉันลองเรียกใช้คำสั่ง "update-database" ฉันได้รับข้อยกเว้นนี้:

ระบุแฟล็ก '-Verbose' เพื่อดูคำสั่ง SQL ที่ใช้กับฐานข้อมูลเป้าหมาย System.IO.FileNotFoundException: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'Microsoft.Build.Framework เวอร์ชัน = 15.1.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = b03f5f7f11d50a3a' หรือการอ้างอิงอย่างใดอย่างหนึ่ง ระบบไม่พบแฟ้มที่ระบุ. ชื่อไฟล์: 'Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: การบันทึกการรวมแอสเซมบลีถูกปิดอยู่ เมื่อต้องการเปิดใช้งานการบันทึกความล้มเหลวในการผูกแอสเซมบลีให้ตั้งค่ารีจิสทรี [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) เป็น 1 หมายเหตุ: มีการลงโทษด้านประสิทธิภาพบางอย่างที่เกี่ยวข้อง หากต้องการปิดคุณลักษณะนี้ให้ลบค่ารีจิสทรี [HKLM \ Software \ Microsoft \ Fusion! EnableLog]

ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'Microsoft.Build.Framework, Version = 15.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' หรือการอ้างอิงอย่างใดอย่างหนึ่ง ระบบไม่พบไฟล์ที่ระบุ


1
ในภาษาเยอรมันข้อความแสดงข้อผิดพลาดนี้อ่านว่า: "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

คำตอบ:


93

ฉันเชื่อว่าฉันมีปัญหาเดียวกันกับคุณ ฉันไม่ได้บันทึกข้อความแสดงข้อผิดพลาดทั้งหมด แต่ข้อความแสดงข้อผิดพลาดของฉันคือ

' ไม่สามารถโหลดไฟล์หรือแอสเซมบลี' Microsoft.Build.Framework, เวอร์ชัน = 15.1.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = b03f5f7f11d50a3a 'หรือการอ้างอิงอย่างใดอย่างหนึ่ง ระบบไม่พบแฟ้มที่ระบุ. '

ฉันใช้ Visual Studio 2017 และพยายามทำUpdate-DatabaseหลังจากAdd-Migrationนั้น

ในการแก้ไขปัญหาฉันปิด Visual Studio แล้วเปิดใหม่จากนั้นรันUpdate-Databaseใหม่อีกครั้ง

วิธีนี้อาจแก้ปัญหาของคุณได้หรือไม่ก็ได้ แต่ฉันคิดว่าจะโพสต์ไว้เผื่อว่าจะช่วยได้


6
ใช่ดูเหมือนว่า "Turn-It-Off-And-On-อีกครั้ง" เป็นเส้นทางที่ถูกต้องในการแก้ปัญหาในกรณีนี้
Darren Oster

16
วิธีนี้ใช้ได้ผล แต่ฉันไม่ถือว่าเป็นคำตอบที่ถูกต้อง ฉันต้องการแก้ไขครั้งเดียวและตลอดไปโดยไม่ต้องรีสตาร์ท VS
Stanislav

1
มันเกิดขึ้นทุกครั้งหลังจากการย้ายข้อมูลในขณะนี้และต้องรีบูตเครื่องพีซีแบบเต็มเพื่อให้ทำงานได้
OverMars

3
ฉันได้ลองใช้วิธีแก้ปัญหาที่เสนอมาทั้งหมดแล้ว ดูเหมือนจะไม่มีใครแก้ปัญหาได้อย่างถาวร ฉันต้องรีสตาร์ท Visual Studio ต่อไป
Augusto Barreto

4
นี่เป็นปัญหาที่เปิดอยู่ใน Github ที่นี่github.com/aspnet/EntityFramework6/issues/382
Bil Simser

99

สคริปต์บิลด์ในเครื่องของเราใช้nuget.exe( 4.7.1.5393) เวอร์ชันเก่ากว่าเพื่อกู้คืนแพ็คเกจ NuGet เราเริ่มต้นได้รับข้อผิดพลาดนี้หลังจากการปรับปรุงเพื่อ Visual Studio 2019 16.5.0รุ่น การอัปเดตnuget.exe( 5.4.0.6315) เป็นเวอร์ชันล่าสุดได้แก้ไขปัญหาให้เราแล้ว

nuget.exeสามารถดาวน์โหลดได้ที่นี่: https://www.nuget.org/downloads


27
เผชิญกับความท้าทายนั้นเมื่อเราติดตั้งเฉพาะ VS2019 บนเซิร์ฟเวอร์บิลด์ ในการแก้ไขปัญหานี้ใน Azure DevOps ของเราการสร้างจะทำงานเพื่อขอเวอร์ชัน 5.4.0 ในขั้นตอนการติดตั้งเครื่องมือ NuGet
Elder Smash

3
อัปเกรดจาก 4.3.0 เป็น 5.6 ใน TeamCity ของฉัน สิ่งนี้ช่วยแก้ปัญหาของฉันได้ ขอบคุณ!
Esaith

3
นี่คือมัน ขอบคุณมาก! เปลี่ยนจาก 4.4.1 เป็น 5.4.0
DaleyKD

2
@ElderSmash เรากำลังใช้งาน Azure DevOps ด้วย ในกรณีของเราปัญหาได้รับการแก้ไขโดยการอัปเดตขั้นตอนการติดตั้ง NuGet จากNuGetToolInstaller@0ถึงNuGetToolInstaller@1แม้ว่าจะไม่ได้ระบุเวอร์ชันที่ใหม่กว่าก็ตาม ไม่แน่ใจว่าสิ่งนี้จะแก้ไขสาเหตุของปัญหาหรือไม่หรือการแก้ไขเป็นเพียงผลข้างเคียงของการล้างแคชภายในเครื่อง
MarkusM

2
@ElderSmash นั่นคือปัญหาและวิธีแก้ปัญหาของฉันขอบคุณ!
Danie

41

ต้นตอของปัญหานี้มาจากพา ธ สัมพัทธ์ในdevenv.exe.configไฟล์ถึงMicrosoft.Build.Framework.dll(ดูแท็ก xml)

Visual Studio Extensions บางรายการกำลังเปลี่ยนไดเร็กทอรีปัจจุบันและทำให้พา ธ สัมพัทธ์ไม่ถูกต้อง

ในการแก้ไขให้เปิดไฟล์นี้ในC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ไดเร็กทอรี และแทนที่ทั้งหมดโดย..\..\MSBuild\15.0\Bin\C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\


ฉันใช้ Visual Studio Professioal ก็ควรทำเช่นเดียวกัน ฉันได้รับข้อผิดพลาดนี้หลายครั้ง?
Shan

ฉันไม่มีโฟลเดอร์ MSBuild ภายใต้ IDE (เวอร์ชันชุมชน) ฉันคัดลอก MSBuild จาก "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community" และไม่ได้แก้ไขอะไรเลย
OverMars

1
ฉันใช้ 2017 Pro และสิ่งนี้แก้ไขปัญหาให้ฉันได้ +1
Tom Wright

2
โปรดทราบว่าหากคุณอัปเดต VS2017 หลังจากทำการแก้ไขแล้วคุณอาจต้องอัปเดต devenv.exe.config อีกครั้ง
Mike Peterson

2
คำตอบนี้ช่วยฉันได้เป็นครั้งที่สอง - หลังจากอัปเดต VS2017 คุณต้องทำสิ่งนี้อีกครั้งตามที่ @MikePeterson กล่าว
James Monger

35

ฉันพบวิธีแก้ปัญหาที่ดูเหมือนจะแก้ไขปัญหาได้ดีอย่างน้อยในสภาพแวดล้อมของฉันที่ใช้ VS 2017 Professional 15.5.2 และ Entity Framework 6.1.1

โดยทั่วไปให้ติดตั้ง DLL (ที่เกี่ยวข้องกันเล็กน้อย) ลงใน GAC (Global Assembly Cache) แล้วปัญหาจะหายไป

ทำตามขั้นตอนเหล่านี้:

  1. ปิดอินสแตนซ์ที่ทำงานอยู่ทั้งหมดของ Visual Studio 2017

  2. เรียกใช้พรอมต์คำสั่งสำหรับนักพัฒนา Visual Studio 2017

  3. พิมพ์คำสั่งต่อไปนี้ (แทนที่ Professional ด้วยรุ่นของคุณไม่ว่าจะเป็น Enterprise หรือ Community หรือปรับเส้นทางให้เหมาะสม):

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. รีสตาร์ท Visual Studio 2017

โดยพื้นฐานแล้ว GAC จะให้ความสำคัญ (ในกรณีส่วนใหญ่) เมื่อ. NET พยายามโหลด DLL และ FileNotFoundException จะหายไปเนื่องจาก DLL ของคุณจะได้รับการแก้ไขผ่าน GAC

อีกครั้งมันใช้ได้สำหรับฉันและเป็นเพียงวิธีแก้ปัญหาเท่านั้นมันจะไม่แก้ปัญหาหลักด้วยตัวเอง แต่อย่างน้อยฉันก็ไม่ต้องรีสตาร์ท VS ตลอดเวลาเมื่อพยายามทำงานกับการย้ายข้อมูล EF และนั่นก็ดีพอสำหรับฉัน


1
ทำงานให้ฉันด้วย พรอมต์คำสั่งสำหรับนักพัฒนา Visual Studio 2017 อยู่ใน C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Visual Studio 2017 \ Visual Studio Tools และต้องเรียกใช้ในฐานะผู้ดูแลระบบ
David Létourneau

2
FYI - อาจทำให้เกิดปัญหาเมื่อ Microsoft อัปเกรดผลิตภัณฑ์และรายการ GAC ไม่ถูกต้อง (เวอร์ชันใหม่กว่าหรือเปลี่ยนเส้นทาง .. pro เทียบกับองค์กร ฯลฯ ) โดยเฉพาะอย่างยิ่งปัญหาในการอัปเกรดเป็น 15.8.0 ล่าสุดหากโครงการของคุณไม่โหลด (เนื่องจากใช้โซลูชันนี้) โปรดดูที่นี่: developercommunity.visualstudio.com/content/problem/311136/…
Barry

11

สิ่งนี้ใช้ได้ผลสำหรับฉัน - ดูเหมือนว่าจะเป็นปัญหาที่ไม่ได้รับการสนับสนุนในปี 2020

ในAzure Build Pipeline> NuGet tool installerขั้นตอนการเปลี่ยนแปลงเป็นรุ่นใหม่กว่าเช่นVersion of NuGet.exe to install 5.4.0ตรวจสอบรุ่นที่https://dist.nuget.org/tools.json

ปัญหาหายไปและตอนนี้สร้างสำเร็จแล้ว


การอัปเดตเวอร์ชัน nuget ที่ใช้เป็นวิธีการแก้ไขปัญหาสำหรับฉัน
NP83

7

ไฟล์หรือเวอร์ชันแอสเซมบลีที่หายไปของฉันแตกต่างจากคำถาม

ฉันมีข้อผิดพลาดนี้เมื่อพยายามเผยแพร่โครงการ ASP.net

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

ฉันแก้ไขปัญหาโดยการติดตั้งMicrosoft Build Tools 2015

ฉันคิดว่าปัญหาของฉันเกิดจากฉันเผยแพร่โปรเจ็กต์ที่สร้างด้วย VS 2015 ใน VS 2017 หวังว่าจะช่วยคนอื่นที่มีปัญหาเดียวกันได้


สิ่งนี้ช่วยแก้ไข CI build ใน TFS ในองค์กรให้ฉัน เซิร์ฟเวอร์บิวด์เครื่องหนึ่งของฉันไม่มีเครื่องมือเหล่านี้และยังคงล้มเหลวด้วยปัญหาที่คล้ายกันมาก
Budhead2004

4

ในกรณีที่รีสตาร์ท Visual Studio ไม่ทำงานไปที่ตัวจัดการงาน / Process Explorer และทักษะ VBCSCompiler.exe

ป้อนคำอธิบายภาพที่นี่

แนะนำให้ใช้Process Explorer


1
ฉันกำลังลองวิธีแก้ปัญหานี้ "ในกรณีที่รีสตาร์ท Visual Studio ไม่ทำงานไปที่ตัวจัดการงาน / Process Explorer และทักษะ VBCSCompiler.exe" และทำงานได้ดี
Mohammad Jihad Helal


2

ในกรณีของฉันมีบางอย่าง (อาจเป็น NuGet-Update) ได้เพิ่ม AssemblyBinding ลงใน 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>

หลังจากลบรายการที่ขึ้นอยู่กับ Assemby-Entry นั้นฉันสามารถเผยแพร่โครงการได้อีกครั้ง


2

สิ่งนี้ใช้ได้ผลสำหรับฉัน: ข้อผิดพลาดเกิดขึ้นเมื่อฉันรันคำสั่ง nuget restore Nuget เวอร์ชัน 4.6.2 ฉันมีสองวิธีในการแก้ปัญหานี้

ใช้ Nuget 4.8.2 ขึ้นไป gacutil / i "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll


1

เรามีปัญหานี้และนี่คือสิ่งที่เราต้องทำในกรณีของเรา:

ปัญหาคือเรามีการ(IDbCommandInterceptor)กำหนดค่าตัวสกัดกั้นคำสั่งฐานข้อมูลที่เรียกว่าHttpRuntime.Cache["somekey"] และด้วยเหตุผลบางประการคำสั่งการย้ายข้อมูลล้มเหลวในการรันเนื่องจากเหตุนี้ หลังจากลบการอ้างอิงนี้แล้วคำสั่งทั้งหมดก็ทำงานสมบูรณ์แบบ อาจจะHttpRuntimeไม่พบ dll Build Framework?

ดังนั้นตรวจสอบcallstackทั้งหมดเมื่อคำสั่งการโยกย้ายล้มเหลวเพื่อดูว่าคุณมีปัญหาที่คล้ายกันหรือไม่


น่าสนใจมากการติดตามสแต็กของฉันรวมถึงการเรียกใช้เมธอดโดยใช้ HttpContext.Current การลบสิ่งนี้จะเป็นการลบปัญหา
Timores

0

ฉันประสบปัญหาเดียวกันเมื่ออัปเดตส่วนประกอบ XCode / Mono บน macOS

วิธีแก้ไขคืออัปเดต Visual Studio สำหรับ Mac เป็นเวอร์ชันล่าสุด

ฉันคิดว่าปัญหานั้นเกิดจากการใช้เครื่องมือ MSBuild ใหม่จากแพ็คเกจ. NET Core 3.0 ซึ่งติดตั้งด้วย XCode / Mono เวอร์ชันใหม่


0

ขอบคุณผู้ที่โพสต์แล้ว สถานการณ์ของฉันได้รับการแก้ไขโดยการรวมกันของข้างต้น ฉันมี Visual Studio หลายเวอร์ชัน: 2015, 2017, 2019 ในบางจุด MSBUILD เวอร์ชันเปลี่ยนจาก 15.1 เป็น 15.9 และฉันแก้ไขปัญหานี้ด้วยการอัปเดตC:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.configไฟล์ให้ชี้ไปที่ไลบรารี 15.9 นี่คือตัวอย่างของหนึ่งในรายการ:

<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>

2
ดูเหมือนว่าตัวอย่างของคุณจะหายไป
Jammer

0

การใช้ Visual Studio 2019 Community edition ฉันลองวิธีแก้ปัญหาอื่น ๆ โดยไม่ต้องโชคดีมากนัก แต่หลังจากล้างแคช NuGet ให้ฉันแล้วปัญหาดูเหมือนจะได้รับการแก้ไข ป้อนคำอธิบายภาพที่นี่


0

หลังจากลองใช้วิธีการทั้งหมดข้างต้นและอื่น ๆ - การเรียกใช้WCFแอปยังล้มเหลวสำหรับฉัน ข้อผิดพลาด: Could not load file or assembly 'Microsoft.Build.Framework, Version=15.1.0.0..

หมายเหตุ: ลองรีสตาร์ท VS, พีซี, กระบวนการฆ่า, ล้างแคช VS, แคช nuget, obj, bin, .vs, โฟลเดอร์แพ็กเกจ

สิ่งที่ได้ผลสำหรับฉันคือการลบ*.csproj.userไฟล์ของโครงการ.. เห็นได้ชัดว่ามันมีการกำหนดค่าที่ล้าสมัยอยู่ในนั้น หายไป 4 ชั่วโมงพยายามคิดออก ..


0

ฉันทำการรีสตาร์ทซึ่งหลังจากนั้นฉันพบว่าบริการเว็บในพื้นที่ที่ฉันใช้งานอยู่ถูกบล็อกโดยกระบวนการอื่นที่ใช้พอร์ตนั้น ฉันตรวจสอบกระบวนการทำงานและและฆ่ากระบวนการโดยใช้TCPViewและดูเหมือนว่าทุกอย่างจะเริ่มทำงานอีกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.