VSTS 2008 - 自定义签入代码审查策略

最近正在微软VSTS Workshop项目中,忙了一个月了,今天将其中一个场景实现写在这里,供大家参考。

实现步骤

建立自定义策略项目

  1. 打开VS2008:
    VSTS 2008 - 自定义签入代码审查策略
  2. 选择"文件"下的"新建"菜单中的"项目":
    VSTS 2008 - 自定义签入代码审查策略
  3. 在新项目中选择"Visual C#">"Windows">"类库":
    VSTS 2008 - 自定义签入代码审查策略
  4. 输入项目名为"CopyrightCheckinPolicy":
    VSTS 2008 - 自定义签入代码审查策略
  5. 选择确定按钮保存.
  6. 重命名"Clase1""CopyrightPolicy.cs":
    VSTS 2008 - 自定义签入代码审查策略
  7. 右击项目选择"添加引用":
    VSTS 2008 - 自定义签入代码审查策略
  8. ".NET"选项卡选择"System.Windows.Forms"选择"确定":
    VSTS 2008 - 自定义签入代码审查策略
  9. 再右击项目, 选择"添加引用"选择"浏览"选项卡, 找到下面路径的文件:
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE \PrivateAssemblies\Microsoft.TeamFoundation.VersionControl.Client.dll
    并添加:
    VSTS 2008 - 自定义签入代码审查策略
  10. 在类中输入下面代码:
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略Code
VSTS 2008 - 自定义签入代码审查策略using System.Windows.Forms; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
using Microsoft.TeamFoundation.VersionControl.Client; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
using System.Collections; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
using System.IO; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
using System; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
using System.Collections.Generic; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
using System.Text; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
namespace CopyrightCheckinPolicy 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略[Serializable] 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public class CopyrightPolicy : PolicyBase 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override string Description 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
get VSTS 2008 - 自定义签入代码审查策略return Strings.policyDescription; } 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override bool Edit(IPolicyEditArgs policyEditArgs) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
return false
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override PolicyFailure[] Evaluate() 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
if (this.Disposed) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
throw new ObjectDisposedException(Strings.policyType, Strings.policyDisposedMessage); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略ArrayList changes 
= new ArrayList(); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略PendingChange[] checkedFiles 
= this.PendingCheckin.PendingChanges.CheckedPendingChanges; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
foreach (PendingChange change in checkedFiles) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
if (Path.GetExtension(change.LocalItem) == ".cs"
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
if (change.ChangeType.ToString().Contains(ChangeType.Edit.ToString()) || change.ChangeType.ToString().Contains(ChangeType.Add.ToString())) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
if (IsFileMissingCopyrightNotice(change.LocalItem)) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略PolicyFailure failure 
= new PolicyFailure(Strings.activateMessage + " : " + change.LocalItem, this); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略changes.Add(failure); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
return (PolicyFailure[])changes.ToArray(typeof(PolicyFailure)); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override string Type 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
get VSTS 2008 - 自定义签入代码审查策略return Strings.policyType; } 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override string TypeDescription 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
get VSTS 2008 - 自定义签入代码审查策略return Strings.policyTypeDescription; } 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override bool CanEdit 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
get 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
return false
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override void DisplayHelp(PolicyFailure failure) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略MessageBox.Show(Strings.policyHelp); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override string InstallationInstructions 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
get 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
return Strings.policyInstallationInstructions; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
set 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略Strings.policyInstallationInstructions 
= value; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override void Activate(PolicyFailure failure) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略MessageBox.Show(Strings.activateMessage); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
protected override void OnPolicyStateChanged(PolicyFailure[] failures) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
base.OnPolicyStateChanged(failures); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override void Initialize(IPendingCheckin pendingCheckin) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
base.Initialize(pendingCheckin); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略pendingCheckin.PendingChanges.CheckedPendingChangesChanged 
+= new EventHandler(pendingCheckin_CheckedPendingChangesChanged); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public override void Dispose() 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略PendingCheckin.PendingChanges.CheckedPendingChangesChanged 
-= new EventHandler(pendingCheckin_CheckedPendingChangesChanged); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
base.Dispose(); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
private void pendingCheckin_CheckedPendingChangesChanged(Object sender, EventArgs e) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略OnPolicyStateChanged(Evaluate()); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
private bool IsFileMissingCopyrightNotice(string fullFileName) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
try 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略StreamReader sr 
= new StreamReader(fullFileName, true); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
string sourceCode = sr.ReadToEnd(); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
bool result = !sourceCode.Contains("Copyright"); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略sr.Close(); 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
return result; 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
catch (Exception) 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
return false
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
internal class Strings 
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public static string policyType = "Copyright Notice Policy"
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public static string policyDescription = "This policy ensures that all C# Source Files include a Copyright Notice."
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public static string policyInstallationInstructions = "Sorry, No instructions are available at this time"
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public static string policyTypeDescription = policyType + " Description"
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public static string policyDisposedMessage = policyType + " Object has been disposed."
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public static string policyHelp = "Sorry, help for " + policyType + " is not available at this time."
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略
public static string activateMessage = "Copyright Notice not found in this source file."
VSTS 2008 - 自定义签入代码审查策略
VSTS 2008 - 自定义签入代码审查策略}
 
VSTS 2008 - 自定义签入代码审查策略

VSTS 2008 - 自定义签入代码审查策略
  1. 编译成功后保存.

注册策略

  1. 中键入"Regedit"来运行注册表编辑器, 并找到下面注册表键:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\TeamFoundation\
    SourceControl\Checkin Policies:
    VSTS 2008 - 自定义签入代码审查策略
  2. 添加一个字符串类型的值, 然后将名字命名为刚才建立项目生成的DLL的名字"CopyrightCheckinPolicy":
    VSTS 2008 - 自定义签入代码审查策略
  3. 双击选择在值中写入该DLL的完整路径, 如下(视具体情况而定):
    C:\HOL\Dev\Module 05 - Lab 01 - Setting Up Custom Checkin Policies\Begin\CopyrightCheckinPolicy\CopyrightCheckinPolicy\bin\Debug\CopyrightCheckinPolicy.dll:
    VSTS 2008 - 自定义签入代码审查策略
  4. 保存后即可.

测试策略

  1. 打开VS2008, 右击项目选择其属性:
    VSTS 2008 - 自定义签入代码审查策略
  2. 选择"调试"页:
    VSTS 2008 - 自定义签入代码审查策略
  3. 选择"启动外部程序"单选按钮, 然后设置其值为"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe":
    VSTS 2008 - 自定义签入代码审查策略
  4. 保存.
  5. 调试该程序, 这时一个新的VS2008被打开:
    VSTS 2008 - 自定义签入代码审查策略
  6. 选择团队项目, 在其中选择"团队项目设置"菜单中的"源代码管理":
    VSTS 2008 - 自定义签入代码审查策略
  7. 选择"签入策略"选项卡, 点击"添加"按钮:
    VSTS 2008 - 自定义签入代码审查策略
  8. 这时我们看到刚才定义的策略已经在其中了, 选择它并点击"确定":
    VSTS 2008 - 自定义签入代码审查策略
  9. 新建一个项目, 将其加入到该团队项目中:
    VSTS 2008 - 自定义签入代码审查策略
    VSTS 2008 - 自定义签入代码审查策略
  10. 继续后将" // Copyright ( c ) MyCompany"加入Class1中:
    VSTS 2008 - 自定义签入代码审查策略
  11. 再新建一个类:
    VSTS 2008 - 自定义签入代码审查策略
  12. 然后"签入"所有代码:
    VSTS 2008 - 自定义签入代码审查策略
  13. 这时可以看到提示未加入版权的信息:
    VSTS 2008 - 自定义签入代码审查策略

 

希望本文对大家有帮助,谢谢!

上一篇:Photoshop制作简洁大气轻烟般的淡蓝色透明光束


下一篇:教用Maya制作绚丽的光