2013-02-19 81 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

相關問題