2016-09-27 1 views
0

Я использую Visual Studio 2013 и написал плагин на стороне сервера TFS 2015. Создал локальную среду TFS 2015 и проверенные файлы, чтобы проверить ее, я обнаружил, что она работает так, как ожидалось.Развертывание плагина на стороне сервера TFS 2015 (с использованием VS 2013)

Я хочу развернуть мой плагин. Следуя инструкциям в Интернете, я изменил путь вывода моего модуля плагина на: .............. \ Program Files \ Microsoft Team Foundation Server 14.0 \ Application Tier \ Web Services \ bin \ Плагины. Итак, мои файлы plugin.dll и plugin.pdb находятся в этом месте.

После этого шага; Я застрял, я попытался перейти в Team Explorer -> Settings -> Source Control (в Team Project) -> Check-in Policy -> Add, но я не смог найти файл.

Мне нужна помощь в развертывании моего подключаемого модуля.

ответ

2

Ваш плагин на стороне сервера не отображается в диалоговом окне «Добавить политику». Однако он будет выполняться, когда кнопка Check In будет удалена для каждого клиента, который подключается к серверу TFS, где развертывается плагин. На основе кода плагина он либо одобрит, либо отклонит регистрацию. Если он отказывает в регистрации, вы можете предоставить пользователю сообщение о том, что исправить.

Вот пример, который просто отвергает, если рецензентом кода считается БОГ. Вы также можете проверить раздел комментария и искать нужные элементы, если хотите.

using System; 
using System.Diagnostics; 
using System.Linq; 
using Microsoft.TeamFoundation.Build.Server; 
using Microsoft.TeamFoundation.Common; 
using Microsoft.TeamFoundation.Framework.Server; 
using Microsoft.TeamFoundation.WorkItemTracking.Server; 
using System.Collections.Generic; 
using Microsoft.TeamFoundation.VersionControl.Server; 

    namespace TFSPlugin 
    { 
     public class FittingSoftwarePlugin : ISubscriber 
     { 
      public string Name { get { return this.GetType().Name; } } 
      public SubscriberPriority Priority { get { return SubscriberPriority.Normal; } } 
      public Type[] SubscribedTypes() { return new[] { typeof(CheckinNotification) }; } 

      public EventNotificationStatus ProcessEvent(IVssRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, 
                 out int statusCode, out string statusMessage, out ExceptionPropertyCollection properties) 
      { 
       statusCode = 0; 
       properties = null; 
       statusMessage = String.Empty; 

       try 
       { 
        var checkinNotificationArgs = notificationEventArgs as CheckinNotification; 
        if (notificationType == NotificationType.DecisionPoint && checkinNotificationArgs != null) 
        { 
         var codeReviewer = checkinNotificationArgs.CheckinNote.Values.FirstOrDefault(v => v.Name.Equals("Code Reviewer")); 
         if (codeReviewer!=null && codeReviewer.Value.Equals("GOD", StringComparison.InvariantCultureIgnoreCase)) 
         { 
          statusMessage = "GOD cannot be used as a code reviewer as he is not trustworthy!"; 
          return EventNotificationStatus.ActionDenied; 
         } 
        } 
       } 
       catch (Exception e) 
       { 
        // Log error 
       } 

       return EventNotificationStatus.ActionPermitted; 
      } 
     } 
    } 
+0

Объяснение действительно хорошее, спасибо. –

1

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

Правила регистрации - это не то же самое, что серверные плагины.

+0

Как я уже сказал, у меня есть локальная TFS, которую я пытаюсь развернуть на моей машине. Не могу ли я написать подключаемый модуль на стороне сервера, чтобы заставить пользователя поместить конкретное сообщение фиксации? Например; Я хочу, чтобы сообщение commit включало номер проблемы. Является ли это возможным? Если вы знаете, как это работает, вы можете управлять мной через процесс, пожалуйста, –

 Смежные вопросы

  • Нет связанных вопросов^_^