Programming

유형 또는 네임 스페이스 이름을 찾을 수 없습니다.

procodes 2020. 2. 16. 20:51
반응형

유형 또는 네임 스페이스 이름을 찾을 수 없습니다.


C#에 여러 프로젝트 가있는 솔루션이 있습니다 Visual Studio 2010. 하나는 테스트 프로젝트 ( " PrjTest "라고 함)이고 다른 하나는 Windows Forms Application프로젝트 ( " PrjForm "이라고 함)입니다. PrjForm에서 참조하고 성공적으로 참조 할 수있는 세 번째 프로젝트도 있습니다.

PrjForm는 참조 PrjTest을 하고 PrjForm는 기호가있는 클래스가 using문을 :

using PrjTest;
  1. 참조가 올바르게 추가되었습니다
  2. using 성명서가 올바르게 작성되었습니다
  3. 철자가 맞습니다
  4. PrjTest가 성공적으로 구축
  5. PrjForm은 거의 빌드되지만 using PrjTest;오류가 발생 하면 줄을 바꿉니다 .

유형 또는 네임 스페이스 이름 'PrjTest'을 찾을 수 없습니다 (사용 지시문 또는 어셈블리 참조가 누락 되었습니까?)

이 문제를 해결하기 위해 다음을 시도했습니다.

  1. Resharper가 제거되었습니다 (Resharper는 참조 된 프로젝트를 인식하는 데 어려움이 없었으므로 촬영할 가치가 있다고 생각했습니다)
  2. 참조 및 using 문을 제거하고 다시 추가했습니다.
  3. 처음부터 재생성 된 PrjForm
  4. PrjForm은 현재 PrjTest 폴더 안에 있으며 외부 폴더로 옮겼습니다.
  5. 새로운 사본으로 다른 컴퓨터에 솔루션을로드했습니다. VS 2010

숙제를하고 온라인에서 답변을 찾는 데 너무 오랜 시간을 보냈는데 아직 해결책이 없었습니다.

다른 무엇을 시도 할 수 있습니까?


이 질문을 참조하십시오 .

이것은 클라이언트 프로파일 링 문제였습니다.

PrjForm은 ".Net Framework 4 Client Profile"로 설정되었으며 ".Net Framework 4"로 변경했으며 이제 성공적으로 빌드되었습니다.

모두 감사합니다! 온라인 검색에 소요 된 시간이 지난 후에도 게시 후 몇 분 안에 솔루션을 찾은 것으로 보입니다. 트릭이 올바른 질문을 알고있는 것 같습니다 ..


제 경우에는 다음이있었습니다.

참조 된 DLL : .NET 4.5

프로젝트 : .NET 4.0

위의 불일치로 인해 4.0 프로젝트는 4.5 .DLL의 네임 스페이스 내부를 볼 수 없습니다. .DLL을 다시 컴파일하여 .NET 4.0을 대상으로했습니다.


PrjForm은 ".Net Framework 4 Client Profile"로 설정되었으며 ".Net Framework 4"로 변경했으며 이제 성공적으로 빌드되었습니다.

이것은 나에게도 효과가있었습니다. 고마워 dotnetrdf에서 키트를 다운로드 한 dotNet에 대한 RDF 예제를 시도했습니다.

NET4 클라이언트 프로파일 : 항상 모든 클라이언트 데스크탑 응용 프로그램 (Windows Forms 및 WPF 앱 포함)의 NET4 클라이언트 프로파일을 대상으로합니다.

NET4 전체 프레임 워크 : 앱에 필요한 기능 또는 어셈블리가 클라이언트 프로파일에 포함되지 않은 경우에만 NET4 전체를 대상 으로합니다. 다음과 같은 내용이 포함됩니다.

  • ASP.Net 앱
  • 서버 측 ASMX 기반 웹 서비스

레거시 클라이언트 시나리오를 사용하는 경우 : o NET4에서 더 이상 사용되지 않으며 클라이언트 프로파일에 포함되지 않은 System.Data.OracleClient.dll을 사용하십시오.

  • 레거시 Windows Workflow Foundation 3.0 또는 3.5 (WF3.0, WF3.5) 사용

개발자 시나리오를 대상으로하고 MSBuild와 같은 도구가 필요하거나 System.Design.dll과 같은 디자인 어셈블리에 액세스해야하는 경우


이 오류가 발생할 수있는 또 다른 것은 최신 버전의 .NET으로 빌드 된 NuGet 패키지가 있다는 것입니다.

원래 오류 :

frmTestPlanSelector.cs(11,7): error CS0246: The type or namespace name 'DatabaseManager' 
could not be found (are you missing a using directive or an assembly reference?) 

로그에서 더 나아가서 이것을 발견했습니다.

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3275: The primary reference "[redacted]\DatabaseManager\bin\Release\DatabaseManager.dll" could not be resolved because it has an indirect dependency on the assembly "System.Data.SQLite, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".

해결책은 NuGet 패키지를 다시 설치하는 것입니다.

http://docs.nuget.org/docs/workflows/reinstalling-packages


다른 프로젝트는 .NET 4.5로 코딩되었고 다른 프로젝트는 4.0으로 코딩 되었기 때문에 문제를 해결했습니다.


이 문제가 발생했습니다.

프로젝트 B는 프로젝트 A를 참조합니다.

프로젝트 A는 A.dll로 컴파일됩니다 (어셈블리 이름 = A).

프로젝트 B는 A.dll (어셈블리 이름 A)로 컴파일되었습니다.

Visual Studio 2010은 이것을 잡지 못했습니다. Resharper는 괜찮 았지만 컴파일되지 않았습니다. WinForms 디자이너는 호환되지 않는 플랫폼 대상으로 인한 오류 메시지를 잘못 표시했습니다.

힘든 하루를 보낸 후 해결책은 어셈블리의 이름이 동일하지 않도록하는 것이 었습니다.


using 문은 프로젝트가 아닌 네임 스페이스를 나타냅니다 .

참조 된 프로젝트에 적절하게 명명 된 네임 스페이스가 있는지 확인하십시오.

namespace PrjTest
{
     public class Foo
     {
          // etc...
     }
}

MSDN의 네임 스페이스에 대해 자세히 알아보십시오.


참조 된 프로젝트는 .NET 4.0을, 콘솔 앱 프로젝트는 .NET 4.0 클라이언트 라이브러리를 대상으로 할 수도 있습니다.

이 특정 사례와 관련이 없었을 수도 있지만 다른 사람이이 정보를 유용하게 사용할 수 있다고 생각합니다.


나는 같은 문제가 있었다. 목표 프레임 워크는 나에게 좋았습니다. 여전히 작동하지 않았습니다. VS2010 sp1을 설치하고 PrjTest에서 "재 구축"을 수행했습니다. 그런 다음 나를 위해 일하기 시작했습니다.


컴파일 된 dll에는 public 클래스가 있어야합니다.


프레임 워크를

.NET Framework 4 클라이언트 프로필

나를 위해 일을했다.


COM / ActiveX 참조의 경우 VS 2012는 문을 사용하는 즉시이 오류를 표시합니다. using 문이 누락되었을 수 있으므로 매우 재미 있습니다.

이 문제를 해결하려면 이웃 프로젝트에있는 경우에도 실제 COM / ActiveX dll을 등록하고 프로젝트 채널이 아닌 COM 채널을 통해 참조를 추가하십시오. ProjectName 대신 Interop.ProjectName을 참조로 추가하고이 이상한 버그를 해결합니다.


프로젝트 (PrjTest)가 PrjTest네임 스페이스 내에 공개 유형을 노출하지 않으면 해당 오류가 발생합니다.

프로젝트 (PrjTest)에 "PrjTest"네임 스페이스에 공개 된 클래스 또는 유형이 포함되어 있습니까?


Application의 대상 프레임 워크를 ".Net Framework 4"로 변경했습니다.

그리고 오류가 사라졌습니다.

행운을 빕니다; :디


프로젝트 속성을 확인하십시오. 참조 경로는 다음과 같이 비어 있어야합니다.

프로젝트 속성

문안 인사


이러한 동작을 일으킬 수있는 다른 문제는 빌드 구성입니다.

특정 폴더로 구성되도록 설정된 두 개의 프로젝트가 있습니다. 마찬가지로 DebugAny CPU및 초에했다 Debugx86.

내가 무슨 짓을 나는 갔다 Solution->Context menu->Properties->Configuration properties->Configuration나는 내 모든 동일한 구성을 사용하는 프로젝트 설정 Debugx86도 확인 Build눈금을.

그런 다음 프로젝트가 올바르게 구축되기 시작했으며 네임 스페이스를 볼 수있었습니다.

참고 URL : https://stackoverflow.com/questions/4764978/the-type-or-namespace-name-could-not-be-found



반응형