2010-12-31 3 views
9

아래의 모든 제안을 시도했지만 여전히 기쁨은 없습니다.C# 콘솔 응용 프로그램에서 외부 참조를 사용할 수 없습니다.

이제 콘솔 응용 프로그램을 시도하고 있으며 내가하고있는 일을 정확하게 설명하겠습니다.

  1. 은 내가 참조 (DLL의) 같은 Castle.Winsor 및 N2 CMS DLL을 콘솔 응용 프로그램 I에서
  2. 으로 광산을하지 않은 일부의 번호를 추가
  3. VS 2010에서 새 콘솔 프로젝트를 생성 참조 된 DLL 내에서 이름 공간을 사용하고 있음을 나타내는 문을 사용하여 추가 할 수 있습니다.
  4. 코드를 작성하기 시작합니다.
  5. 는 마자 즉시 참조 된 DLL을 사용하여 불평 모든 코드 컴파일로 "찾을 수 없습니다 형식 또는 네임 스페이스 이름을 ''(당신은 using 지시문 또는 어셈블리 참조가?)"

나는 항상 로컬에 복사 할 dll을 설정해 보았습니다. DLL을 동일한 디렉토리에 복사했습니다. 프로젝트별로 참조를 추가하고 DLL 자체에 대한 참조를 추가했습니다.

이 문제는 발생하지 않습니다. 웹 응용 프로그램 프로젝트 또는 ASP.net 프로젝트는 항상 잘 작동하며 콘솔 앱이나 Windows 서비스처럼 EXE로 컴파일됩니다.

내가 누락 된 것이 있거나 지금까지 해결할 수 있어야합니다.

+1

Data_objects 대 Data_Objects. 이런 질문을 할 때 정확하다는 것은 매우 중요합니다. –

+0

코드에서 참조하는 객체에 대한 완전한 경로를 사용하고 있습니까? Data_Object가 둘 이상의 장소에 존재하는 잠재적 인 명명 명명법이 있습니까? VS가 줄 #을 제공합니까? 그렇다면 질문의 일부로 오류와 몇 줄의 코드를 오류 주위에 게시 할 수 있습니까? – David

답변

37

프로젝트 대상을 클라이언트 프로파일 이외의 대상으로 변경하십시오. 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택하면 Framework 버전 목록이 표시됩니다. VS2010을 사용하면서 기본적으로 만든 Console 프로젝트는 .NET Framework 4.0 Client Profile을 대상으로 .NET Framework 4.0으로 변경합니다.

+0

+1 그게 내게 일어난 일입니다 – bottlenecked

+0

It 정말로 Client Profile은 전체 .NET 4.0 프레임 워크의 하위 집합만을 대상으로하며 System.Web과 같은 것은 생략됩니다 ... 따라서 Client Profile에서 제공하지 않는 어셈블리에 대한 참조를 가진 참조 된 어셈블리는 바인딩되지 않습니다. –

+0

99 %의 사례에서 클라이언트 프로파일에 필요한 어셈블리가 없다는 것을 알았습니다. 소형화를 위해 너무 많은가? –

0

처음에는 질문에 대해 정확히 무엇을 잘못하고 있는지 알기가 어렵지만 어셈블리 이름 (그리고 아마도 네임 스페이스와 유형 이름)에서 밑줄을 사용하고 있기 때문에 당신은 .NET 세계에 대해 새로운 것입니다.

이것은 오히려 프로젝트 참조을 추가하여보다 컴파일 된 어셈블리에 검색하여 솔루션에 다른 프로젝트에 대한 참조를 추가하는 것이 좋습니다. 참조를 추가 할 때는 반드시 어셈블리를 찾아 보지 말고 프로젝트 탭을 선택해야합니다.

이것이 문제라고 생각하지 않는다고해도 모든 참조를 제거하고 프로젝트 참조를 다시 추가하여 확실히 확인하십시오. 가정, 엉덩이 등

일단 작업을 완료하면 유형, 네임 스페이스 및 어셈블리에서 밑줄을 모두 제거하는 것이 좋습니다. 프레임 워크 설계 지침도 읽으십시오.

0

메모장에서 .Proj (Windows 서비스 프로젝트 파일) 파일을 열고 어셈블리 위치 (data_object)가 동일한 지 확인하십시오. 당신은 DLL 또는 EXE에 refrence을주는 경우에 당신은 당신이 확인할 수 메모장 파일을 .Proj 열

,

프로젝트 참조,

 <ProjectReference Include="C:\StackOverflow\StackOverflow.csproj"> 

그리고

<Reference Include="StackOverflow, Version=1.0.0.0, Culture=neutral,  processorArchitecture=x86"> 
    <SpecificVersion>False</SpecificVersion> 
    <ExecutableExtension>.exe</ExecutableExtension> 
    <HintPath>C:\StackOverflow\bin\Debug\StackOverflow.exe</HintPath> 
</Reference> 

난 당신을 제안 위의 예와 같이 드라이브 이름을 포함한 정확한 위치를 제공합니다.Copy Local이 참조 된 어셈블리에 대한 true로 설정되어

1. Clean and rebuild 
2. Add Project reference if you already tried dll reference 
3. Check whether the folder (referred assembly location) is Read Only then remove it. 
2

선택하면 당신이 시도 할 수

다른 옵션.

+0

+1 내가 실수 한 횟수는 ... –

+0

GAC가 아닌 다른 참조 된 어셈블리에 대해서는 이미 이것을 수행해야합니다 –

관련 문제