65.9K
CodeProject 正在变化。 阅读更多。
Home

TFS 事件处理程序原型配置解密

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (2投票s)

2007 年 8 月 22 日

Ms-PL

3分钟阅读

viewsIcon

21231

TFS 事件处理程序原型有许多配置选项。我将在下面详细介绍所有这些选项。第一步是设置 Windows Communication Foundation 服务选项,这实际上只需要您更改一个值。

引言

TFS 事件处理程序原型有许多配置选项。我将在下面详细介绍所有这些选项。第一步是设置 Windows Communication Foundation 服务选项,这实际上只需要您更改一个值。

<system.serviceModel>
    <services>
        <service name="RDdotNet.TeamFoundation.NotificationService">
            <endpoint address="http://[LocalMacheneName]:8677" 
                binding="basicHttpBinding"
                bindingConfiguration="" 
                contract="RDdotNet.TeamFoundation.INotificationService" />
        </service>
    </services>
</system.serviceModel>

重要的一个变量是 [LocalMacheneName],它应该设置为本地机器名,或者如果您有一个复杂的代理,则设置为指向您计算机的域名。

下一步是为该软件设置实际的选项。这从 <RDdotNet.TeamFoundation> 选项开始,需要您设置多项内容。

<BaseAddress url="http://[LocalMacheneName]:3624/" />

同样,您需要设置机器名,但请确保端口号不同。

<TeamServers>
    <TeamServer name="[TFS Server Name]"
                url="http://[TFS Server Name]:8080/"
                subscriber="[Subscriber AD Account]"
                mailAddressFrom="[From Email Address]"
                mailFromName="[Form name]"
                mailServer="[email relay server]"
                logEvents="True"
                testMode="True"
                testEmail="[email to send testes to]"
                eventLogPath="C:\temp\TFSEventHandler\">
    </TeamServer>
</TeamServers>

在 Team Servers 部分,您需要列出所有您将要处理事件的团队服务器。系统将自动为此处添加的所有 Team Servers 添加事件订阅,但我只测试过两个,并且我现在总是将该服务运行在 TFS 服务器上。

TeamServer 选项
名称 类型 描述
名称 System.String 这应该是 Team Foundation Server 的友好名称
url System.Uri 您希望连接的 TFS 的 URI,包括协议和端口
mailFromAddress System.String 您希望系统发送的所有电子邮件都显示的发送地址
mailFromName System.String 发件人电子邮件地址的显示名称
mailServer System.String 您有权限发送电子邮件的邮件服务器
logEvents System.Boolean 一个布尔值,用于启用系统中所有事件的日志记录;非常适合调试……
testMode System.Boolean 在测试模式下,系统发送的所有电子邮件将只发送到 testEmail 中定义的电子邮件地址;生产环境请设置为 false
testEmail System.String 启用 testMode 时,将从系统中发送的所有电子邮件接收到的电子邮件地址
eventLogPath System.String 事件日志将写入的位置;所有收到的事件都会被分配一个 System.Guid,并且所有与该事件相关的日志都保存在相应的文件夹中
subscriber System.String 正在写入事件的账户的 AD 账户名;设置为您的 TFSSetupTFSService 账户的名称

现在您可以设置事件处理程序了。这些在 "Events" 部分定义。

  • AclChangedEvent
  • Branchmovedevent
  • BuildCompletionEvent
  • BuildStatusChangeEvent
  • CommonStructureChangedEvent
  • DataChangedEvent
  • IdentityChangedEvent
  • IdentityCreatedEvent
  • IdentityDeletedEvent
  • MembershipChangedEvent
  • WorkItemChangedEvent

现在您需要为事件添加处理程序。示例

<Event eventType="WorkItemChangedEvent">
  <Handlers>
    <Handler type="RDdotNet.TeamFoundation.WorkItemTracking.AssignedToHandler"
       assemblyFileName="RDdotNet.TeamFoundation.WorkItemTracking.AssignedTo.dll"
       assemblyFileLocation="~\EventHandlers\WorkItemTracking\">
    </Handler>
  </Handlers>
</Event>

<Event eventType="WorkItemChangedEvent">
  <Handlers>
    <Handler type="RDdotNet.TeamFoundation.WorkItemTracking.AssignedToHandler"
       assemblyFileName="RDdotNet.TeamFoundation.WorkItemTracking.AssignedTo.dll"
       assemblyFileLocation="~\EventHandlers\WorkItemTracking\">
    </Handler>
  </Handlers>
</Event>
</Events>

正如您所见,理论上您可以使用的任何事件。请注意,只有 WorkItemChangedEventCheckInEvent 经过了测试。当您添加带有相应 eventType(这是一个枚举器)的 "Event" 标签时,这会告诉系统要订阅哪些特定事件。

然后,您可以为事件添加处理程序。每当收到这些事件时,就会触发这些处理程序。

名称 类型 描述
eventType RDdotNet.TeamFoundation. EventTypes 定义可能事件列表的枚举器。
type System.Type 这必须是 assemblyFileName 中列出的程序集中的有效类型。
assemblyFileName System.String 这必须是 assemblyFileLocation 中找到的有效程序集。
assemblyFileLocation System.String 服务器文件系统中保存该程序集的某个位置;~ 表示应用程序的根目录。

如果您使用友好服务器名称或 TeamPlain,可以使用 UrlReplacements 配置元素将 TFS 服务器链接更改为 TeamPlain 链接。

<UrlReplacements>
    <!-- The Url Replaces change the url listed in the event to valid public items
    Examples:
        This item changes the TFS url to a TeamPlain v1 url
        <Replace eventType="WorkItemChangedEvent" 
          old=":8080/WorkItemTracking/WorkItem.aspx?artifactMoniker=" 
          new="/workitem.aspx?id=" />
                    
        These items change the server location to a public host header:
        <Replace eventType="WorkItemChangedEvent" 
          old="[ServerProductionEnviromentName]" 
          new="[PublicProductionEnviromentUri]" />
        <Replace eventType="WorkItemChangedEvent" 
          old="[ServerDevelopmentEnviromentName]" 
          new="[PublicDevelopmentEnviromentUri]" />
    -->
</UrlReplacements>

它通过替换事件中 URL 的值来工作。您指定事件类型、要查找的内容以及要替换的内容。这提供了更大的控制力,并将 TeamPlain 集成到您的世界中。如果一项任务分配给您部门范围之外但您已授予 TFS 权限但一无所知的人,他们仍会收到一封电子邮件,该电子邮件将通过 TeamPlain 链接到他们。

就是这样,您已准备就绪。如果您已安装服务并设置了用于运行服务的帐户,则在启动时应该不会出现任何错误。不过不保证 :)

© . All rights reserved.