2010-04-22 2 views
35

서비스 용 프록시 클래스를 생성하기 위해 svcutil.exe를 사용하려고했지만 /reference 옵션을 사용하여 .NET 4.0 용으로 빌드 된 어셈블리를 참조 할 때 오류가 발생합니다..NET 4.0 용 Svcutil.exe?

Could not load file or assembly [...] or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

그래서 이전 버전의 svcutil.exe를 사용하고있는 것으로 보입니다. 나는 내가 발견 할 수 있었던 가장 최근의 것이었던 "C:\Program Files\Microsoft SDKs\Windows\v7.0A에서 하나를 사용하고있다. 내가 사용해야하는 어딘가의 버전이 있습니까?

답변

59

나는 동일한 문제가있었습니다. 프로젝트가 .NET 4.0 Framework를 사용하도록 설정되어 있으면 올바른 버전의 SvcUtil.exe를 선택해야합니다. 그렇지 않으면 "로드 할 수 없습니다 ..."

  • " Microsoft SDKs \ Windows \ v6.0A \ Bin "이면 해당 exe 버전이"3.0.4506.2152 "임을 알 수 있습니다.
  • "Microsoft SDKs \ Windows \ v7.0A \ Bin"에있는 SvcUtil.exe의 버전은 정확히 같으므로 루프에도 나를 던졌습니다.

그러나 가 당신이 그것을 사용하는 경우 버전 "4.0.30319.1"이며, "마이크로 소프트의 SDK \ WINDOWS \ v7.0A \ 빈 \으로 netfx 4.0 도구"에있는 svcutil.exe에 다른 버전, 모든 것이 효과가있다.

+0

Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 도구가 정답입니다. 감사! – Mark

+0

고마워, 나도 너무 고맙다 ... 등등. <3 (불법적 인 의견, 다른 모든 사람들은 단순히 이것을 투표로한다.) –

0

.Net 4.0에 대한이 링크에 따르면 C : \ Program Files \ Microsoft SDKs \ Windows \ v6.0 \ Bin에있는 링크를 사용해야합니다. v7.0A의 디렉토리에있는 사람이 너무 오래된 경우

http://msdn.microsoft.com/en-us/library/aa347733.aspx

는하지만 조금 이상한 것 같다.

+0

확인했는데 두 버전 모두 동일한 버전 인 3.0.4506.2152이므로 동일한 오류가 발생합니다 . –

+0

대신이 시도해보십시오 : http://stackoverflow.com/questions/896629/how-to-run-clr-2-application-as-clr-4-application –

0

클래스를 생성하기 위해 .NET 3.5로 다시 빌드하지 않는 이유는 무엇입니까? 클래스를 생성하는 유형이 .NET 4.0 기능에 의존하지 않는다고 생각합니다. cs 파일은 4.0 버전의 프로젝트에서 DLL을 사용할 수 있도록 DLL의 빌드 버전에 상관이 없습니다.

+0

빌드 이벤트로 svcutil을 실행하고 싶습니다. 항상 참조 된 어셈블리를 .Net 3.5로 컴파일해야합니다. 아직 4.0 기능이 없기 때문에 지금은 작동하지만 나중에 추가 할 수 있기를 원합니다. 나는 내 문제의 실제 이유를 찾는 데 여전히 관심이 있습니다. 사용 가능한 svcutil의 버전이 .Net 4를 지원합니까? 있을거야? –

+0

나는 이것을 받아 들일 수있는 해결 방법으로 받아 들일만한 대답으로 표시 할 것입니다. 그래도 더 많은 답변에 관심이 있습니다. –

0

동일한 문제가 있습니다.

마이크로 소프트는 닷넷 (http://msdn.microsoft.com/en-us/library/aa347733.aspx)의 최신 버전으로 제공되는 새로운 SvcUtil과 함께 .Net 4 DLL 만 사용할 수 있다고 말합니다.하지만 그 버전은 위에서 언급 한 버전 인 것 같습니다. 그것은 전혀 참조로. NET 4 DLL을 액세스하지 않습니다.

7

닷넷 4.0 SDK의 최신 버전은 V7.1에있는

http://msdn.microsoft.com/en-us/windows/bb980924.aspx

svcutil.exe에에서 확인할 수/빈 버전 3.0.4506.2152있다.

v7.1/bin/NETFX 4.0에있는 svcutil.exe 도구의 버전은 4.0.30319.1입니다.

+0

7.1을 설치했고 BIN 폴더에는 svcutil.exe가 없다. –

+0

SDK의 기본 설치가 .NET 도구 옵션을 선택하지 않았 음을 나타냅니다. 이 옵션을 선택하면 svcutil.exe 파일이 설치됩니다. –

0

업데이트 : 폴더의 유틸리티의 최신 버전에 따라 V7.0되지 않습니다

Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools

svcutil.exe에의 V8.0A는 비주얼 스튜디오 2012을 설치 한 후 현재 (2012 VS)로 볼 수 있습니다

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe"

당신이 진정으로 원하는 것은 서비스 클라이언트에 WSDL 파일을 회전에 대한 전체 정의 :

/n:*,MyCompany.Services.Client /out:IServiceInterface.cs ServiceDefinition.wsdl.xml

서비스 definition.wsdl 분명히 오래된 비누 끝점의? wsdl 응답입니다.

미니언과 트롤은 기억합니다! 모든 것이 비동기이므로 SVCUtil.exe의 v8.0에 의해 생성 된 새로운 비동기 지원을 찾고 활용하십시오.