Я создал пользовательскую политику регистрации для TFS, написав класс, который расширяет PolicyBase
(согласно MSDN Практическое руководство. Создание пользовательских политик регистрации в Visual Studio Team Foundation ). Переопределенный метод Evaluate()
- вот где у меня есть логика.
Evaluate()
вызывается, когда пользователь нажимает кнопку регистрации в TFS, и это здорово, потому что это то, что я хочу.
Однако, также кажется, что Evaluate()
вызывается, когда:
- Visual Studio запущена И
- Пользователь переходит на вкладку Pending Changes в первый раз (или, если это уже активная вкладка при запуске VS) И
- У пользователя есть элементы на вкладке ожидающих изменений.
Как я могу проверить, по какому сценарию называется Evaluate? Мне бы хотелось, чтобы Evaluate вызывался только тогда, когда пользователь явно нажимает кнопку «Регистрация» в TFS.
Реальный метод 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()
способ узнать, по какому сценарию это называется? Я мог бы не вызывать диалоговое окно при всех вызовах, кроме тех, которые запускаются при регистрации.