PolicyBase
(MSDN How To: Create Custom Check-in Policies in Visual Studio Team Foundation과 같이)까지 확장되는 클래스를 작성하여 TFS에 대한 사용자 정의 체크 인 정책을 만들었습니다. 오버라이드 된 Evaluate()
방법은 내 논리를 가지고 있습니다.사용자 정의 체크인 정책이 평가되는 시점을 어떻게 제어합니까?
Evaluate()
내가 원하는대로 사용자가 TFS에서 [체크인] 버튼을 클릭하면 호출됩니다.
- 비주얼 스튜디오가 시작되고이 이미 활성 탭의 경우
- 사용자가 처음으로 보류중인 변경 탭으로 탐색 (또는 :
그러나, 또한 때 호출되는
Evaluate()
것 같아 VS가 시작될 때) AND - 사용자에게 보류중인 변경 탭이 있습니다.
평가판이 어떤 시나리오에서 호출되는지 어떻게 확인할 수 있습니까? 사용자가 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()
내에 어떤 시나리오에서 호출되는지 확인하는 방법이 있습니까? 나는 체크 - 인에 의해 트리거 된 것을 제외하고 모든 호출 아래서 다이얼로그를 던지는 것을 피할 수있다. (에드워드 톰슨 이미 언급 한 바와 같이 )
몇 가지 코드를 제공해 주실 수 있습니까? 왜냐하면 afaik Evaluate()는 사용자가 언급 한 모든 시간에 호출되어서는 안됩니다. "체크인 프레임 워크는 사용자가 [정책] 버튼을 클릭하거나 체크인 또는 쉘빙 작업을 시도 할 때이 메서드를 실행합니다." - http://msdn.microsoft.com/en-us/magazine/cc163320.aspx – Feroc
@Feroc :이 기사는 평가 메커니즘에 대해 다소 모호합니다. 평가는 체크인 또는 선반 전에 항상 호출되며 체크인 정책 채널을 그릴 수 있지만 내부 상태를 최신 상태로 유지하기 위해 다른 시간에 호출 될 수도 있습니다. –
@EdwardThomson : 흠 ... 얼마 전 정책을 만들었는데 그런 행동을 기억하지 못합니다.또는 어쩌면 그것은 나의 예에서 중요하지 않았고 그래서 나는 단지주의하지 않았다. – Feroc