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






4.33/5 (2投票s)
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 服务器上。
名称 | 类型 | 描述 |
名称 |
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 账户名;设置为您的 TFSSetup 或 TFSService 账户的名称 |
现在您可以设置事件处理程序了。这些在 "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>
正如您所见,理论上您可以使用的任何事件。请注意,只有 WorkItemChangedEvent
和 CheckInEvent
经过了测试。当您添加带有相应 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 链接到他们。
就是这样,您已准备就绪。如果您已安装服务并设置了用于运行服务的帐户,则在启动时应该不会出现任何错误。不过不保证 :)