VS 2017 메타 데이터 파일 '.dll을 찾을 수 없습니다.


86

똑같은 문제를 가진 또 다른 질문이 있다는 것을 알고 있지만 모든 답변을 검토했지만 아무도 나를 도왔습니다. :( ( 이것이 질문이었습니다. )

방금 새 ASP.NET MVC 프로젝트를 만들고 솔루션에 '.dll'몇 개를 추가했습니다. 이제 프로젝트를 빌드하려고 할 때 5 개 라이브러리 중 3 개에 아래와 같은 오류 메시지가 표시됩니다.

Error   CS0006  Metadata file 'C:\Users\...\source\Database\bin\Debug\DataAccessLayer.dll' could not be found   Logic   C:\Users\...\source\Logic\CSC   1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\Logic\bin\Debug\Logic.dll' could not be found    PTS2-MVC    C:\Users\...\source\PTS2-MVC\CSC    1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\PTS2-MVC\bin\PTS2-MVC.dll' could not be found    PTS2-MVC.Tests  C:\Users\...\source\PTS2-MVC.Tests\CSC  1   Active

해당 .dll의 bin \ debug 폴더로 이동하면 비어 있고 오류 메시지가 표시되지 않는 다른 .dll이 비어 있지 않음을 알 수 있습니다. 그러나 나는 이것을 고치는 방법이나 이것을 실현하기 위해 내가 한 일을 알지 못합니다.

가장 일반적인 대답은 이동하는 속성솔루션 및 이동 구성선택 해제 > - 적용 -> 확인적용 다시하지만, 작동하지 않았다


추측이지만 VS가 정리 한 것 같습니다. 그 dll이 무엇인지 또는 어디에서 왔는지 확실하지 않지만 당신이 그들을 만든 사람이라면 어떤 솔루션이 있는지 확인할 것입니다. 이러한 폴더가 현재 솔루션이 빌드중인 폴더 인 경우 솔루션을 다시 정리하면 이러한 폴더를 찾을 수 없습니다.
TheNoob

정리 ^ 재 구축 || 비주얼을 다시 시작하고 다시 확인하십시오
Asif Raza

@AsifRaza 나는 이미 그렇게 여러 번
흘렀지만

1
@TheNoob 그래서 당신은 내가 내 솔루션을 시도하고 청소 한 다음 빌드해야한다고 말합니까? 내가 이미 시도했기 때문에
Svenmarim

bin 폴더에서 모두 삭제 한 다음 다시 빌드 ^ 확인
Asif Raza

답변:


121

문제는 내 프로젝트에 다른 정상적인 오류 메시지가 있었고 분명히 수정 한 후 프로젝트를 다시 정리하고 빌드했을 때 모든 .dll이 성공했다는 것입니다.

프로젝트에 다른 오류 메시지가 없는지 확인하고 만약 있다면 먼저 수정하세요!


6
실제로 동일한 문제가 있었지만 다른 오류가 표시되지 않고 누락 된 .dll에 대한 1 개의 오류 만 표시되었습니다. 그러나 어느 시점에서 (코드를 변경하지 않고) 갑자기 이전에 나타나지 않았던 구문 오류가 나타났습니다. 그 오류를 수정 한 후 말씀하신 것처럼 청소하고 다시 빌드했으며 모든 것이 작동했습니다.
jbyrd

23
여기에도 같은 문제가 있습니다. 오류 목록 창에 가끔 오류가 표시되지 않는 버그가있는 것 같습니다 (그리고 다른 경우에는 정리 / 재 구축을 수행해도 수정 된 오류가 계속 표시됨). 출력 창이 더 안정적이므로이 문제가 발생할 때 확인하십시오.
Santosh

1
Visual Studio의 "오류 목록"탭에서 경고를 활성화해야한다는 것을 알았습니다. 참조 된 .dll을 해결할 수 없다는 경고가 나왔습니다. 기존 참조를 제거하고 올바른 디렉토리에 새 참조를 추가해야했습니다. 이제 모든 것이 잘됩니다.
user1431072

위의 내 의견을 참조하십시오.하지만 기본적으로 VS의 일부 버그가 솔루션 속성 페이지에서 빌드 옵션을 선택 취소 / 확인할 때까지 오류가 표시되지 않는 것을 제외하고는 기본적으로 동일합니다.
훔치는

1
이것이 나를 정말로 도왔던 유일한 대답입니다. 훌륭한! 감사!
ɐsɹǝʌ ǝɔıʌ 2012-08-28

34

이 오류 수정 단계 : 메타 데이터 파일 .dll을 찾을 수 없습니다.

  1. 모든 프로젝트를 청소하십시오.

  2. 모든 프로젝트를 언로드합니다.

  3. 모든 프로젝트를 다시로드합니다.

  4. ReBuild 솔루션.

그런 다음 문제가 해결되었습니다.


이것은 정말로 내 사건을 해결했습니다.
Vu Nguyen

언로드와 재 장전이 저에게 핵심이었습니다. 나는 그것을 할 때 까지이 문제에 오랜 시간을 보냈습니다!
ikariw

15

제 경우에는 오류가 있었지만 VS에 의해 제대로 구문 분석되지 않고 "오류 목록"창에 표시됩니다. 이를 찾으려면 빌드 창에서 ol "출력"을보고 위에서 아래로 시작하는 메시지를 구문 분석하고 실제 오류를 해결합니다. M $, 고쳐주세요! 이것은 세계 집단 개발자들의 엄청난 시간 낭비입니다.


1
이것은 나를 위해 문제를 해결했습니다. 다른 모든 솔루션을 시도했지만 출력 창은 대상 프레임 워크 넷 프레임 워크 4.6보다 높은 넷 프레임 워크 4.7.2에 대해 빌드중인 프로젝트를 가리 켰습니다. .csjproj를 4.6을 가리 키도록 편집해야했습니다.
Calum Mullen

11

프로젝트 폴더의 이름을 다시 확인하십시오. 제 경우에는 프로젝트 폴더의 이름이 공백으로 지정되었습니다. git bash를 사용하여 Team Foundation Server에서 프로젝트를 복제 할 때 폴더 이름의 공백이 "% 20"으로 변환되었습니다. 다시 공백으로 변경하면 문제가 해결되었습니다.


2
STUPID VSTS 때문에 같은 문제입니다.
Arsen Khachaturyan

2
이것이 위의 오류에 대한 정확한 이유입니다. 팁 고마워. 그것은 일
user3785553

10

여러 프로젝트가 포함 된 솔루션에서이 문제가 발생했습니다.

.csproj 를 복제 하고 복사본을 솔루션에 추가 한 것입니다. .csproj 파일은 포함 <ProjectGuid>요소를. 복사 한 프로젝트의 GUID를 새 프로젝트로 설정했습니다.

업데이트 : 사용하는 GUID는 중요하지 않으며 다른 프로젝트의 GUID와 달라야합니다. Visual Studio 내에서 새 GUID를 만들고 Tools -> Create GUID중괄호 사이에있는 부분 (예 : {...}. 이를 <ProjectGuid>요소 의 새 값으로 사용하십시오 .

또한 다음 단계를 수행했습니다 (필수는 아니지만 다 치지는 않습니다).

  1. 솔루션 닫기
  2. bin 폴더 삭제
  3. 모든 obj 폴더 삭제
  4. 개방형 솔루션 및 구축

6

이 단계에 따라이 문제를 해결합니다.

  1. 깨끗한 솔루션
  2. Visual Studio 닫기
  3. 프로젝트 디렉토리에서 / bin 삭제
  4. Visual Studio 다시 시작
  5. 솔루션 재 구축

1
: 검색 및 시도 5시간 후, 솔루션은 저를 저장 주셔서 감사합니다
마수드

3

나는 같은 문제가 있는데, 문제는 솔루션 경로에 이름에 공백이 있고 어떤 이유로 패키지를 해결하지 못한다는 것입니다. 내 저장소를 다시 다운로드하고 이름에 공백이없는 솔루션의 이름을 바꿉니다.

예 :

/Repo/Project Name/src

해야한다

/Repo/ProjectName/src

여기도 똑같지 만 %20폴더 이름에 있었어요 .
Wojtek Turowicz

3

나를 위해 청소와 건물이 작동하지 않았습니다. 프로젝트 언로드가 작동하지 않았습니다. Visual Studio 또는 PC를 다시 시작해도 작동하지 않았습니다. 이것이 작동 한 것입니다.

오류를 발생시키는 각 프로젝트로 이동하고 참조에서 문제가있는 프로젝트에 대한 참조를 삭제하고 다시 추가하십시오. 그것은 문제를 해결합니다.

문제는 프로젝트를 이동 (예 : 폴더 내에서 이동) 한 다음이를 참조하는 다른 프로젝트에서 경로가 잘못되어 찾을 수없는 것과 관련된 것 같습니다.


내 프로젝트의 디렉토리를 변경하여 dll이 모두 다시 빌드를 사용하지 않는 문제를 일으키고이 답변이 내 문제를 해결합니다.
Alain Elemia

3

"Rebuild Solution"후에 "Error List"보기에 다른 오류가 표시되지 않더라도 동일한 문제가 발생했습니다. 그러나 "출력"보기에서 문제의 원인이되는 오류를 확인했습니다.

기본 참조 "C : ... \ myproj.dll"은 ".NETFramework, Version = v4.6.1"프레임 워크에 대해 빌드 되었기 때문에 확인할 수 없습니다. 현재 대상 프레임 워크 ".NETFramework, Version = v4.5"보다 높은 버전입니다.

이 문제를 수정하면 문제가 해결되었습니다.


2

확인해야 할 또 다른 사항은 호출하는 프로젝트가 동일한 또는 이후 버전의 프레임 워크를 사용하고 있는지 확인하기 위해 참조 된 프로젝트의 대상 프레임 워크입니다.

나는이 문제가 있었고 이전에 제안 된 모든 답변을 시도한 다음 직감으로 프레임 워크를 확인했습니다. 참조 된 프로젝트 중 하나는 호출 프로젝트가 4.5.2 일 때 4.6.1을 대상으로했습니다.


여기도 마찬가지입니다.
Anthony Queen

2

bash 에서이 명령을 실행하여 모든 bin을 삭제하십시오.

$ find . -iname "bin" -o -iname "obj" | xargs rm -rf

그래도 다른 사람을 위해 작동한다고 보장 할 수는 없습니다.

또한 모든 bin 파일을 삭제하므로 모든 프로젝트를 다시 빌드해야합니다. 사용하기 전에 관련 디렉토리로 이동하는 것이 가장 좋습니다.


2

내 솔루션을 정리하면 Visual Studio 2017에서이 문제가 발생했습니다. 프로젝트를 언로드 / 다시로드하거나 더 많은 정리를 수행해도 아무런 차이가 없습니다. 작동 한 것은 Visual Studio를 닫고 다시 시작하는 것뿐입니다.


VS 2019에서도 마찬가지입니다. VS를 닫고 솔루션을 다시 여는 것이 도움이되었습니다.
Heri

2

모든 프로젝트가로드되었는지 확인하십시오. 제 경우에는 프로젝트 중 하나가 언로드되었고 프로젝트를 다시로드하면 오류가 해결됩니다.


2

제 경우에는 .csproj 파일을 열고 다음과 같이 참조를 직접 추가해야했습니다 (Microsoft.Extensions.Identity.Stores.dll이 누락되었습니다).

<Reference Include="Microsoft.Extensions.Identity.Stores">
  <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.identity.stores\2.0.1\lib\netstandard2.0\Microsoft.Extensions.Identity.Stores.dll</HintPath>
</Reference>

2

Visual Studio를 닫고 솔루션의 .suo 파일을 찾아 삭제 한 다음 Visual Studio를 다시 엽니 다.


2

나를 위해 일한 것 :

패키지 관리자 콘솔 (Visual Studio 2019 Comunity) :

Install-Package NuGet.CommandLine
nuget locals all -clear

솔루션을 다시 빌드하십시오.


1

제 경우에는 같은 오류가 발생했습니다. 내 프로젝트 솔루션 중 하나는 다른 NuGet 위치의 어셈블리를 참조했습니다. 이 오류를 해결하고 다시 빌드하기 위해 올바른 위치로 변경했습니다. 프로젝트가 성공적으로 빌드되고 다른 모든 오류가 사라졌습니다.


1

나는 이와 같은 오류가 있었다. 제 경우에는 다른 라이브러리를 내 솔루션에 프로젝트로 포함하여 참조하는 라이브러리 (commsLibrary라고 함)를 구축했습니다. 나중에 프로젝트를 빌드하고 commsLibrary를 추가 했을 때 빌드 할 때마다 메타 데이터 파일을 찾을 수 없다는 오류가 발생했습니다. 그래서 내 통신 라이브러리가 현재 프로젝트를 참조하는 라이브러리를 추가하면 빌드 할 수있었습니다.


1

많은 고민 끝에 내가 찾은 해결책이 여기 있습니다.

  1. 프로젝트 폴더를 엽니 다.
  2. Your_Project_Name.csproj [Visual C # 프로젝트 파일 (.csproj)] 찾기
  3. 텍스트 편집기에서 해당 파일을 열고 누락 된 파일 ItemGroup을 찾습니다.

    <ItemGroup> <None Include="..." /> </ItemGroup>

  4. 해당 ItemGroup을 제거하고 프로젝트를 다시 열고 빌드하십시오.

  5. 해당 참조가 중요한 경우 다시 추가하십시오.


1

종속성에 따라 개별적으로 솔루션의 25 개 프로젝트 중 10 개 프로젝트를 빌드했습니다. 그런 다음 솔루션을 빌드하십시오. 나를 위해 고정


이것은 내 솔루션이었다
Lasitha

0

나는 같은 문제가 있었다. 내 문제는 팀의 다른 누군가가 수업 폴더를 옮겼고 프로젝트에서 그것을 찾고 있었다는 것입니다.

저에게는 44 개의 오류가있었습니다. 43은 .dll (종속성 검색)로 끝났고 오류 목록의 첫 번째 오류는 .cs (실제 클래스 검색)로 끝났습니다. 클린 빌드, 정리, 언로드, 다시로드, 빌드를 시도했지만 작동하지 않습니다. 결국 프로젝트에서 클래스를 찾았고 어쨌든 사용할 수없는 것으로 나타나기 때문에 삭제 한 다음 클린 빌드를 수행했습니다.

그것은 나를 위해 속임수를 썼습니다! 도움이 되었기를 바랍니다.


0

같은 프로젝트에 같은 이름의 파일 2 개 (및 클래스 2 개)가 있습니다.


0

제 경우에는이 문제를 일으킨 팀 탐색기 git 메뉴에서 하나의 파일을 직접 삭제했습니다. 솔루션 탐색기를 확인했을 때 삭제 된 파일이 참조되지 않은 파일로 계속 표시됩니다. 솔루션 탐색기에서 해당 파일을 제거했을 때 프로젝트를 성공적으로 빌드 할 수있었습니다.


0

나를 위해 일한 것은 다음과 같습니다.

오류가있는 참조 된 Nuget 패키지를 제거하고 다시 설치하십시오.


0

제 경우에는 테스트를 실행하고 오류 CS0006이 발생했습니다. 릴리스 모드에서 테스트를 실행하는 것으로 나타났습니다. 디버그 모드로 전환하면이 오류가 수정되었습니다.


0

이 문제는 솔루션의 이름을 바꾸고 .net 프레임 워크가 이전 솔루션을 찾을 수 없을 때 발생합니다.

이 문제를 해결하려면 솔루션의 이전 이름과 이에 대한 모든 종속성을 찾아 새 이름으로 바꿔야합니다. 파일 탐색기를 통해 실제 파일을 찾아야하는 경우 그렇게하십시오.

일반적으로 영향을받는 파일은 AssemblyInfo.cs, 이름 및 기본 네임 스페이스. 새 이름으로 업데이트해야합니다..slnProperties > Application > Assembly

파일 탐색기를 열고 이전 이름의 폴더가 여전히 존재하는 경우 삭제해야합니다. 그런 다음 오류가 사라질 때까지 솔루션을 정리하고 빌드하십시오. (필요한 경우 특히 영향을받는 프로젝트를 하나씩 정리하고 빌드하십시오.)


0

제 경우에는 모든 .cs파일을 주석 처리 한 프로젝트를 참조했습니다 .

예를 들어 ProjectApp은 ProjectUtility를 참조합니다. ProjectUtility에는 .cs파일이 하나만있었습니다 . 더 이상 사용하지 않아서 전체 파일을 주석 처리했습니다. ProjectApp에서는 ProjectUtility에서 코드를 호출하지 않았지만 using ProjectUtility;ProjectApp .cs파일 중 하나에 있었습니다 . 컴파일러에서 얻은 유일한 오류는 CS0006 오류였습니다.

.csProjectUtility 에서 파일의 주석 처리를 제거하고 오류가 사라졌습니다. 따라서 프로젝트에 코드가 없으면 컴파일러가 잘못된 어셈블리를 생성하거나 DLL을 전혀 생성하지 않는지 확실하지 않습니다. 나를위한 수정 사항은 모든 코드를 주석 처리하는 대신 ProjectUtility에 대한 참조를 제거하는 것이 었습니다.

참조를 제거하는 대신 참조 된 프로젝트의 모든 코드를 주석 처리 한 이유가 궁금한 경우, 나는 무언가를 테스트하고 ProjectApp.csproj파일 을 수정하고 싶지 않았기 때문에 그렇게했습니다 .

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