【问题标题】:TFS 2015 server side plugin deployment (using VS 2013)TFS 2015 服务器端插件部署(使用 VS 2013)
【发布时间】:2017-02-05 10:05:06
【问题描述】:

我正在使用 Visual Studio 2013 并编写了一个 TFS 2015 服务器端插件。创建本地 TFS 2015 环境并签入文件进行测试,我发现它按预期工作。

我想部署我的插件:按照互联网上的说明,我将插件代码的输出路径更改为:........\Program Files\Microsoft Team Foundation Server 14.0\Application Tier \Web 服务\bin\插件。所以,我的 plugin.dll 和 plugin.pdb 文件就在这个位置。

这一步之后;我被卡住了,我试图去 Team Explorer -> Settings -> Source Control(在 Team Project 下)-> Check-in Policy -> Add 但我找不到我的文件。

我需要帮助来部署我的插件。

【问题讨论】:

    标签: visual-studio-2013 plugins deployment tfs tfs-2015


    【解决方案1】:

    您的服务器端插件不会显示在“签入策略添加”对话框中。然而,当每个连接到部署插件的 TFS 服务器的客户端点击 Check In 按钮时,它将执行。根据插件代码,它将批准或拒绝签入。如果它拒绝签入,您可以向用户提供有关要修复的内容的消息。

    这是一个示例,如果声称代码审查者是 GOD,则会拒绝。您还可以查看评论部分并根据需要查找所需的元素。

    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;
                }
            }
        }
    

    【讨论】:

      【解决方案2】:

      必须将签入策略部署到要使用它的任何人的本地计算机上。

      签入政策与服务器端插件不同。

      【讨论】:

      • 正如我所说,我有一个本地 TFS,我正在尝试将它部署在我的机器上。我不能写一个服务器端插件来强制用户输入一个特定的提交信息吗?例如;我希望提交消息包含问题编号。可能吗?如果您知道它是如何工作的,请您带我完成整个过程
      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 2018-06-28
      • 2015-08-12
      • 2013-09-10
      • 2016-03-27
      • 1970-01-01
      • 2020-01-10
      相关资源
      最近更新 更多