Development Tip

VS2008에서 "대상 어셈블리에 서비스 유형이 없습니다"오류 메시지를 제거하려면 어떻게해야합니까?

yourdevel 2020. 11. 7. 10:36
반응형

VS2008에서 "대상 어셈블리에 서비스 유형이 없습니다"오류 메시지를 제거하려면 어떻게해야합니까?


클라이언트 / 서버 wcf 애플리케이션이 있습니다.

내 실행 파일은 아무것도 정의 ServiceContract하지 않고 참조도 없습니다 System.ServiceModel( 대신 서버에 대한 연결 논리를 포함하는 어셈블리에 대한 참조가 있음 )

내 EXE에서 참조하는 다른 어셈블리가 있습니다 ServiceContract.

예전에는 잘 작동했습니다. 어제는 프로젝트 설정 ( 부분 신뢰, 완전 신뢰, 배포 설정 등 )을 많이 사용했으며 이제 클라이언트를 시작할 때마다 다음 메시지 상자가 표시됩니다.

Microsoft WCF 서비스 호스트
대상 어셈블리에 서비스 유형이 없습니다.
이 어셈블리의 코드 액세스 보안 정책을 조정해야 할 수 있습니다.

그런 다음 VS가 1 분 동안 멈추고 결국 평소처럼 프로그램을 디버깅 할 수 있습니다.

이 문제에 대한 게시물을 찾았 지만 솔루션이 내 상황에 적용되지 않습니다. 어떤 아이디어?


항상 그렇습니다. 2 시간 동안 검색하면 결국 SO에 게시하고 5 분 후에 답을 찾을 수 있습니다.

에서 WCF 옵션 을 정의하는 프로젝트의 속성 탭 ServiceContract, 내가 선택하지 않은 것을 "동일한 솔루션에있는 다른 프로젝트를 디버깅 할 때 시작 WCF 서비스 호스트"이라는 체크 박스가있다.

나는 그것이 처음에 어떻게 확인되었는지 전혀 모른다.

어쨌든 그것은 내 문제를 해결했습니다. 이 프로젝트 설정에 대한 MSDN 참조참조 하십시오 .


다른 사람이 답을 찾고있는 경우에 대비하여이 오류의 또 다른 원인은 섹션 App.config이있는 클래스 라이브러리 인 프로젝트에 파일 이있는 경우 일 수 있습니다 <system.serviceModel>.

다른 프로젝트로 실행 가능한 프로젝트에서 서비스 코드를 옮겼지만 실수로 이전 App.config파일을 남겼습니다 . 프로그래밍 방식으로 구성되고 WCF를 시작하는 콘솔 응용 프로그램 이었지만 이전 App.config파일이 참조 된 어셈블리에 있었기 때문에 콘솔 응용 프로그램을 디버깅 할 때도 암호 대화 상자가 나타납니다.

VS 디버거가 WCF 서비스가 구성된 App.config에 대해 참조 된 모든 어셈블리를 확인한다는 사실을 몰랐기 때문에이 항목을 추적하는 데 약 12 ​​시간이 걸렸습니다.


이 문제가있는 프로젝트를 확인하려면 프로젝트 파일에서 3D9AD99F-2412-4246-B90B-4EAA41C64699 문자열을 찾으십시오.

예: <ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

그런 다음 "WCF 옵션 / 동일한 솔루션에서 다른 프로젝트를 디버깅 할 때 WCF 서비스 호스트 시작" 프로젝트 옵션을 끕니다.


일부 블로그에서는 GUID를 재정의하는 다른 브랜치에서 프로젝트를 복사하여 발생했을 수 있으므로이 블로그에 설명 된대로 삭제하면됩니다 .


이 오류는 구성 파일의 잘못된 서비스 이름으로 인해 발생할 수도 있습니다.

<system.serviceModel>
    <services>
      <service name="MyServiceLibrary.WrongServiceName">
...

구성 파일을 확인하고 서비스 이름이 올바른지 확인하십시오.


오래된 스레드. 옵션의 디버그 섹션에서 명령 줄 인수를 제거하기 만하면됩니다. 그것은 나를 도왔다.


나는 또한 같은 종류의 문제를 겪었고이 특정 오류를 제거하기 위해 몇 시간 동안 검색했습니다. 마침내 나는 그것에서 탈출구를 찾았습니다.

이 특정 문제가 발생하면 서버 및 클라이언트 응용 프로그램을 모두 관리자 권한 으로 실행하고 프로젝트 WPF 속성변경합니다 .

프로젝트의 WPF 속성을 클릭하면 빌드 옵션을 찾을 수 있습니다. 빌드 옵션 에는 플랫폼 타겟을 x86으로 변경할 수있는 PLATFORM TARGET 이라는 옵션 이 있습니다 . 또한시주의 X84 , 당신이 그것을 설정해야 X84 .

이제 콘솔 에서 프로젝트를 실행합니다 . 즉, 프로젝트가 저장된 폴더로 이동하고 클라이언트의 빈에서 콘솔 애플리케이션을 가져올 폴더 디버그 를 찾을 수 있습니다 . 이제 응용 프로그램을 성공적으로 실행할 수 있습니다.


이 메시지에는 여러 가지 원인이있는 것으로 보이므로 다른 솔루션을 추가합니다. 프로젝트 파일의 ProjectTypeGuids 태그에서 다음 GUID를 제거하면 문제가 해결되었습니다.

<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699}</ProjectTypeGuids>

참고 URL : https://stackoverflow.com/questions/564541/how-can-i-get-rid-of-the-the-target-assembly-contains-no-service-types-error-m

반응형