2012-09-06 2 views
1

지난 며칠 동안 나는 정말 이상한 문제에 직면 해있다. 극복하기 위해 최선을 다했지만 나에게 너무 추상적이어서 나는 더 이상 볼 곳을 모른다. 나는 여기에 관련된 모든 스레드를 읽었으며, 그래서 구글은 나를 위해 많은 다른 사이트를 찾았다. 사례는 꽤 복잡하지만 나와 함께하시기 바랍니다 :맞춤 도구 오류 업데이트 참조

WCF 웹 서비스를 사용하여 백엔드 인프라와 통신하는 MVC 웹 포털 프런트 엔드가있는 프로젝트에서 작업하며 일부는 WWF 서비스. 모든 서비스는 간단한 http 바인딩을 사용합니다. 서비스 계약을 변경하고 서비스 참조를 업데이트해야하는 작업이있었습니다. 업데이트 나이 경고/오류 세트 다음주는 성공하지 못했습니다 :

Warning 43 Custom tool warning: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information. PathToProject\Reference.svcmap 1 1 PortalProjectName 
Warning 44 Custom tool warning: Cannot import wsdl:portType 
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter 
Error: The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
XPath to Error Source: //wsdl:definitions[@targetNamespace='namespaceDeclaredInService']/wsdl:portType[@name='IEntityListService'] PathToProject\Reference.svcmap 1 1 PortalProjectName 
Warning 45 Custom tool warning: Cannot import wsdl:binding 
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on. 
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='namespaceDeclaredInService']/wsdl:portType[@name='IEntityListService'] 
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_IEntityListService'] PathToProject\Reference.svcmap 1 1 PortalProjectName 
Warning 46 Custom tool warning: Cannot import wsdl:port 
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on. 
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_IEntityListService'] 
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='EntityListService']/wsdl:port[@name='WSHttpBinding_IEntityListService'] PathToProject\Reference.svcmap 1 1 PortalProjectName 
Error 47 Custom tool error: Failed to generate code for the service reference 'EntityListService'. Please check other error and warning messages for details. PathToProject\Reference.svcmap 1 1 PortalProjectName 

나는이 참조 된 어셈블리에서 유형을 재사용하지 웹 서비스를함으로써 해결 될 수 있다는 것을 발견했습니다. 나는 그 다음에 (ofc) 코드에서 애매한 타입 참조를 발견했다. 어쨌든,이 솔루션은 참조 용 어셈블리에서 유형을 재사용하기 때문에 테스트 목적으로 만 사용했습니다. 그래서 재사용 체크 박스를 다시 확인하고 실험을 시작했습니다.

포털 프로젝트에서 참조를 작업 한 것 (재사용하지 않는 것과 거의 같습니다), 빌드하지 않은 것 등 모든 유형의 문제가 재사용되어야했습니다. 그 다음이 어셈블리의 일부가 동일한 솔루션의 일부인 숨겨진 오류와 관련이 있다는 것을 알았습니다. 그래서이 프로젝트 중 하나를 구축하고 포털에서 dll로 참조하는이 가설을 테스트했습니다. 모두 같은.

그런 다음이 오류는 포털에서 프로젝트 "리소스"에 대한 참조를 다시 사용하고 참조를 추가하려는 유형의 어셈블리에 대한 참조를 제거 할 때 발생한다는 것을 알았습니다 (이 프로젝트의 유형은 없습니다). 포털 또는 웹 서비스에서 사용됨). 리소스에는 하나의 클래스 (특성)와 하나의 리소스 파일 (cs + resx)이 포함되었습니다. 이제 Portal 프로젝트에 리소스에 대한 참조가 추가되어 원래 오류 및 오류가 발생한 프로젝트에 대한 참조가 발생하지 않습니다. 그런 다음 리소스 프로젝트의 리소스 파일에 대한 액세스 한정자가 Public으로 설정되어 있음을 확인했습니다. 내부로 전환 한 다음 서비스 참조를 성공적으로 업데이트했습니다. 문제는 다른 프로젝트가 서비스를 재사용하기를 원하는 유형을 포함하여 이러한 리소스를 사용하기 때문에 공개해야한다는 것입니다.

내가 찾은 사람들이 도움을한다는 것이 주제에 대한 인터넷 검색을하는 동안 :

  • 재시작없이 관리자에
  • 실행 VS VS는
  • UNINSTAL VS 2012 RC를 privilages 및 VS2010는
  • 삭제 다시 설치 처음부터 참조를 추가하고이 사이의 VS를 다시 시작하십시오.

내 경우에는 이러한 솔루션 중 어느 것도 도움이되지 않았습니다.

필자의 관점에서 볼 때 매우 도움이 될 것입니다. 현재이 문제에 대한 해결책이 없기 때문입니다.

편집 : 나는 프록시 클래스를 만들어, 실제 자원을 내부하게 한 자원 프로젝트에서

. 이로 인해 빌드가 가능해졌으며 포털에서만 리소스가 참조 될 때 업데이트 참조가 작동했습니다. 프로젝트에서 다른 어셈블리에 대한 참조를 추가 한 후에는 모두 동일합니다.

답변

1

.NET Framework 3.5 용으로 빌드 된 log4net.dll 때문에이 문제가 발생합니다. 우리는 .Net 4.0에 대한 우리 자신의 dll을 만들었고 모든 문제는 사라졌습니다.