[c#] Visual Studio 2010에서 갑자기 네임 스페이스를 볼 수 없습니까?

내 C # WinForms 솔루션에는 두 개의 프로젝트가 있습니다. 내가 작업중인 주요 프로젝트 인 DLL과 실행 가능한 WinForms를 “Sandbox”라고 부르므로 한 번에 DLL을 쉽게 컴파일 / 실행 / 디버그 할 수 있습니다.

두 프로젝트 모두 .Net 4.0에서 일하고 있습니다.

겉보기에는 무해한 코드와 DLL의 System.Web에 대한 참조를 추가 할 때까지 모든 것이 잘 작동했습니다. 이제 내 Sandbox 프로젝트는 DLL 프로젝트의 네임 스페이스를 볼 수 없습니다. 나는 이것에 영향을 주었어야한다고 믿는 어떤 것도 변경하지 않았다.

Sandbox 참조에서 DLL에 대한 프로젝트 참조를 삭제하고 다시 추가하면 빨간색 밑줄이 모두 사라지고 모든 클래스 등에 대한 색상 코딩이 다시 나타납니다. 하지만 솔루션을 구축하자마자 모든 것이 다시 무너집니다.

샌드 박스의 참조에서 DLL 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 개체 브라우저에서 보면 네임 스페이스와 그 안에있는 모든 항목을 볼 수 있습니다.

나는 이것이 일종의 버그라고 생각합니까?

이것은 일종의 VS2010 버그입니까? 몇 달 전에 같은 문제가 있었는데 그 당시에는 완전히 새로운 프로젝트를 만들고 내 파일을 다시 가져 와서 만 수정할 수있었습니다. 그러나 이번에는 bajillion 파일이 있으며 최후의 수단으로 만 할 것입니다!

편집 : 당황하여 모든 변경 사항을 실행 취소하고 문제의 원인을 찾으려고 시도한 후 다음 줄인 것 같습니다.

string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address);

이 줄을 주석 처리하면 네임 스페이스 오류가 발생하지 않고 프로젝트가 제대로 빌드됩니다. 그래도이 줄에 잘못된 것이 보이지 않습니다.



답변

나는 이것을 VS2010에서 버그로 선언 할 준비가되어 있습니다. 이것은 이미 너무 많은 프로그래머를 물었습니다. 수정은 쉽습니다. 프로젝트 + 속성, 응용 프로그램 탭에서 기본적으로 선택되는 클라이언트 프로필 대신 대상 프레임 워크를 “.NET Framework 4″로 변경합니다.

System.Web은 클라이언트 프로필에 포함되지 않습니다. 처음에이 옵션을 사용하는 것은 매우 어리석은 일이며 클라이언트 프로필은 .NET 4.0 정식 버전보다 15 % 더 작습니다. 기본적으로 선택하는 것이 더 어리 석습니다. 그러나 나는 빗나 갔다.

업데이트 : 다행스럽게도이 모든 것이 VS2012에서 수정되었습니다. 더 이상 클라이언트 프로필이 새 프로젝트의 기본값이되지 않습니다. 그리고 클라이언트 프로필은 .NET 4.5에서 완전히 폐기되었습니다.


답변

두 프로젝트가 대상 프레임 워크에 대해 비 클라이언트 프로필을 사용하고 있는지 확인합니다 (이 작업을 수행하려면 각 프로젝트의 속성으로 이동).


답변

한 가지 가능성은 클래스 라이브러리의 대상 .NET Framework 버전이 프로젝트의 버전보다 높다는 것입니다. 저는이 문제에 직면했고, Visual Studio를 닫고, Visual Studio를 다시 열고, 솔루션을 정리하고 다시 빌드하여 해결했습니다. 이것은 나를 위해 일했습니다. 다른 게시물에서는 답글을 읽었으며 대부분의 사용자는 이런 식으로 문제를 해결했습니다.


답변

먼저 Sandbox dll을 사용하여 프로젝트 만 독립적으로 빌드하십시오.

그런 다음 실행 가능한 프로젝트를 필수 dll로 지정하고이로 copy local설정되어 있는지 확인하십시오 true. 참조 설정에서.

그런 다음 실행 가능한 프로젝트를 빌드하십시오.


답변

대상 프레임 워크를 “.NET Framweork 4 Client Profile”에서 “.NET Framework 4″로 변경하면 비슷한 문제가 발생했습니다. 나는 클라이언트 프로필이 그것을 사용하는 데 많은 이점이없는 것 같다는 데 동의합니다. Visual Studio가 클라이언트 프로필을 기본값으로 사용한다는 사실을 기억할 때까지 내가 찾는 이상한 오류에 빠진 것 같습니다. 오류가 발생했을 때 이야기의 교훈은 “Rebuild Solution”이 작동하지 않으면 Target 프레임 워크를 확인하는 것입니다.


답변

이미 프레임 워크 변경을 시도했지만 여전히 작동하지 않는 경우,이 방법이 효과가 있기를 바랍니다 (나에게했던 것처럼). 프로젝트 내에서 필요한 참조를 추가하기 만하면됩니다. 매우 분명하지만 문제가 무엇인지 찾을 때까지 잘못하고있었습니다.


답변

방금이 문제가 발생했는데 동일한 개체 이름을 가진 여러 네임 스페이스가 사용되는 것으로 나타났습니다 (예 : 비즈니스 개체는 mvc 모델과 동일한 이름을 가짐).

이름을 완전히 규정하면 문제가 해결되었습니다.