Tài sản tập tin project.assets.json không tìm thấy. Chạy khôi phục gói NuGet


260

Tôi đang cố gắng sử dụng nopC Commerce (được viết bằng .NET Core) nhưng khi tôi muốn chạy dự án, tôi gặp phải 52 lỗi khi nói với tôi Chạy khôi phục gói nuget

Tài sản tập tin ~ \ obj \ dự án. Tài sản.json ' không tìm thấy. Chạy khôi phục gói NuGet để tạo tệp này. Nop.Web.MVC.Testsote

Khi tôi sử dụng nhấp chuột phải vào giải pháp và chọn Khôi phục Gói Nuget, tôi nhận được thông báo này:

Tất cả các gói đã được cài đặt và không có gì để khôi phục.

nhưng 52 lỗi đó vẫn còn đó và trong Công cụ -> Trình quản lý gói NuGet -> Quản lý gói NuGet cho Giải pháp không có gì được cài đặt trên giải pháp, gần đây tôi đã cập nhật VS2017 của mình lên 15.5.4


Bạn đã đồng ý cho NuGet khôi phục chưa? Chuyển đến công cụ, tùy chọn, tìm kiếm NuGet và kiểm tra tùy chọn "Cho phép NuGet ...".
imps

Nếu bất cứ ai ở trên máy Mac, chúng tôi đã gặp sự cố này và khắc phục sự cố bằng cách xóa khoảng trắng trong đường dẫn kho lưu trữ (được tạo trong quá trình kéo git): %% Dự án của tôi trở thành MyProject.
David Hague

Câu trả lời:


455

Để khắc phục lỗi này từ Công cụ> Trình quản lý gói NuGet> Bảng điều khiển Trình quản lý gói chỉ cần chạy:

dotnet restore

Lỗi xảy ra do cli dotnet không tạo ra tất cả các tệp cần thiết ban đầu. Thực hiện khôi phục dotnet thêm các tập tin cần thiết.


21
Đây cũng là bản sửa lỗi cho máy chủ xây dựng. Đã thêm bước Dòng lệnh để chạy "khôi phục dotnet" sau khi khôi phục NuGet bình thường.
Đánh dấu

24
Bạn cũng có thể làm điều đó từ MSBuild: msbuild MySolution.sln / t: Khôi phục
Der_Meister

3
@ Der_Meister là giải pháp để thêm tùy chọn / t: Khôi phục làm việc cho tôi, tuy nhiên, tôi đã phải xây dựng giải pháp hai lần (hai bước xây dựng riêng biệt). Đầu tiên với tùy chọn / t: Khôi phục và sau đó một lần nữa mà không có nó.
Michael

16
@Michael, hãy thử msbuild MySolution.sln / t: Khôi phục; Xây dựng
Der_Meister

8
Nếu bạn có nhiều tệp giải pháp, bạn cần thực hiệndotnet restore solutionfilename.sln
ECH

97

Trong trường hợp của tôi, lỗi là kho lưu trữ GIT. Nó có khoảng trắng trong tên, làm cho dự án của tôi không thể khôi phục

Nếu đây là vấn đề của bạn, chỉ cần đổi tên kho lưu trữ GIT khi bạn sao chép

git clone http://Your%20Project%20With%20Spaces newprojectname

6
Tôi tự nghĩ rằng điều này không thể có được. Sau khi thử thêm một giờ cho các giải pháp đề xuất khác, cuối cùng tôi đã thử điều này vì tuyệt vọng và nó đã giải quyết được vấn đề của tôi. Đàn ông chết tiệt!
Stark

2
Điều này đã khắc phục vấn đề mà tôi đang gặp phải, cảm ơn bạn rất nhiều!
Sharbel

3
Câu trả lời này nên ở đầu bài chứ không phải ở cuối bài. Giải quyết vấn đề của tôi.
CodeWar Warrior

2
Bạn đã cứu ngày của tôi! Cảm ơn bạn.
mpatel

3
trong trường hợp của tôi, tôi chỉ đổi tên thư mục vật lý của mình bằng cách xóa% 20 và thay thế nó bằng không gian bình thường và mọi thứ đều hoạt động tốt
hosam hemaily

42

Trong trường hợp khi 'khôi phục dotnet' không hoạt động, các bước sau có thể giúp:

  1. Visual Studio >> Công cụ >> Tùy chọn >> Trình quản lý Nuget >> Nguồn gói
  2. Bỏ chọn bất kỳ nguồn gói bên thứ ba.
  3. Xây dựng lại giải pháp.

3
Gần đây tôi đã gặp phải sự cố này đối với Máy chủ Nhận dạng Bắt đầu nhanh # 1: Bảo mật API bằng Thông tin xác thực của Khách hàng và giải pháp trên đã giúp ích cho tôi.
Tharindu Jayasinghe

Cảm ơn bạn! Tôi thực sự đã xóa một nguồn không còn phù hợp nữa (từ một giải pháp khác) và trên các nguồn Gói ngoại tuyến nuget.orgMSVS tôi đã nhấp vào nút Cập nhật . Sau này dotnet restorelàm việc.
CPHPython

Cảm ơn bạn, đó là nó!
tdracz

33

Đóng và mở lại Visual Studio đã giải quyết vấn đề này cho tôi, một khi tôi đã chắc chắn rằng các gói NuGet đã được khôi phục theo các câu trả lời khác được đăng ở đây.


Không thể tin điều này cũng có hiệu quả với tôi sau khi thực hiện khôi phục dotnet và chỉ sau đó
Gaspa79

Tôi có một số vấn đề kết nối riêng trên mạng LAN công việc gây ức chế cho NuGet. Khởi động lại PC của tôi đã giải quyết được vấn đề!
Neo

Đây thực sự không phải là một câu trả lời vì đôi khi bạn sử dụng các công cụ CLI getbuildvà bạn không mở VS. Tôi biết tại sao nó hoạt động với VS - bởi vì VS tự động giải quyết các phụ thuộc của dự án.
TS

@TS câu hỏi được gắn thẻ "Visual Studio 2017", vì vậy tôi muốn nói đây câu trả lời. Bạn nêu lên một điểm thú vị, rằng vấn đề nằm ở việc giải quyết các phụ thuộc của VS. Nếu bạn có thêm thông tin về những gì đang xảy ra, tôi chắc chắn rằng nó sẽ khiến việc đọc trở nên thú vị :)
Nổi bật vào

+1. Bạn bắt được tôi! Với VS, ồ. Phiên bản 15,5 của anh bị lỗi. Tôi nghĩ rằng 15,5 / 15,6 có nhiều vấn đề cần giải quyết. Bây giờ, đây là câu trả lời stackoverflow.com/a/58548856/1704458
TS

20

Đối với những người có cùng vấn đề với tôi trong môi trường Azure DevOps / VSTS gặp phải một thông báo tương tự: C:\Program Files\dotnet\sdk\2.2.104\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(208,5): Error NETSDK1004: Assets file '...\obj\project.assets.json' not found. Run a NuGet package restore to generate this file

Thêm vào /t:Restoređối số MSBuild của bạn trong Giải pháp xây dựng.


9

Đối với tôi khi tôi đã làm - khôi phục dotnet vẫn xảy ra lỗi.

tôi đã đi đến

1 Công cụ -> Trình quản lý gói NuGet -> Cài đặt Trình quản lý gói -> nhấp vào "Xóa trên Nuget Catche (s)"

Khôi phục 2 dotnet

giải quyết vấn đề.


Tôi sẽ thử điều này vào lần tới khi nó xảy ra. Nó có thể là một cách tiếp cận tốt hơn so với tôi (đóng và mở lại VS) thường mất nhiều thời gian đối với tôi.
Nổi bật vào

6

Trong visual studio 2017 vui lòng thực hiện các bước sau:

1) chọn Công cụ => Tùy chọn => Trình quản lý gói NuGet => Nguồn gói sau đó bỏ chọn Tùy chọn gói ngoại tuyến của Microsoft Visual Studio . nhập mô tả hình ảnh ở đây

2) hiện đang mở Tool => NuGet Gói Maneger => Bảng điều khiển quản lý gói. 3) thực thi lệnh trong PM> khôi phục dotnet.

Hy vọng nó hoạt động ...



5

Chọn Công cụ > Trình quản lý gói NuGet > Bảng điều khiển Trình quản lý gói

Và sau đó chạy:

dotnet restore <project or solution name>

3

hơi muộn để trả lời nhưng dường như điều này sẽ thêm giá trị. Nhìn vào lỗi - dường như xảy ra trong đường ống CI / CD.

Chỉ cần chạy "dotnet build" là đủ.

xây dựng dotnet

xây dựng dotnet chạy "khôi phục" theo mặc định.


1
Cũng có thể đạt được bằng cách thêm bước ".NET core" vào đường ống dẫn (trước khi xây dựng) và chọn lệnh "khôi phục dotnet" từ danh sách thả xuống. Tôi đang nói cụ thể về đường ống VSTS ở đây.
Lech Osiński

3

Không có gì ở trên làm việc cho tôi. Nhưng chỉ cần xóa tất cả các thư mục 'bin' và 'obj' đã làm được điều đó.


Vấn đề này xảy ra với tôi khi tôi làm việc trên Dockerfile. xóa các thư mục đó làm cho khôi phục dotnet trong container hoạt động đúng.
Johannes

3

Giải quyết bằng cách thêm / t: Khôi phục; Xây dựng đối số MSBuild


2

Khi sử dụng VSTS, hãy kiểm tra tệp global.json của bạn. Tôi đã nhập phiên bản sdk chỉ là "2.2", gây ra lỗi phân tích cú pháp (nhưng không phải khi xây dựng cục bộ). Thêm phiên bản đầy đủ, "2.2.104" đã giải quyết vấn đề.


2

Tôi đã mất vài giờ vì lỗi này trong Azure DevOps khi tôi đặt tác vụ 'Visual Studio Build' trong một đường dẫn xây dựng để xây dựng một dự án riêng lẻ trong giải pháp của tôi, thay vì toàn bộ giải pháp.

Làm điều đó có nghĩa là DevOps sẽ không xây dựng bất kỳ (hoặc có thể một số, tôi không chắc chắn) dự án nào được tham chiếu bởi dự án mà bạn đã nhắm mục tiêu xây dựng và do đó, các dự án đó sẽ không có project.json của họ tập tin .asset được tạo, sau đó gây ra vấn đề này.

Giải pháp cho tôi là hoán đổi từ sử dụng tác vụ VS Build sang tác vụ MSBuild. Sử dụng tác vụ MSBuild cho một dự án riêng lẻ sẽ xây dựng chính xác bất kỳ dự án nào được tham chiếu bởi dự án bạn đang xây dựng và loại bỏ lỗi này.


1

Nếu chỉ khôi phục các gói NuGet không hoạt động, hãy đảm bảo trong Công cụ -> Tùy chọn -> Trình quản lý gói NuGet -> Chung trong Khôi phục gói rằng đã cho phép "Cho phép NuGet tải xuống các gói bị thiếu".

Sau đó, Khôi phục các gói NuGet một lần nữa HOẶC chỉ REBUILD sau khi xóa các thư mục obj và bin.


1

Nếu đề xuất @ mostafa-bouzari không giúp ích, hãy kiểm tra cẩn thận trong cửa sổ 'Danh sách lỗi' hoặc 'Đầu ra' để biết lỗi tại sao NuGet không thể khôi phục, ví dụ: do sự cố mạng nếu bạn đứng sau proxy.


Trong trường hợp của tôi, Nuget Restore không thể kết nối với kho lưu trữ NuGet riêng của chúng tôi, vì tôi không được kết nối với VPN của công ty. Kiểm tra nhật ký Gói quản lý gói đã giúp.
Alexander Puchkov

1

Sự cố này xảy ra khi công cụ xây dựng của bạn không được thiết lập để thực hiện restoretrên các dự án được đặt để sử dụng PackageReferenceso với packages.configvà chủ yếu ảnh hưởng đến các dự án theo phong cách mới của Net Core và Netst Chuẩn.

Khi bạn mở Visual Studio và xây dựng, nó sẽ giải quyết vấn đề này cho bạn. Nhưng nếu bạn sử dụng tự động hóa, các công cụ CLI, bạn sẽ thấy vấn đề này.

Nhiều giải pháp được cung cấp ở đây. Nhưng tất cả những gì bạn cần nhớ, bạn cần phải ép buộc restore. Trong một số trường hợp bạn sử dụng dotnet restoretrước khi xây dựng. Nếu bạn xây dựng bằng MsBuild, chỉ cần thêm /t:Restorechuyển đổi vào lệnh của bạn.

Tóm lại, bạn cần xem tại sao khôi phục không thể được kích hoạt. Nguồn nuget xấu hoặc hành động khôi phục bị thiếu hoặc nuget.exe đã lỗi thời hoặc tất cả các mục trên.


1

Kinh nghiệm rất kỳ lạ tôi đã gặp phải!

Tôi đã nhân bản với GIT bash và GIT cmd-Line trước đó, tôi gặp phải các vấn đề trên.

Sau đó, tôi đã nhân bản với Rùa-GIT và mọi thứ hoạt động như mong đợi.

Có thể đây là một câu trả lời điên rồ, nhưng thử với điều này một lần có thể tiết kiệm thời gian của bạn!


1

Nhìn thấy điều này sau khi thêm một dự án WinForms Core 3.1 (từ các mẫu dự án) trên VS-2019 so với 16.4.0 và cố gắng chạy nó ra khỏi hộp. Làm sạch hoặc xây dựng lại toàn bộ giải pháp không hoạt động.

Tôi vừa tải lại giải pháp của mình .. đó là File / Close Solution và sau đó mở lại và xây dựng lại nó đã giải quyết vấn đề.


1

Nếu lỗi này xảy ra như một phần của bản dựng trong Azure DevOps (TFS) và bản dựng của bạn đã có tác vụ khôi phục NuGet , lỗi này có thể cho thấy tác vụ khôi phục NuGet không thể khôi phục tất cả các gói, đặc biệt nếu bạn sử dụng nguồn gói tùy chỉnh ( chẳng hạn như một máy chủ NuGet nội bộ). Thêm /t:Restore;Buildvào MSBuild Argument dường như là một cách để khắc phục lỗi, nhưng điều này yêu cầu MSBuild thực hiện một hoạt động khôi phục NuGet bổ sung. Tôi tin rằng điều này thành công vì MSBuild sử dụng nguồn gói tùy chỉnh được cấu hình trong Visual Studio. Một giải pháp tốt hơn là khắc phục tác vụ khôi phục NuGet.

Để định cấu hình nguồn gói tùy chỉnh cho tác vụ khôi phục NuGet:

  1. Tạo một NuGet.configtệp liệt kê tất cả các nguồn gói (Gói ngoại tuyến của Microsoft Visual Studio, nuget.org và nguồn gói tùy chỉnh của bạn) và thêm nó vào kiểm soát nguồn.
  2. Trong tác vụ khôi phục Nuget trong Nguồn cấp dữ liệu để sử dụng: chọn tùy chọn Nguồn cấp trong NuGet.config của tôi .
  3. Cung cấp đường dẫn đến NuGet.config.
  4. Xóa /t:Restore;Buildtùy chọn khỏi tác vụ MSBuild.

Thông tin bổ sung có sẵn ở đây .


0

Tôi đã gặp lỗi khi tạo lambda trong lõi mạng chấm trong VS2017. Điều làm việc cho tôi là dỡ dự án và tải lại.


0

chạy VS của bạn với tư cách quản trị viên sau đó trong bảng điều khiển trình quản lý gói chạy khôi phục dotnet.


0

Một số khác, nếu có bất kỳ trường hợp nào bạn đang sử dụng Dropbox, hãy kiểm tra Conflictedtên tệp, thực hiện tìm kiếm trong repo của bạn và xóa tất cả các tệp bị xung đột đó.

Điều này có thể đã xảy ra nếu bạn đã di chuyển các tập tin xung quanh.


0

Nguyên nhân của lỗi này: bạn phải loại bỏ Nuget được tiêm trong trình thám hiểm tệp. Giải pháp: Khi bạn xóa Nuget đó trong hệ thống của mình, sau đó xóa khỏi vị trí sau. chọn Công cụ => Tùy chọn => Trình quản lý gói NuGet => Nguồn gói sau đó bỏ chọn Tùy chọn gói ngoại tuyến của Microsoft Visual Studio



0

Trong trường hợp của tôi, tôi đã gặp sự cố với Nguồn gói có sẵn. Tôi đã chuyển thư mục kho lưu trữ nuget cục bộ sang một đường dẫn mới nhưng tôi không cập nhật nó trong Nguồn gói có sẵn của Nuget. Khi tôi đã khắc phục sự cố đường dẫn, hãy cập nhật nó trong Nguồn gói có sẵn và sau đó mọi thứ (nuget restor, v.v.) đều hoạt động tốt.


0

Đối với tôi, nó hóa ra là một vấn đề thông tin nguồn nuget. Gần đây tôi đã thay đổi mật khẩu để truy cập máy chủ nexus và studio trực quan vẫn đang sử dụng mật khẩu cũ khi cố gắng truy cập một nuget trên máy chủ đó thông qua trình quản lý thông tin cửa sổ. Để khắc phục, tôi phải xóa mục nhập cho những thông tin lỗi thời đó trong trình quản lý thông tin xác thực và sau đó, khi tôi thực hiện khôi phục nuget, nó nhắc tôi nhập mật khẩu cho phép tôi nhập lại mật khẩu mới, được lưu lại trong trình quản lý thông tin xác thực. Bạn có thể truy cập trình quản lý thông tin xác thực từ dòng cmd bằng CmdKey.exe.


0

Hãy thử điều này (Nó làm việc cho tôi):

  • Chạy VS với tư cách quản trị viên
  • Hướng dẫn cập nhật NuGet lên phiên bản mới nhất
  • Xóa tất cả các tập tin bin và obj trong dự án.
  • Khởi động lại VS
  • Biên dịch lại

0

Bạn có thể truy cập: Công cụ> Trình quản lý gói NuGet> Bảng điều khiển quản lý gói

Và sau đó chạy:

khôi phục dotnet

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.