2014-03-31 2 views
2

제목에 사과드립니다.하지만 여기서 무슨 일이 일어나고 있는지 정의하는 데 어려움을 겪고 있습니다.왜 비주얼 스튜디오는 기능을 호출 할 때 그 길을 잃을까요?

가 나는 라인

long svnSuccess = SVNCommands.GetSVNHeadRevNo(svnLocation); 

SVNCommands을하는 프로그램이 정적 클래스입니다.

위의 줄에 중단 점을 넣은 다음 SVNCommands에서 코드의 실행을 보려고 F11 (단계를 밟아 넣기 만하면) ... 아무것도 표시되지 않습니다. 행동은 무한 루프와 같습니다. 프로그램이 어떤 식 으로든 충돌하지 않습니다. 그냥 진행을 멈 춥니 다. VS는 SVNCommands.GetHSVNHeadRevNo에 나를 데려 가지 않습니다. 나는 심지어 그 기능의 시작 부분에 중단 점을 가지고있다. (깨닫지 못하고 거기에 도달하지 못했다는 것을 증명하기 위해) 그리고 도달하지 못했다.

여기에 무슨 일이 일어날 지 알고 싶습니까?

+0

'\ bin' 폴더의 모든 것을 수동으로 삭제하고 다시 시도 할 수 있습니다. 때때로 Visual Studio는 호스팅 프로세스에 의해 잠겨 있기 때문에 .dll을 덮어 쓸 수 없습니다. 그것은 기본적으로 이전 버전의 어셈블리를 거치지 만 사용자가 가지고있는 버전이 아닙니다. –

+0

SVN은 원래 네이티브 코드로 작성되었으므로 step-into에서 아무 것도 보여주지 않는 것이 보통입니다. 응답하지 않는 서버 나 COM 아파트로의 전환을 차단하는 것은 차단되는 COM 개체를 소유하는 스레드를 사용하는 경우도 마찬가지입니다. 디버그 + 브레이크 모두 당신에게 통제력을 주어야합니다. –

답변

0

GetSVNHeadRevNo에서 System.Diagnostics.Debugger.Break()를 추가하고 디버깅하지 않고 프로그램을 실행 해보십시오. 디버깅을하고 희망적으로 코드를 기록 할 것인지 물어볼 것입니다. 왜 디버거가 작동하지 않는지 확실하지 않습니다. SVNCommands가 디버그 파일과 일치하지 않는 어셈블리에 있으면 경고를 표시합니다.

그래도 문제가 해결되지 않으면 Visual Studio 캐시를 삭제 해보십시오. 내 이해를 위해, 그것은 설명 할 수없는 많은 문제를 해결합니다. How do you clear your Visual Studio cache on Windows Vista?

0

나에게 이상한 수정 사항이 조금 있습니다. 아마도 다른 사람들과 자주 관련이 없을 것입니다.

dev 컴퓨터는 64 비트이지만 최종 사용자 컴퓨터는 32 비트입니다.

일반적으로 문제는 없지만 32 비트 SharpSVN dll 만 있습니다. 우리가 솔루션 설정으로 뛰어들 때까지 "x86"에서 "임의의 CPU"로 대상 플랫폼을 변경하기 전까지 모든 것이 효과가있었습니다. 그런 다음, 즉시 현재이처럼 보이는 함수를 입력으로 64 비트 dev에 시스템에서 테스트에서 :

public static long GetSVNHeadRevNo(string svnLocation) 
    { 
     using (SvnClient client = new SvnClient()) 
     { 
      setupAuthentication(client); 
      SvnInfoEventArgs info = null; 
      Uri repos = new Uri(svnLocation); 

      try 
      { 
       client.GetInfo(repos, out info); 
      } 
      catch (Exception ex) 
      { 
      } 

      return info.Revision; 
     }    
    } 

나는 프로그램이 필요한 DLL을 빨아 시도 후 (자동) 적합했다 추측 .

대상 플랫폼을 x86으로 변경하면 모든 문제가 해결됩니다. 도와 주신 모든 분들께 감사드립니다.

관련 문제