[c#] 내 클래스 라이브러리를 참조 할 수없는 이유는 무엇입니까?

Visual Studio 2008에 웹 사이트와 클래스 라이브러리가 포함 된 솔루션이 있습니다.

그런 다음 클래스 라이브러리를 참조해야하는 솔루션 외부에 다른 웹 사이트 프로젝트가 있습니다. Bin 폴더 또는 프로젝트를 마우스 오른쪽 단추로 클릭하고 참조 추가를 선택한 다음 클래스 라이브러리 프로젝트를 선택하면 클래스 라이브러리에 필요한 15 개 정도의 DLL이 웹 사이트 bin 폴더에 추가되지만 .cs 파일은 using 문을 인식하지 못합니다.

using MyLibrary.MyFolder;

해결할 수 없다고 말하고 ReSharper는 사용하지 않기 때문에 안전하게 제거 할 수 있다고 말합니다.

ReSharper는 참조가 필요하다는 것을 인식하고 “참조 MyLibrary 및 MyFolder 사용”을 제안합니다. 이미 가지고있는 참조를 추가하도록 제안하는 이유를 잘 모르겠습니다. 제안을 할 때 오류가 발생합니다.

“모듈을 참조하지 못했습니다. 아마도 참조는 프로젝트간에 순환 종속성을 생성 할 것입니다.”

웹 사이트 속성 페이지로 이동하여 모든 참조를 제거하고 다시 추가하려고 시도했지만 동일한 오류가 발생합니다. 이것이 작동하지 않는 이유가 무엇입니까?



답변

또한 새 솔루션의 프로젝트가 포함하려는 프로젝트와 호환되는 프레임 워크에 대해 실행되는지 확인합니다. 3.5 프로젝트에 4.0 프로젝트에 대한 참조를 포함하려고했습니다.


답변

이 문제를 해결하는 방법을 찾았습니다 (적어도 나를 위해). 왜 효과가 있었는지 모르겠지만 효과가있었습니다. (같은 문제가있는 두 번째 웹 사이트에 대해 방금 시도했으며 다음 솔루션도 효과가있었습니다).

나는 프로젝트를 정상적으로 정리하고 다시 빌드하고 모든 Visual Studio 인스턴스를 종료하고 다시 시작하고 컴퓨터를 다시 시작하려고 시도했습니다.

실제로 작동 한 것은 Visual Studio에서 프로젝트를 열고 열려있는 모든 탭을 닫은 다음 종료하는 것입니다.

나는 그것이 중요하다고 생각하지 않았기 때문에 탭을 열어 놓기 전에 (그리고 내가 사용하는 탭을 거의 닫지 않았습니다).


답변

한 가지 가능성은 클래스 라이브러리의 대상 .NET Framework 버전이 프로젝트의 버전보다 높다는 것입니다.


답변

비슷한 문제가 발생했습니다. 모든 참조가 Resharper에 의해 버그가 발생합니까?-저에게 도움이 된 해결책은 Resharper 캐시를 지우고 VS를 다시 시작하는 것입니다.

tools-> options-> resharper-> options-> general-> 캐시 지우기 버튼을 클릭하고 VS를 다시 시작하십시오.


답변

VS가 때때로 빌드하고 때로는 그렇지 않은 비슷한 문제가있었습니다. 몇 번의 검색과 시도 후에 다른 라이브러리 ( ‘FileManager’)에서 동일한 이름을 가진 클래스에 대한 모호한 참조가 있음을 발견했습니다. 빌드하지 않을 프로젝트는 솔루션의 모든 모듈을 참조하는 단위 테스트였습니다. 특정 모듈에 대한 참조를 적용하면 문제가 해결되었습니다.

내 요점은 ReSharper 또는 VS를 비난하는 것보다 실제로 어떤 종류의 순환 참조가 없는지 다시 확인하는 것이 좋습니다. 종종 다른 모듈에서 동일한 이름을 가진 클래스는 혼동을 일으킬 수 있으며 종종 잘못된 디자인의 증상입니다 (제 경우와 같이).


답변

ReSharper와 비슷한 문제인 것 같습니다.

http://www.jetbrains.net/devnet/thread/275827

빌드를 강제하는 스레드의 한 사용자에 따르면 첫 번째 빌드 후 문제 (CTRL + Shift + B)를 수정합니다.

ReSharper의 경우 특히 문제가있는 것 같습니다. 경고 및 가능한 잘못된 오류에 관계없이 빌드를 시도해 보셨습니까?


답변

둘 다 동일한 솔루션에 있기 때문에 DLL에 대한 참조를 추가하는 대신 클래스 라이브러리 프로젝트 자체에 대한 참조를 추가하십시오 (참조 추가 대화 상자에는 이에 대한 탭이 있습니다).

아, 다른 솔루션입니다. 그것을 놓쳤다. 프로젝트에 대한 참조를 추가하는 대신 클래스 라이브러리의 컴파일 된 DLL에 대한 참조를 추가해보십시오. 참조 추가 대화 상자에는이를 수행하는 찾아보기 탭이 있습니다.