C# で記述されたカスタム チェックイン ポリシーがあり、インストール時にカスタム アクションを有効にして VSIX プロジェクトを使用しました。インストールはうまくいっています。カスタム チェックイン ポリシーを TFS 2010 のチーム プロジェクトに適用し、同じインストーラーからポリシーをアンインストールした場合、レジストリとファイルはクリーンアップされますが、ソース管理ではポリシーが有効なままで、読み込みエラー エラーがスローされます。ポリシー。ポリシーをアンインストールする際に、インストーラーにソース管理からポリシーを削除してもらいたいです。どうすればこれを達成できますか?
OnAfterUninstall イベントで次のコードを書き込もうとしましたが、必要なことを実行していません。
protected override void OnAfterUninstall(IDictionary savedState)
{
base.OnAfterUninstall(savedState);
RemovePolicy();
}
private void RemovePolicy()
{
try
{
TfsTeamProjectCollection projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(projectCollectionUri, new UICredentialsProvider());
projectCollection.EnsureAuthenticated();
VersionControlServer vcs = projectCollection.GetService<VersionControlServer>();
List<TeamProject> lstTeamProject = vcs.GetAllTeamProjects(true).ToList<TeamProject>();
foreach (TeamProject tp in lstTeamProject)
{
List<PolicyEnvelope> tc = tp.GetCheckinPolicies().ToList<PolicyEnvelope>();
var myPolicy = new MyCustomCheckinPolicy();
TeamProject teamProject = vcs.GetTeamProject(tp.Name);
foreach (PolicyType policyType in Workstation.Current.InstalledPolicyTypes)
{
if (policyType.Name == myPolicy.Type)
{
tc.Remove(new PolicyEnvelope(myPolicy, policyType));
teamProject.SetCheckinPolicies(tc.ToArray());
break;
}
}
}
}
catch (Exception ex)
{
throw new InstallException("My Error Message");
}
}