0

PolicyBase (MSDN How To: Create Custom Check-in Policies in Visual Studio Team Foundation과 같이)까지 확장되는 클래스를 작성하여 TFS에 대한 사용자 정의 체크 인 정책을 만들었습니다. 오버라이드 된 Evaluate() 방법은 내 논리를 가지고 있습니다.사용자 정의 체크인 정책이 평가되는 시점을 어떻게 제어합니까?

Evaluate() 내가 원하는대로 사용자가 TFS에서 [체크인] 버튼을 클릭하면 호출됩니다.

  1. 비주얼 스튜디오가 시작되고이 이미 활성 탭의 경우
  2. 사용자가 처음으로 보류중인 변경 탭으로 탐색 (또는 :

    그러나, 또한 때 호출되는 Evaluate() 것 같아 VS가 시작될 때) AND

  3. 사용자에게 보류중인 변경 탭이 있습니다.

평가판이 어떤 시나리오에서 호출되는지 어떻게 확인할 수 있습니까? 사용자가 TFS에서 Check In 단추를 명시 적으로 클릭 할 때 Evaluate를 호출하기 만하면됩니다.

실제는 평가 내가 사용 방법은 매우 복잡하지만, 난 여전히 같은 문제가 전시 뭔가를 단순화했습니다 : 체크에서 스타가있는 경우, 위의 코드와

public override PolicyFailure[] Evaluate() 
{ 
    List<PolicyFailure> policyFailures = new List<PolicyFailure>(); 

    if (_isPolicyEnabled) 
    { 
     if (PendingCheckin.PendingChanges.Comment.Contains("*")) 
     { 
      string msg = "Star in comment"; 
      MessageBox.Show(msg); 
      policyFailures.Add(new PolicyFailure(msg, this)); 
     } 
    } 
    return policyFailures.ToArray(); 
} 

을 주석에서 보류중인 변경 사항, 닫는 Visual Studio, 다시 열면 보류중인 변경 탭으로 이동하자마자 MessageBox가 표시됩니다.

내 경우에 체크인 정책이 사용되는 방식은 다른 시스템의 항목에 대한 참조에 대한 사용자 의견을 확인하는 것입니다. 그것들이 존재하지 않는다면 사용자에게 필터링되고 선택 될 수있는 항목의 목록을 보여주는 대화식 대화 상자를 던집니다. 그런 다음 체크인 주석에 삽입됩니다. Evaluate() 내에 어떤 시나리오에서 호출되는지 확인하는 방법이 있습니까? 나는 체크 - 인에 의해 트리거 된 것을 제외하고 모든 호출 아래서 다이얼로그를 던지는 것을 피할 수있다. (에드워드 톰슨 이미 언급 한 바와 같이 )

+0

몇 가지 코드를 제공해 주실 수 있습니까? 왜냐하면 afaik Evaluate()는 사용자가 언급 한 모든 시간에 호출되어서는 안됩니다. "체크인 프레임 워크는 사용자가 [정책] 버튼을 클릭하거나 체크인 또는 쉘빙 작업을 시도 할 때이 메서드를 실행합니다." - http://msdn.microsoft.com/en-us/magazine/cc163320.aspx – Feroc

+0

@Feroc :이 기사는 평가 메커니즘에 대해 다소 모호합니다. 평가는 체크인 또는 선반 전에 항상 호출되며 체크인 정책 채널을 그릴 수 있지만 내부 상태를 최신 상태로 유지하기 위해 다른 시간에 호출 될 수도 있습니다. –

+0

@EdwardThomson : 흠 ... 얼마 전 정책을 만들었는데 그런 행동을 기억하지 못합니다.또는 어쩌면 그것은 나의 예에서 중요하지 않았고 그래서 나는 단지주의하지 않았다. – Feroc

답변

1
  • Evaluate()은 UI를 표시 할 것이다.
  • Evaluate()은 문제가있는 경우에만 오류를 생성해야합니다.

그러면 사용자가 두 번 클릭 할 수있는 오류 목록이 생성됩니다. 장애를 두 번 클릭하면 UI 구성 요소가 표시되도록 트리거 할 수 있습니다 (Activate()에 의해 처리됨). 아직 시도하지는 않았지만 제대로 작동하는 것처럼 보입니다.

자세한 내용은이 MSDN 포럼 게시물 Prompting user from checkin policy occurs multiple times에 나와 있습니다.

관련 문제