我想让所有项目文件在签入更改时自动增加版本号.有没有办法将TFS配置为在签入时自动递增或至少在项目上执行脚本为我执行此操作?
我知道在标准实践中,构建通常会增加版本号,但这对我来说没有多大意义,因为您可以拥有2个后续版本,这些版本可能没有任何差异,但版本会有所不同.
我正在构建 WCF 路由器,而我的客户端使用可靠会话。在这种情况下,当客户端打开一个通道时,会发送一条消息(建立可靠会话?)。其内容如下:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-rx/wsrm/200702/CreateSequence</a:Action>
<a:MessageID>urn:uuid:1758f794-c5d3-4573-b252-7a07344cc257</a:MessageID>
<a:To s:mustUnderstand="1">http://localhost:8010/RouterService</a:To>
</s:Header>
<s:Body>
<CreateSequence xmlns="http://docs.oasis-open.org/ws-rx/wsrm/200702">
<AcksTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</AcksTo>
<Offer>
<Identifier>urn:uuid:64a12658-71d9-4967-88ec-9bb0610f7ecb</Identifier>
<Endpoint>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</Endpoint>
<IncompleteSequenceBehavior>DiscardFollowingFirstGap</IncompleteSequenceBehavior>
</Offer>
</CreateSequence>
</s:Body>
</s:Envelope>
Run Code Online (Sandbox Code Playgroud)
这里的问题是标头不包含我可以用来查找将消息路由到哪个服务的任何信息。在 Busatmante 的路由器示例代码中,她通过向端点添加标头来解决这个问题:
<client>
<endpoint address="http://localhost:8010/RouterService" binding="ws2007HttpBinding"
bindingConfiguration="wsHttp"
contract="localhost.IMessageManagerService" >
<headers>
<Route xmlns="http://www.thatindigogirl.com/samples/2008/01" >http://www.thatindigogirl.com/samples/2008/01/IMessageManagerService</Route>
</headers>
</endpoint>
</client>
Run Code Online (Sandbox Code Playgroud)
打开可靠会话时,消息包含此自定义标头。
<Route a:IsReferenceParameter="true" xmlns="http://www.thatindigogirl.com/samples/2008/01">http://www.thatindigogirl.com/samples/2008/01/IMessageManagerService</Route>
Run Code Online (Sandbox Code Playgroud)
这很棒; 但是,我需要以编程方式配置客户端。我认为 ChannelFactory 端点会有一个 Header 对象,我可以手动向其中添加自定义标头。不幸的是它没有。因此,我进行了一些搜索,并找到了一些通过实现 IClientMessageInspector 添加我的标头并将其作为行为添加到我的端点来扩展 WCF 的建议。
public class ContractNameMessageInspector : IClientMessageInspector {
private const string HEADER_NAME = "ContractName";
private readonly string _ContractName;
public ContractNameMessageInspector(string contractName) { …Run Code Online (Sandbox Code Playgroud) 是否有一个IList或IEnumerable类型的集合类,它有一个我可以检查的标志或者如果通过添加,删除或更新集合更改可以触发的事件?