Không thể tải tệp hoặc lắp ráp 'Microsoft.Build.Framework' (VS 2017)


87

Khi tôi thử chạy lệnh "update-database", tôi nhận được ngoại lệ này:

Chỉ định cờ '-Verbose' để xem các câu lệnh SQL đang được áp dụng cho cơ sở dữ liệu đích. System.IO.FileNotFoundException: Không thể tải tệp hoặc lắp ráp 'Microsoft.Build.Framework, Phiên bản = 15.1.0.0, Văn hóa = trung lập, PublicKeyToken = b03f5f7f11d50a3a' hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy các tập tin được chỉ định. Tên tệp: 'Microsoft.Build.Framework, Phiên bản = 15.1.0.0, Văn hóa = trung lập, PublicKeyToken = b03f5f7f11d50a3a'

WRN: Ghi nhật ký liên kết lắp ráp bị TẮT. Để bật ghi nhật ký lỗi liên kết lắp ráp, hãy đặt giá trị đăng ký [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) thành 1. Lưu ý: Có một số hình phạt hiệu suất liên quan đến ghi nhật ký lỗi liên kết lắp ráp. Để tắt tính năng này, hãy xóa giá trị đăng ký [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Không thể tải tệp hoặc lắp ráp 'Microsoft.Build.Framework, Phiên bản = 15.1.0.0, Văn hóa = trung lập, PublicKeyToken = b03f5f7f11d50a3a' hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy tệp được chỉ định. '


1
Bằng tiếng Đức, thông báo lỗi này có nội dung: "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

Câu trả lời:


91

Tôi tin rằng tôi đã gặp vấn đề tương tự như bạn đã làm. Tôi đã không lưu toàn bộ thông báo lỗi, nhưng thông báo lỗi của tôi là

' Không thể tải tệp hoặc lắp ráp' Microsoft.Build.Framework, Phiên bản = 15.1.0.0, Văn hóa = trung lập, PublicKeyToken = b03f5f7f11d50a3a 'hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy các tập tin được chỉ định. '

Tôi đang sử dụng Visual Studio 2017 và đang cố gắng thực hiện Update-Databasesau Add-Migration.

Để giải quyết sự cố, tôi đã đóng Visual Studio và mở lại , sau đó chạy Update-Databaselại.

Điều này có thể giải quyết hoặc không giải quyết được vấn đề của bạn, nhưng tôi nghĩ rằng tôi sẽ đăng trong trường hợp nó có ích.


6
Có, có vẻ như "Turn-It-Off-And-On-Again" là đường dẫn chính xác để giải quyết trong trường hợp này.
Darren Oster

16
Điều này hiệu quả nhưng tôi không coi đó là một câu trả lời chính xác. Tôi muốn sửa nó một lần và mãi mãi mà không cần phải khởi động lại VS.
Stanislav

1
Nó xảy ra mọi lúc sau khi di chuyển và nó yêu cầu khởi động lại toàn bộ PC để hoạt động.
OverMars

3
Tôi đã thử mọi giải pháp được đề xuất. Không ai trong số họ dường như giải quyết được vấn đề vĩnh viễn. Tôi phải tiếp tục khởi động lại Visual Studio.
Augusto Barreto

4
Đây là một vấn đề mở trong Github tại đây github.com/aspnet/EntityFramework6/issues/382
Bil Simser

99

Tập lệnh xây dựng cục bộ của chúng tôi đang sử dụng phiên bản cũ hơn của nuget.exe( 4.7.1.5393) để khôi phục các gói NuGet. Chúng tôi bắt đầu gặp lỗi này sau khi cập nhật lên phiên bản Visual Studio 2019 16.5.0. Việc cập nhật lên phiên bản mới nhất của nuget.exe( 5.4.0.6315) đã khắc phục sự cố cho chúng tôi.

nuget.execó thể tải xuống tại đây: https://www.nuget.org/downloads .


27
Đối mặt với thách thức đó khi chúng tôi chỉ cài đặt VS2019 trên máy chủ bản dựng. Để khắc phục điều này trong bản dựng Azure DevOps của chúng tôi, nó hoạt động để yêu cầu phiên bản 5.4.0 trong bước cài đặt công cụ NuGet.
Elder Smash

3
Đã nâng cấp từ 4.3.0 lên 5.6 trên TeamCity của tôi. Điều này đã khắc phục sự cố của tôi. Cảm ơn!
Esaith

3
Đây chính là nó. Cảm ơn nhiều! Đã đi từ 4.4.1 đến 5.4.0.
DaleyKD

2
@ElderSmash Chúng tôi cũng đang sử dụng bản dựng Azure DevOps. Trong trường hợp của chúng tôi, sự cố đã được giải quyết bằng cách cập nhật bước cài đặt NuGet từ NuGetToolInstaller@0lên NuGetToolInstaller@1, ngay cả khi không chỉ định phiên bản mới hơn. Tuy nhiên, không chắc chắn liệu điều này có khắc phục được nguyên nhân gốc rễ của sự cố hay không hay bản sửa lỗi chỉ là một tác dụng phụ của việc xóa bộ nhớ cache cục bộ.
MarkusM

2
@ElderSmash Đó chính xác là vấn đề và giải pháp của tôi, cảm ơn!
Danie

41

Nguyên nhân gốc rễ của vấn đề này đến từ các đường dẫn tương đối trong devenv.exe.configtệp tới Microsoft.Build.Framework.dll(xem các thẻ xml).

Một số Tiện ích mở rộng Visual Studio đang thay đổi thư mục hiện tại và làm cho các đường dẫn tương đối không hợp lệ.

Để khắc phục, hãy mở tệp này trong C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\thư mục. và thay thế tất cả ..\..\MSBuild\15.0\Bin\bằng C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\.


Tôi đang sử dụng Visual Studio Professional nếu tôi cũng làm như vậy. Tôi gặp lỗi này nhiều lần?
Shan

Tôi không có thư mục MSBuild trong IDE (phiên bản Cộng đồng), tôi đã sao chép MSBuild của mình từ "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community" và nó không sửa được gì.
OverMars

1
Tôi đang sử dụng 2017 Pro và điều này đã khắc phục sự cố cho tôi. +1
Tom Wright

2
Lưu ý rằng nếu bạn cập nhật VS2017 sau khi thực hiện sửa chữa này, bạn có thể phải cập nhật devenv.exe.config một lần nữa
Mike Peterson

2
Câu trả lời này vừa giúp tôi lần thứ hai - sau khi cập nhật VS2017, bạn cần thực hiện lại điều này như @MikePeterson nói.
James Monger

34

Tôi đã tìm thấy một giải pháp có vẻ giải quyết tốt vấn đề, ít nhất là trên môi trường của tôi đang chạy VS 2017 Professional 15.5.2 và Entity Framework 6.1.1.

Về cơ bản, hãy cài đặt DLL (với một vài cái liên quan) vào GAC (Global Assembly Cache) và sự cố sẽ biến mất.

Làm theo các bước sau:

  1. Đóng tất cả các phiên bản đang chạy của Visual Studio 2017

  2. Khởi chạy Visual Studio 2017 Developer Command Prompt

  3. Nhập các lệnh sau (thay thế Professional bằng ấn bản của bạn, Enterprise hoặc Community hoặc điều chỉnh đường dẫn cho phù hợp):

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. Khởi động lại Visual Studio 2017

Về bản chất, GAC (trong hầu hết các trường hợp) sẽ được ưu tiên khi .NET đang cố gắng tải một DLL và FileNotFoundException sẽ biến mất vì DLL của bạn bây giờ sẽ được giải quyết thông qua GAC.

Một lần nữa, nó phù hợp với tôi và chỉ đơn giản là một cách giải quyết, bản thân nó sẽ không giải quyết được vấn đề cốt lõi nhưng ít nhất tôi không phải khởi động lại VS mọi lúc khi cố gắng làm việc với di chuyển EF và điều đó đủ tốt cho tôi.


1
Làm việc cho tôi quá. Visual Studio 2017 Developer Command Prompt nằm trong C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Visual Studio 2017 \ Visual Studio Tools và phải được chạy với tư cách quản trị viên.
David Létourneau

2
FYI - điều này có thể gây ra sự cố khi microsoft Nâng cấp sản phẩm và các mục nhập GAC trở nên không hợp lệ (phiên bản mới hơn hoặc thay đổi đường dẫn. Pro so với doanh nghiệp, v.v.). Đáng chú ý là một vấn đề khi nâng cấp lên 15.8.0 mới nhất Nếu các dự án của bạn không tải (do đã sử dụng giải pháp này), hãy xem tại đây: developercommunity.visualstudio.com/content/problem/311136/…
Barry

11

Điều này phù hợp với tôi - dường như là một vấn đề không hỗ trợ bắt đầu từ năm 2020.

Trong bước Azure Build Pipeline> NuGet tool installer, hãy thay đổi Version of NuGet.exe to installsang phiên bản mới hơn, chẳng hạn như 5.4.0. Kiểm tra các phiên bản tại https://dist.nuget.org/tools.json .

Sự cố đã biến mất và hiện đã tạo thành công.


Cập nhật phiên bản nuget đã sử dụng cũng là cách để khắc phục sự cố cho tôi.
NP83

7

Tệp bị thiếu hoặc phiên bản lắp ráp của tôi khác với câu hỏi.

Tôi gặp lỗi này khi cố xuất bản dự án ASP.net của mình

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

Tôi đã giải quyết sự cố bằng cách cài đặt Microsoft Build Tools 2015

Tôi nghĩ rằng vấn đề của tôi do tôi xuất bản dự án được xây dựng với VS 2015 trong VS 2017. Hy vọng có thể giúp những người khác có cùng vấn đề.


Điều này đã giúp tôi sửa lỗi bản dựng CI trong TFS tại chỗ. Một trong những máy chủ xây dựng của tôi không có những công cụ này và nó liên tục gặp sự cố tương tự.
Budhead2004,

4

Đề phòng trường hợp khởi động lại Visual Studio không hoạt động Đi tới Trình quản lý tác vụ / Trình khám phá quy trình và kỹ năng VBCSCompiler.exe

nhập mô tả hình ảnh ở đây

Đề xuất sử dụng Process Explorer


1
Tôi đang thử giải pháp này "Đề phòng trường hợp khởi động lại Visual Studio không hoạt động. Đi tới Trình quản lý tác vụ / Trình khám phá quy trình và kỹ năng VBCSCompiler.exe" và hoạt động tốt.
Mohammad Jihad Helal


2

Trong trường hợp của tôi, một cái gì đó (có thể là NuGet-Update) đã thêm AssemblyBinding vào 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>

Sau khi loại bỏ phụ thuộcAssemby-Entry đó, tôi có thể Xuất bản lại Dự án.


2

Điều này đã làm việc cho tôi: Lỗi xảy ra khi tôi thực hiện lệnh khôi phục nuget. Phiên bản Nuget 4.6.2. Tôi có hai cách để giải quyết vấn đề này.

Sử dụng Nuget 4.8.2 và cao hơn. gacutil / i "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Current \ Bin \ Microsoft.Build.Framework.dll


1

Chúng tôi đã gặp sự cố này và đây là những gì chúng tôi cần làm trong trường hợp của mình:

Vấn đề là chúng tôi đã (IDbCommandInterceptor)cấu hình một bộ đánh chặn lệnh cơ sở dữ liệu có tên là HttpRuntime.Cache["somekey"], và vì lý do nào đó mà các lệnh di chuyển không chạy được vì điều này. Sau khi loại bỏ lỗi này, tất cả các lệnh chạy hoàn hảo. Có thể HttpRuntimekhông tìm thấy dll Build Framework?

Vì vậy, hãy kiểm tra toàn bộ callstack khi các lệnh di chuyển không thành công để xem liệu bạn có gặp sự cố tương tự hay không.


Rất thú vị, dấu vết ngăn xếp của tôi bao gồm một cuộc gọi đến một phương thức sử dụng HttpContext.Current. Xóa điều này đã xóa vấn đề.
Timores

0

Tôi đã gặp phải vấn đề tương tự khi cập nhật các thành phần XCode / Mono trên macOS.

Giải pháp là cập nhật Visual Studio cho Mac lên phiên bản mới nhất.

Tôi nghĩ rằng vấn đề đó là do sử dụng các công cụ MSBuild mới từ gói .NET Core 3.0 được cài đặt với phiên bản XCode / Mono mới.


0

Cảm ơn những người đã đăng. Tình huống của tôi đã được giải quyết bằng sự kết hợp của những điều trên. Tôi đã có một số phiên bản Visual Studio: 2015, 2017, 2019. Tại một số thời điểm, phiên bản MSBUILD đã chuyển từ 15.1 sang 15.9 và tôi đã giải quyết vấn đề này bằng cách cập nhật C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe.configtệp để trỏ tới thư viện 15.9. Đây là một ví dụ về một trong các mục:

<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
ví dụ của bạn dường như đã biến mất.
Jammer

0

Sử dụng phiên bản Cộng đồng Visual Studio 2019. Tôi đã thử các giải pháp khác mà không gặp nhiều may mắn, nhưng sau khi xóa bộ nhớ cache NuGet, sự cố dường như đã được giải quyết. nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.