MEF 플러그인 프로젝트에 대한 참조를 추가 할 때 왜 경고 아이콘이 표시됩니까?


321

플러그인 프로젝트를 직접 참조하고 플러그인 클래스를 인스턴스화하여 플러그인의 핵심 클래스를 테스트하고 싶습니다. 테스트 콘솔 앱 프로젝트를 만들고 플러그인 프로젝트에 프로젝트 참조를 추가하면 참조 목록의 참조 옆에 경고 아이콘 (느낌표가있는 노란색 삼각형)이 나타납니다.

대신 플러그인의 어셈블리 빌드 출력 인 dll에 대한 참조를 추가하면 그러한 경고가 표시되지 않습니다. 이 경고가 무엇을 말하려고합니까?


8
대부분의 경우 경고 삼각형에는 오류 창에 도구 설명이 있거나 (실패한) 항목이 있습니다. 추측에 따라 두 프로젝트는 호환되지 않는 종속성이 있습니다.
Damien_The_Unbeliever

2
빌드하려고 할 때 콘솔에 경고가 있습니까?
Jite

231
다른 .net
프레임 워크

4
@OP 당신은 kad81의 답변을 정답으로 선택할 수 있습니까
Andy

5
이것은 항상 나를 얻는다. .NET 4 솔루션에 새 프로젝트 추가 및 기본값은 4.5입니다.
Robin French

답변:


674

질문의 의견에서 언급했듯이 프로젝트마다 다른 .NET Framework 버전으로 인해 문제가 발생할 수 있습니다. 다른 기본 버전이 사용되지 않도록 새 프로젝트의 속성을 확인하십시오.


13
또한 알아야 할 것은 Visual Studio가 왜 그런 참조를 추가하도록 허용했는지입니다.
Anders Lindén

16
VS 2015를 사용하고 있는데 여전히 문제가 있습니다. 내가 여기 올 때까지 나는 30 분을 잃었다.
Alisson

14
호버 텍스트 나 문제가 무엇인지 설명하는 빌드 오류조차 없습니다
matao

6
이것이 문제의 근본임을 확인할 수 있습니다. 또한 업데이트 15.3이 포함 된 Visual Studio 2017에서 실제로 의미있는 메시지가 표시되지 않는 문제가 해결되지 않았 음을 확인할 수도 있습니다. 매우 성가신.
Greg R Taylor

4
@matao 동의합니다! 그것의 성가신 오류에 대한 자세한 내용을 얻을 수 없습니다 ...
nterry

74

ASP.Net 웹 앱과 웹 앱 내에서 참조해야하는 두 개의 라이브러리 클래스 프로젝트에서 동일한 문제가 발생했습니다. 빌드가 실패한 이유와 참조가 유효하지 않은 이유에 대한 정보가 없습니다.

해결책은 모든 프로젝트가 동일한 대상 프레임 워크를 갖도록하는 것입니다.

Visual Studio 2015- 프로젝트> 속성> 응용 프로그램> 대상 프레임 워크를 마우스 오른쪽 단추로 클릭하십시오.

솔루션 저장, 청소 및 재 구축 프로젝트 참조가 더 이상 노란색 경고로 나타나지 않아야하며 솔루션이 컴파일됩니다.

내 웹 응용 프로그램은 .Net 4.5를 대상으로하는 반면 다른 두 개의 종속 라이브러리 클래스 프로젝트는 .Net v4.5.2를 대상으로했습니다.


44

함께 사용하려는 프로젝트 둘 다 (또는 모두) :

프로젝트> 속성> 애플리케이션> 대상 .NET 프레임 워크를 마우스 오른쪽 단추로 클릭하십시오.

두 프로젝트 (또는 모두)가 동일한 .NET 프레임 워크 버전을 사용하고 있는지 확인하십시오.


완벽 해, 나를 위해 일했다! .NET Framework 4.5.2와 함께 MVC 프로젝트를 수행했습니다. 그리고 그것을 참조하는 클래스 라이브러리는 .NET Framework 4.7이었습니다.
Mike Upjohn

기존 솔루션에 추가 된 새로운 프로젝트는 어떤 버전을 알기에 충분할 것이라고 생각하지만 슬프게도 그렇지 않습니다.
Ron

38
  1. 각 프로젝트마다 모든 버전이 동일한 지 확인하십시오 클릭하고 여기에서 버전을 확인하십시오. 프로젝트> 속성> 애플리케이션> 대상 .NET 프레임 워크
  2. ㅏ. 도구> Nuget 패키지 관리자> 패키지 관리자 콘솔 유형 업데이트 패키지- 재설치로 이동하십시오 (작동하지 않는 경우 2.b로 진행하십시오). ).

    비. 이것은 비판적이지만 작동하는 가장 큰 가능성 입니다. 일반적으로 .csproj의 맨 아래에있는 </ Target> 여러 줄이있는 <Target>을 제거하십시오 .

  3. 솔루션을 저장,로드 및 빌드하십시오.


1
덕분에 Visual Studio에서 .Net 버전에 대한 멋진 오류 메시지가 여기에 엉망이되지 않습니다!
colmde

1
@colmde 흥미롭게도 솔루션을 정리하면 출력 창에 다음 메시지가 표시됩니다. '대상 프레임 워크 .NetFramework XXX 대신 .NetFramework XXX를 사용하여 패키지가 복원되었습니다. 패키지가 프로젝트와 완전히 호환되지 않을 수 있습니다 '
elszeus

1
다른 답변에서 언급되지 않은 Part 2.b는 나에게 중요했습니다! 2.b <Target> 제거 여러 줄이있는 </ Target> 일반적으로 .csproj의 맨 아래에 있습니다.
shelbypereira

1
Part 2.b는 완전히 미쳤지 만 작동합니다! 감사합니다
Elo

1
고마워 2.b도 나를 위해 트릭을했다. 이걸 스스로 알아 내지 못했을 것입니다.
Henrik Clausen

23

현재 솔루션의 모든 프로젝트에서 모든 패키지를 다시 설치하십시오.

Update-Package -Reinstall

2
이 제안이 내 문제를 직접 해결하지는 못했지만 시나리오에 적합한 방향을 제시했습니다. 그것이 도움이 될 수있는 사람들을 위해, 실제로 업데이트 할 패키지를 찾기 위해 NuGet 패키지 소스를 v3으로 변경해야했습니다. docs.nuget.org/consume/package-manager-dialog#package-sources
John Lee

1
모든 패키지를 제거하고 설치하면 노란색 삼각형이 다시 나타납니다.
Anders Lindén

8

동일한 프레임 워크 버전을 대상으로하는 프로젝트 가 있는지 확인하십시오 . 그 이유는 대부분 다른 프로젝트의 참조를 추가하는 현재 프로젝트가 나머지 프로젝트와 다른 .net 프레임 워크 버전을 가리 키기 때문입니다 .


5

참조 된 dll 및 DLL을 추가하는 프로젝트의 NETFramework를 확인하십시오. 예 : DLL ==> supportedRuntime version = "v4.0"프로젝트 ==> supportedRuntime version = "v3.0"

경고 아이콘이 나타납니다. 솔루션 : dll 버전 일관성을 확인하십시오.


5

나를 위해 .NET Framework 4.7.1 콘솔 응용 프로그램에서 .NET Standard 2.0 클래스 라이브러리를 참조 할 때이 문제가 발생했습니다. 예, 프레임 워크는 다르지만 호환 가능합니다 (.NET 표준은 .NET Core 및 .NET Framework 모두와 함께 움직여야합니다.) 프로젝트 참조 정리, 재구성, 제거 및 읽기 등을 성공하지 못했습니다. . 마지막으로 Visual Studio를 종료하고 다시 열면 문제가 해결되었습니다.


4

이 질문을한지 오래되었지만 누군가가 여전히 관심이 있다면 최근에 비슷한 아이콘이 나타났습니다. VS 2008을 사용하여 C # .net 프로젝트를 컴파일했습니다. VS가 해당 참조에 대한 어셈블리를 찾을 수 없음을 발견했습니다. VS를 두 번 클릭하면 참조가 새로 고쳐지고 일부는 [편집 : 지금 찾을 수 있음]의 아이콘이 제거되었습니다. 나머지 참조를 위해 각 어셈블리를 컴파일해야했습니다.


4

@ kad81 답변에 내 2 센트를 추가하면

Visual Studio-> 빌드-> 구성 관리자로 이동하십시오.

오른쪽 상단의 "Active Solution Platform"드롭 다운 (내 VS 2012)에서 "Mixed Platforms"인 경우 참조 타사 어셈블리를 기반으로 해당 플랫폼으로 변경하십시오.

그런 다음 목록의 각 프로젝트에서 모든 프로젝트에 대해 동일한 플랫폼을 선택해야합니다. x86이 없으면 ""를 선택하고 "x86"을 선택할 수 있습니다.

라이브러리 프로젝트를 먼저 다시 빌드 한 다음 프로젝트를 참조하십시오. 도움이 되었기를 바랍니다.


4

VS를 닫고 열어보십시오.

어리석은 것 같지만 위의 1 시간을 따른 후 모든 것이 정렬 된 것을 발견했습니다. VS 2017을 다시 시작했는데 문제가 사라졌습니다.


1
나를 위해 일했다. 어리 석거나 간혹 Visual Studio가 혼란스럽고 캐시가 망가졌습니다. 그것을 제안 해주셔서 감사합니다. 어리석은 생각은했지만 어리석은 일이라고 생각했기 때문에 싫었습니다. 한 시간 후에 다른 일도 할 수있었습니다.
Blake

2

Asp.net 코어에서는 프로젝트 이름 공간이나 이름을 변경하면 경고가 표시됩니다. 이런 종류의 경고를 제거하려면 프로젝트를 언로드하고 다시로드하십시오. 문제가 여전히 존재하면 어셈블리 참조를 찾을 수 없음을 의미합니다.


1

다른 이유로이 아이콘이있었습니다. 우리는 모든 프로젝트를위한 하나의 큰 솔루션을 가지고 있습니다 (약 100 개). 관심있는 프로젝트를 일부 선택하고 새로운 솔루션을 만들었습니다. 그러나 컴파일 된 dll에 대한 참조 대신 프로젝트 참조가있는 참조는 ....

몇 가지 연구를 한 결과 VS2015의 새로운 동작을 설명 하는 GitHub 에서이 링크를 찾았 습니다.

GitHub 페이지에서 프로젝트 참조를 이진 참조로 변환하는 해결 방법을 설명합니다.


1

작동하지 않는 일부를 수정하려면 때로는 일부 라이브러리 를 제거 하는 것이 합리적 입니다.

어쨌든, 나는 문제가 너무 넓고 다른 요인 으로 인해 발생할 수 있다고 생각 합니다. 하므로 내 상황 / 해결책을 공유하고 싶습니다.

Xamarin Forms 및 Telerik 라이브러리와 함께 프로젝트 (고객이 구입)가있었습니다. 일반적 으로 패키지 폴더 에는 라이브러리가없고 Nuget (유료)을 통해 사용할 수 있는 구성 요소와 관련이 있었습니다.

전체 프로젝트 참조는 "노란색"으로, 끔찍하고 무섭게 보였습니다.

솔루션 단지 있었다 제거하기 위해 그 Telerik의 참조 (즉를 사용하고 코드에서 몇 가지 컨트롤을 포함하여). 그 직후 모든 참조는 마술처럼 일반적인 일반적인 회색을 얻었고 오류는 대부분 사라졌습니다.

"대부분"- "요소가 어디에도 정의되어 있지 않습니다"라는 오류 메시지가 여전히 여전히 발생하기 때문에 이상하고 불편 함이 있지만 여전히 프로젝트를 컴파일하고 실행할 수 있습니다. 솔루션을 청소하고 Visual Studio를 다시 시작하고 약간기도하고 다시 청소하고 obj / bin 폴더를 제거하고 다시 시작하면됩니다. 잘 작동합니다.

중요한 것은 오류 메시지가 절대적으로 다른 것을 말하므로 사용 가능한 라이브러리 참조를 제거하는 것입니다. (예를 들어, "Xamarin.Build.Download.XamarinDownloadArchives를 찾을 수 없거나 찾을 수 없음"등)과 같은 것이지만 이는 참조가없는 것을 의미 할 수 있습니다.

그런 다음 패키지 폴더를 제거하고 프로젝트 / 솔루션을 다시로드 / 다시 열고 "Nuget 패키지 관리"로 이동하여 "복원"버튼을 클릭하십시오.


1

.Net Core 3.1을 대상으로하는 모든 프로젝트에서 Visual Studio 2019를 사용하는 솔루션은 다음과 같습니다.

  1. 청소 / 빌드 / 재 구축.
  2. Visual Studio 2019를 다시 시작하십시오.

0

나는 또한 같은 문제에 직면했지만 내 경우는 위와 약간 다릅니다. 다른 컴퓨터에서 만든 프로젝트를 열려고했습니다. 참조를 추가 할 때 패키지 폴더의 경로가 업데이트되지 않았으므로 VS를 다시 시작하거나 .NET 버전을 변경하거나 언급 한 권장 사항으로도 문제가 해결되지 않습니다. 메모장 ++에서 csproj 파일을 열고 패키지 폴더의 모든 상대 경로를 수정했습니다. 그때; 모든 경고가 사라졌습니다. 도움이 되길 바랍니다.



0

도와 주셔서 감사합니다. 문제를 해결 한 방법에 대한 분석은 다음과 같습니다.

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성

응용 프로그램에서 대상 프레임 워크를 변경하십시오. 필자의 경우 ImageSharp는 .Net 4.6.1을 사용하고있었습니다. packages.config에서 찾을 수 있습니다.

프로젝트 참조로 이동하십시오. SixLabors에는 노란색 삼각형이 있습니다. NuGet 패키지를 업데이트해야합니다.

참조> NuGet 패키지 관리를 마우스 오른쪽 단추로 클릭하십시오.

SixLabors를 업데이트하십시오.

약간의 코드 업데이트가있을 수 있지만 (아래 참조) 내 문제가 해결되었습니다.

ImageSharp.Image를 ImageSharp.PixelFormats.Rgba32로 변환 하시겠습니까?


0

Visual Studio 2019에서 내 프로젝트 대상 프레임 워크 중 하나는 .net 코어 였지만 대상 프레임 워크가 .net 표준 인 다른 프로젝트를 참조하고있었습니다. 모든 프로젝트를 .net 표준을 참조하도록 변경했으며 아이콘이 사라졌습니다. 프로젝트가 무엇인지 보려면 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 클릭하고 대상 프레임 워크를보십시오. 프로젝트 자체를 정상적으로 클릭하고 <PropertyGroup> 아래의 <TargetFramework> 태그를 볼 수도 있습니다.


0

다중 프로젝트 솔루션에서 다른 모든 일이 실패한 경우 ... 시작 프로젝트에서 확인하십시오. 종속성-> 어셈블리를 참조하고 오류가있는 참조 프로젝트가 있는지 확인하십시오. 그것을 제거하고 다시 빌드하십시오.

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