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


83

내 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);

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

답변:


149

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

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

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


1
감사합니다. 내 DLL은 .Net 4.0으로 설정되었지만 Sandbox는 .Net 4.0 Client Profile로 설정되었습니다. 이 프로젝트를 5 개월간 작업 한 후, 겉보기에 이유없이 모든 것이 무너 졌을 때 당황한 정도는 ...
Ozzah

27
이러한 종류의 답변은이 사이트의 진정한 고기와 감자입니다. 인류에 대한 나의 믿음이 약간 높아졌고 마침내 내 프로젝트가 컴파일됩니다. 감사.
CloudMeta 2011-06-22

1
모든 프로젝트에서 Target Framework를 4.0으로 변경했지만 종속 프로젝트의 네임 스페이스는 여전히 찾을 수 없습니다. 확인해야 할 다른 사항이 있습니까?
Steven Ryssaert 2011

@UwConcept-이것은 버전 번호에 관한 것이 아닙니다. 전체 대 클라이언트 프로필에 관한 것입니다. 도움이되지 않으면 자신의 질문을 시작하십시오.
Hans Passant 2011

@HansPassant 예, 내 질문이 혼란 스러웠다면 죄송합니다. 4.0 Client 버전을 사용하고 있었는데이를 4.0으로 변경했습니다. 그래도 내 솔루션의 다른 프로젝트에있는 네임 스페이스는 프로젝트 간을 찾을 수 없습니다.
Steven Ryssaert 2011

8

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


감사합니다 마크. 당신과 한스가 머리에 못을 박 았어요.
Ozzah

2

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


1
이 질문은 4 년 반 전에 이미 만족스럽게 답변되었습니다.
Ozzah

+ 밀접하게 관련된 버그에 대한 유용하고 유용한 정보 추가
Eric Brown-Cal

@Ozzah는 2017 년에이 버그를 조사한 사람으로서 더 많은 정보를 얻게되어 기쁩니다. +1
Cowthulhu

1

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

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

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


그리고 거룩한 make가 확인 대상 유형은 컴파일 및 내용하지 (광산은 어떤 이유로이었다)로 설정되어 만물의 사랑
jcolebrand

0

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


0

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


0

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

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

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