2013-02-19 151 views
0

我在Visual Studio 2010中为TFS 2010创建自定义签入策略。策略本身运作良好。现在,我正尝试从代码应用自定义策略。下面是我的代码:如何在visual studio 2010中为自定义签入策略创建PolicyEnvelope?

try 
     { 
      var projectCollectionUri = new Uri("https://mydomain.com/tfs"); 
      var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(projectCollectionUri, new UICredentialsProvider()); 
      projectCollection.EnsureAuthenticated(); 

      var vcs = projectCollection.GetService<VersionControlServer>(); 

      var teamProject = vcs.GetTeamProject("myProject"); 

      foreach (PolicyType policyType in Workstation.Current.InstalledPolicyTypes) 
      { 
       if (policyType.Name.ToLower().Contains("MyPolicyType")) 
       { 
        //teamProject.SetCheckinPolicies(new PolicyEnvelope[] { new PolicyEnvelope(workItemPolicy, policyType) }); 
        //break; 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 

我被困在这条线:

//teamProject.SetCheckinPolicies(new PolicyEnvelope[] { new PolicyEnvelope(workItemPolicy, policyType) }); 

我如何创建我的自定义策略的策略信封?我引用的代码是从下面的位置: http://bartwullems.blogspot.com/2012/02/team-foundation-server-2010-enable.html

+0

您的政策是否实施“IPolicyDefenition”? – DaveShaw 2013-02-19 20:06:43

+0

是的,它的确如此...... – PushCode 2013-02-19 20:09:11

回答

1

你只需要你的政策,以取代在该示例中WorkItemPolicy

例如:

var myPolicy = new MyPolicy(); 

foreach (PolicyType policyType in Workstation.Current.InstalledPolicyTypes) 
{ 
    if (policyType.Name == myPolicy.Type) 
    { 
     teamProject.SetCheckinPolicies(
      new PolicyEnvelope[] 
      { 
       new PolicyEnvelope(myPolicy, policyType) 
      }); 
     break; 
    } 
} 

您可能需要添加包含您的策略的程序集的引用(如果您没有在您的控制台应用程序中)。

+0

哦,你......我错过了这件简单的事情。你的解决方案效果很好但是,我的方法是删除所有现有的签入策略,并只启用此代码中指定的那个。我想要做的是,我编写的代码应该将指定的签入策略添加到现有列表中,但不能用指定的策略替换整个列表。 – PushCode 2013-02-19 20:50:22

+0

我明白了。 'teamProject.GetCheckinPolicies()'返回'PolicyEnvolope'对象的数组。然后在'if'块中,我将这个策略添加到这个数组对象中,然后将这个数组对象传递给'teamProject.SetCheckinPolicies()'将完成我需要的工作。感谢您的帮助戴夫。 – PushCode 2013-02-19 20:58:31

相关问题