Блокировка регистрации при сбое политики

В качестве примера я создал политику регистрации из этой статьи MSDN (код просто копируется / вставляется).

Это работает нормально, появляется, когда я пытаюсь пройти регистрацию, однако это выглядит как предупреждение. Так что я могу проигнорировать это, просто нажав Check In снова. Как я могу изменить код, указанный в URL, чтобы он возвращал ошибку, а не предупреждение. Я не вижу никаких свойств на PolicyFailure, чтобы сделать это.

По сути, я хочу, чтобы это выглядело как ошибка на этом скриншоте:

Источник изображения

РЕДАКТИРОВАТЬ: Вот точный код, который я использую. Теперь он немного изменен по сравнению с исходным кодом, но не так сильно, как я бы подумал. К сожалению, я не могу публиковать скриншоты, но постараюсь описать все, что я сделал.

Итак, у меня есть DLL из кода ниже, я добавил ее в папку C:\TFS\CheckInComments.dll. Я добавил раздел реестра под Checkin Policies с путем к DLL, имя строкового значения совпадает с моим DLL (минус.dll). В настройках моего проекта в системе контроля версий я добавил эту Политику регистрации.

Кажется, все работает нормально, если я попытаюсь пройти регистрацию, появится предупреждение "Пожалуйста, предоставьте некоторые комментарии о вашей регистрации", чего я и ожидаю, и я хотел бы, чтобы он остановил регистрация, если какие-либо политики не соблюдаются, однако я все же хотел бы, чтобы пользователь мог при необходимости выбрать Переопределить. На данный момент, несмотря на предупреждение, если бы я нажал кнопку "Регистрация", он успешно зарегистрировал бы код.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace CheckInComments
{
    [Serializable]
    public class CheckInComments : PolicyBase
    {
        public override string Description
       {
            get
            { 
                return "Remind users to add meaningful comments to their checkins";

            }
        }

        public override string InstallationInstructions
        { 
            get { return "To install this policy, read InstallInstructions.txt"; } 
        }

        public override string Type
        {
            get { return "Check for Comments Policy"; }
        }


        public override string TypeDescription
        {
            get
            {
                return "This policy will prompt the user to decide whether or not they should be allowed to check in";
            }
        }

        public override bool Edit(IPolicyEditArgs args)
        {

            return true;
        }


        public override PolicyFailure[] Evaluate()
        {
            string proposedComment = PendingCheckin.PendingChanges.Comment;
            if (String.IsNullOrEmpty(proposedComment))
            {
                PolicyFailure failure = new PolicyFailure("Please provide some comments about your check-in", this);
                failure.Activate();

                return new PolicyFailure[1]
                {
                    failure
                };
            }
            else
            {
                return new PolicyFailure[0];
            }
        }

        public override void Activate(PolicyFailure failure)
        {
            MessageBox.Show("Please provide comments for your check-in.", "How to fix your policy failure");
        }

        public override void DisplayHelp(PolicyFailure failure)
        {
            MessageBox.Show("This policy helps you to remember to add comments to your check-ins", "Prompt Policy Help");
        }
    }
}

1 ответ

Политика регистрации всегда будет возвращать предупреждение, и если ваш пользователь имеет разрешение на их игнорирование, он может это сделать.

Пользователи всегда могут переопределить политику. Вы можете запросить у хранилища TFS отчет о пользователях, нарушивших политики, и их причинах нарушения, если они их предоставили. Или настройте оповещение всякий раз, когда кто-то игнорирует эти вежливые предупреждения.

Нет никакого способа добиться этого из самой политики. Только из плагина на стороне сервера, как описано Neno в цитируемом вами сообщении. Такой плагин на стороне сервера может быть создан на 2012 или 2010 год. Процесс объясняется здесь.

Я только что преодолел эту проблему, включив анализ кода в моем проекте - щелкните правой кнопкой мыши свой проект, выберите "Свойства", перейдите в "Анализ кода", выберите "Конфигурация" и выберите "Все конфигурации", выберите "Включить анализ кода при сборке".,

Сделайте сборку и убедитесь, что у вас нет ошибок / предупреждений.

Это поможет вам преодолеть любые политики, требующие анализа кода при сборке.

Другие вопросы по тегам