0

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");
        }
    }
4

1 に答える 1

0

カスタム チェックイン ポリシーは、TFS プロジェクトにアクセスするすべての開発者ワークステーションにインストールする必要があるため、アンインストール時に TFS プロジェクトから自身を登録解除すると、これらの開発者のいずれかがアンインストールするたびにポリシーが実際に削除されます。それはあなたが望んでいるものではありません。

ポリシーが Team Foundation Power Tools を通じてすべてのチーム メンバーに確実に配布されるようにする方法があります。これにより、アップグレードまたは別のポリシーを出荷する必要がある場合に、すべてのメンバーがそれを確実に入手できるようになります。UI から手動でのみ登録解除を行ってください。

于 2013-02-21T07:57:20.160 に答える