자산 파일 project.assets.json을 찾을 수 없습니다. NuGet 패키지 복원 실행


260

nopCommerce (.NET Core로 작성된)를 사용하려고하는데 프로젝트를 실행하려고 할 때 52 오류 메시지가 나타납니다.

자산 파일 ~ \ obj \ project. assets.json를 찾을 수 없습니다 NuGet 패키지 복원을 실행하여이 파일을 생성하십시오. Nop.Web.MVC.Testsote

솔루션을 마우스 오른쪽 버튼으로 클릭하고 Nuget 패키지 복원을 선택하면이 메시지가 나타납니다.

모든 패키지가 이미 설치되어 있으며 복원 할 것이 없습니다.

그러나 그 52 오류는 여전히 있으며 도구-> NuGet Package Manager-> NuGet Packages for Solution에 솔루션 에 아무것도 설치되어 있지 않으며 최근 VS2017을 15.5.4로 업데이트했습니다.


NuGet이 복원하도록 동의 했습니까? 도구, 옵션으로 이동하여 NuGet을 검색하고 "NuGet 허용 ..."옵션을 확인하십시오.
IMPS

Mac에있는 사람이라면이 문제가 발생하여 저장소 경로 (git pull 동안 생성 된 공간)에서 공백을 제거 하여이 문제를 해결했습니다. My % 20Project는 MyProject가됩니다.
David Hague

답변:


454

도구> NuGet 패키지 관리자> 패키지 관리자 콘솔에서이 오류를 해결하려면 다음을 실행하십시오.

dotnet restore

dotnet cli가 모든 필수 파일을 처음에 작성하지 않기 때문에 오류가 발생합니다. dotnet restore를 수행하면 필요한 파일이 추가됩니다.


21
이것은 또한 빌드 서버의 수정 사항입니다. 정상적인 NuGet 복원 후 "dotnet restore"를 실행하는 명령 줄 단계를 추가했습니다.
Mark

24
당신은 또한 MSBuild에서 할 수 있습니다 : msbuild MySolution.sln / t : Restore
Der_Meister

3
/ t : Restore 옵션을 추가하는 @Der_Meister의 솔루션은 저에게 효과적이지만 솔루션을 두 번 빌드해야했습니다 (두 개의 별도 빌드 단계). 먼저 / t : Restore 옵션을 사용하고 옵션없이 다시 사용하십시오.
Michael

16
@Michael, msbuild를 시도하십시오 MySolution.sln / t : Restore; Build
Der_Meister

8
솔루션 파일이 둘 이상인 경우해야 할 일dotnet restore solutionfilename.sln
ECH

97

제 경우에는 오류가 GIT 리포지토리였습니다. 이름에 공백이있어 프로젝트를 복원 할 수 없습니다.

이것이 문제라면 복제 할 때 GIT 저장소의 이름을 바꾸십시오.

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

6
나는 이것이 가능하지 않을 것이라고 스스로 생각했다. 다른 제안 된 솔루션에 대해 한 시간 더 노력한 후에 마침내 필사적 으로이 문제를 해결하고 문제를 해결했습니다. 젠장!
Stark

2
이것은 내가 겪고있는 문제를 해결했습니다. 대단히 감사합니다!
Sharbel

3
이 답변은 게시물이 아닌 시작 부분에 있어야합니다. 내 문제를 해결했습니다.
CodeWarrior

2
당신은 내 하루를 구했다! 감사합니다.
mpatel

3
내 경우에는 방금 % 20을 제거하여 실제 폴더의 이름을 바꾸고 일반 공간으로
바꾸면

42

'dotnet restore'가 작동하지 않는 경우 다음 단계가 도움이 될 수 있습니다.

  1. Visual Studio >> 도구 >> 옵션 >> Nuget Manager >> 패키지 소스
  2. 타사 패키지 소스를 확인하지 않았습니다.
  3. 솔루션을 재구성하십시오.

3
최근에 Identity Server 빠른 시작 # 1 : 클라이언트 자격 증명을 사용하여 API 보안 및이 솔루션에 대해이 문제가 발생했습니다.
Tharindu Jayasinghe

감사합니다! 실제로 더 이상 관련이없는 소스를 다른 솔루션에서 제거하고 nuget.orgMSVS Offline Packages 소스에서 업데이트 버튼을 클릭했습니다 . 이 dotnet restore작업 후 .
CPHPython

고마워요!
tdracz

33

여기에 게시 된 다른 답변에 따라 NuGet 패키지가 복원되었는지 확인한 후에 Visual Studio를 닫았다가 다시 열면이 문제가 해결되었습니다.


닷넷 복원을 수행 한 후에 만이 기능이 작동했다고 믿을 수 없음
Gaspa79 15:08

업무용 LAN에서 NuGet에 대해 제한적인 별도의 연결 문제가있었습니다. 내 PC를 재부팅하면 문제가 해결되었습니다!
네오

때로는 CLI 도구를 사용 get하고 buildVS를 열지 않기 때문에 이것은 실제로 답 이 아닙니다. VS가 자동으로 프로젝트 종속성을 해결하기 때문에 VS와 함께 작동하는 이유를 알고 있습니다.
TS

질문은 "비주얼 스튜디오 2017"로 태그되어 @TS, 그래서 나는이 말 것 입니다 답변. 그러나 문제는 VS 해결 종속성에 달려 있다는 흥미로운 점을 제기합니다. 무엇이 잘못되고 있는지에 대한 더 많은 정보가 있다면, 재미있는 독서가 될 것이라고 확신합니다
OutstandingBill

+1. 너는 나를 잡았다! VS와 함께, 오 잘. 그의 버전 15.5는 버그였습니다. 15.5 / 15.6에는 참조 확인에 많은 문제가 있다고 생각합니다. 이제 여기에 답이 있습니다 stackoverflow.com/a/58548856/1704458
TS

20

Azure DevOps / VSTS 환경에서 나와 같은 문제가있는 사람들에게 비슷한 메시지가 표시됩니다. 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

/t:Restore빌드 솔루션의 MSBuild 인수에 추가하십시오 .


9

내가 할 때 나를 위해-dotnet 복원 여전히 오류가 발생했습니다.

나는 갔었다

1 도구-> NuGet Package Maneger-> 패키지 관리자 설정-> "Nuget Catche (s)에서 지우기"를 클릭하십시오.

2 개의 닷넷 복원

해결 된 문제.


다음에 이런 일이 발생하면 시도하겠습니다. 그것은 (가까이 VS를 다시 열) 나보다 더 나은 방법이 될 일반적으로 소요되는 수있는 연령을 나를 위해.
OutstandingBill

6

Visual Studio 2017에서 다음 단계를 수행하십시오.

1) 도구 => 옵션 => NuGet 패키지 관리자 => 패키지 소스를 선택한 다음 Microsoft Visual Studio 오프라인 패키지 옵션 을 선택 취소 하십시오 . 여기에 이미지 설명을 입력하십시오

2) 이제 Tool => NuGet Package Maneger => Package Manager Console을여십시오. 3) PM> dotnet restore에서 명령을 실행하십시오.

그것의 작동 희망 ...



5

도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔을 선택하십시오.

그런 다음 실행하십시오.

dotnet restore <project or solution name>

3

대답에 조금 늦었지만 이것이 가치를 더할 것 같습니다. 오류를 보면 CI / CD 파이프 라인에서 발생하는 것 같습니다.

"dotnet build"만 실행하면 충분합니다.

닷넷 빌드

dotnet 빌드는 기본적으로 "복원"을 실행합니다.


1
또한 파이프 라인 (빌드 전)에 ".NET 코어"단계를 추가하고 드롭 다운에서 "dotnet restore"명령을 선택하면됩니다. VSTS 파이프 라인에 대해 구체적으로 이야기하고 있습니다.
Lech Osiński

3

위의 어느 것도 나를 위해 일하지 않았습니다. 그러나 단순히 'bin'및 'obj'폴더를 모두 삭제하면 트릭이 발생했습니다.


이 문제는 Dockerfile에서 작업 할 때 나에게 발생했습니다. 해당 폴더를 삭제하면 컨테이너의 닷넷 복원이 올바르게 작동했습니다.
Johannes


2

VSTS를 사용할 때 global.json 파일을 확인하십시오. sdk 버전을 "2.2"로 입력하여 구문 분석 오류가 발생했습니다 (그러나 로컬로 빌드 할 때는 아닙니다). 정식 버전 인 "2.2.104"를 추가하면 문제가 해결되었습니다.


2

전체 솔루션이 아닌 솔루션에서 개별 프로젝트를 빌드하기 위해 빌드 파이프 라인에서 'Visual Studio Build'작업을 설정하면 Azure DevOps에서이 오류로 몇 시간을 잃었습니다.

그렇게하면 DevOps가 빌드 대상으로 지정한 프로젝트에서 참조한 프로젝트를 빌드하지 못하거나 프로젝트를 참조하지 않습니다. .asset 파일이 생성되어이 문제가 발생합니다.

나를위한 해결책은 VS Build 작업 사용에서 MSBuild 작업으로 교체하는 것이 었습니다. 개별 프로젝트에 MSBuild 작업을 사용하면 빌드중인 프로젝트에서 참조하는 모든 프로젝트가 올바르게 빌드되고이 오류가 제거됩니다.


1

단순히 NuGet 패키지를 복원하기에 확실하지 않은 작업 메이크업을 않는 경우 도구 -> 옵션 -> NuGet 패키지 관리자 -> 일반 에서 패키지 복원 은 "NuGet 누락 된 패키지를 다운로드 할 수 있도록 허용"선택되어 있는지.

그런 다음 NuGet 패키지를 복원 다시하거나 REBUILD OBJ 삭제 및 빈 폴더 후.


1

@ mostafa-bouzari 제안 이 도움이되지 않으면 '오류 목록'또는 '출력'창에서 NuGet이 복원 할 수없는 오류 (예 : 프록시 뒤에있는 순 문제로 인해)를 자세히 확인하십시오.


필자의 경우 회사 VPN에 연결되지 않았기 때문에 Nuget Restore가 개인 NuGet 저장소에 연결할 수 없습니다. 패키지 관리자 콘솔 로그 확인이 도움이되었습니다.
Alexander Puchkov

1

빌드 도구가 어떻게 설정되어 있지 않은 경우에 발생이 문제는 restore사용으로 설정 프로젝트에 PackageReferencepackages.config대부분 및 인터넷 코어 및 Netstandard 새로운 스타일의 프로젝트에 영향을 미칩니다.

Visual Studio를 열고 빌드하면이 문제가 해결됩니다. 그러나 자동화, CLI 도구를 사용하면이 문제가 나타납니다.

많은 솔루션이 여기에 제공됩니다. 그러나 기억해야 할 것은 강요해야한다는 것 restore입니다. 경우 dotnet restore에 따라 빌드 전에 사용합니다. MsBuild를 사용하여 빌드하는 경우 /t:Restore명령 에 스위치를 추가 하십시오.

결론적으로, 복원을 활성화 할 수없는 이유를 알아야합니다. 너겟 소스가 잘못되었거나 복원 조치가 누락되었거나 nuget.exe가 오래되었거나 위의 모든 항목이 있습니다.


1

내가 만난 매우 이상한 경험!

이전에 GIT bash 및 GIT cmd-Line으로 복제했지만 위의 문제가 발생했습니다.

나중에 Tortoise-GIT로 복제했으며 모든 것이 예상대로 작동했습니다.

이것은 미친 대답 일지 모르지만 한 번 시도하면 시간을 절약 할 수 있습니다!


1

VS-2019 vs 16.4.0에서 WinForms Core 3.1 프로젝트 (프로젝트 템플릿에서)를 추가하고 즉시 실행하려고 시도한 후에 이것을 보았습니다. 전체 솔루션을 정리 또는 재 구축하지 못했습니다.

방금 내 솔루션을 다시로드했습니다. 즉, File / Close Solution입니다. 그런 다음 다시 열어서 다시 빌드하면 문제가 해결되었습니다.


1

이 오류가 Azure DevOps (TFS) 에서 빌드의 일부로 발생하고 빌드에 이미 NuGet 복원 작업이있는 경우이 오류는 NuGet 복원 작업이 모든 패키지를 복원 할 수 없음을 나타냅니다 (특히 사용자 지정 패키지 소스 ( 내부 NuGet 서버와 같은). /t:Restore;BuildMSBuild 인수에 추가 하는 것이 오류를 해결하는 한 가지 방법 인 것 같지만 MSBuild에서 추가 NuGet 복원 작업을 수행하도록 요청합니다. MSBuild가 Visual Studio에서 구성된 사용자 지정 패키지 소스를 사용하기 때문에 이것이 성공했다고 생각합니다. 바람직한 해결책은 NuGet 복원 작업을 수정하는 것입니다.

NuGet 복원 작업을위한 사용자 지정 패키지 소스를 구성하려면

  1. NuGet.config모든 패키지 소스 (Microsoft Visual Studio Offline Packages, nuget.org 및 사용자 정의 패키지 소스)를 나열 하는 파일을 작성하고 소스 제어에 추가하십시오.
  2. 사용할 피드 아래의 Nuget 복원 태스크에서 다음을 수행 하십시오 . 내 NuGet.config에서 피드 옵션을 선택하십시오 .
  3. 경로를 제공하십시오 NuGet.config.
  4. /t:Restore;BuildMSBuild 작업에서 옵션을 제거하십시오 .

추가 정보는 여기에서 확인할 수 있습니다 .


0

VS2017에서 닷 넷 코어에서 람다를 만들 때 오류가 발생했습니다. 나를 위해 일한 것은 프로젝트를 언로드하고 다시로드하는 것이 었습니다.


0

패키지 관리자 콘솔에서 dotnet restore를 실행 한 후 VS를 관리자로 실행하십시오.


0

또 다른 방법은 Dropbox를 사용하는 경우 Conflicted파일 이름을 확인하고 리포지토리를 검색하여 충돌하는 모든 파일을 삭제하십시오.

파일을 이동 한 경우에 발생할 수 있습니다.


0

이 결함의 원인 : 파일 탐색기에서 주입 된 Nuget을 제거해야합니다. 솔루션 : 시스템에서 해당 Nuget을 제거한 후 다음 위치에서 제거하십시오. 도구 => 옵션 => NuGet 패키지 관리자 => 패키지 소스를 선택한 다음 Microsoft Visual Studio 오프라인 패키지 옵션을 선택 취소하십시오.



0

제 경우에는 사용 가능한 패키지 소스에 문제가있었습니다. 로컬 nuget 저장소 폴더를 새 경로로 이동했지만 Nuget Available Package Sources에서 업데이트하지 않았습니다. 경로 문제를 해결하면 사용 가능한 패키지 소스에서 업데이트 한 후 모든 항목 (너겟 복원 등)이 제대로 작동했습니다.


0

나를 위해 그것은 너겟 소스 자격 증명 문제로 밝혀졌습니다. 최근에 넥서스 서버에 액세스하기 위해 비밀번호를 변경했지만 Visual Studio는 Windows 자격 증명 관리자를 통해 해당 서버의 너겟에 액세스하려고 할 때 여전히 기존 비밀번호를 사용하고있었습니다. 이 문제를 해결하기 위해 자격 증명 관리자에서 오래된 자격 증명 항목을 삭제해야했고, Nuget 복원을 수행 한 후 자격 증명 관리자에 다시 저장된 새 암호를 입력 할 수있는 암호를 입력하라는 메시지가 표시되었습니다. CmdKey.exe를 사용하여 cmd 행에서 자격 증명 관리자에 액세스 할 수 있습니다.


0

이것을 시도하십시오 (그것은 나를 위해 일했습니다) :

  • VS를 관리자 권한으로 실행
  • 최신 버전으로 NuGet 수동 업데이트
  • 프로젝트에서 모든 bin 및 obj 파일을 삭제하십시오.
  • VS 다시 시작
  • 재 컴파일

0

당신은 갈 수 있습니다 : 도구> NuGet 패키지 관리자> 패키지 관리자 콘솔

그런 다음 실행하십시오.

닷넷 복원

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.