Check-in ilkelerini taşıma

Team Foundation Sürüm Denetimi'nde (TFVC) özel iade ilkelerinizi şu şekilde geçirebilirsiniz. Kodu güncelleştirebilir, otomatikleştirme için önceden tanımlanmış bir yöntem kullanabilir ve eski ilkeleri kaldırmak için geçici bir çözüm kullanabilirsiniz.

Önemli

Mevcut ilkelerinizi silmeden önce geçiş adımlarını tamamlayın.

Kod güncelleştirmeleri

Özel ilkelerinizi taşımak için:

  1. Aynı yöntemlerle yeni bir sınıf oluşturun, fakat CheckinPolicyBase sınıfı yerine IPolicyCompatibilityJson için IPolicyCompatibility sınıfını (daha doğrusu PolicyBase) devralın.

    Eski bir örnek aşağıda verilmiştir.

     [Serializable]
     public class Simple : PolicyBase
     {
        public override string Description => "SimplePolicyDescription";
        ...
     }
    

    Aşağıda güncelleştirilmiş bir örnek verilmiştir.

     [Serializable]
     public class SimpleNew : CheckinPolicyBase
     {
         public override string Description => "SimplePolicyDescription";
         ...
     }
    
  2. GetBinaryFormatter geçersiz kılındıysa, GetJsonSerializerSettings de uygulayın. Aynı serileştirme mantığını kullanın. JsonSerializerSettings öğesini, TypeNameHandlingObjects olarak ayarlayarak yapılandırın.

    Eski bir örnek aşağıda verilmiştir.

     [Serializable]
     public class Simple : PolicyBase
     {
         public override BinaryFormatter GetBinaryFormatter()
         {
             BinaryFormatter formatter = new BinaryFormatter();
             formatter.Binder = new SimpleBinder();
             return formatter;
         }
         ...
     }
    

    Aşağıda güncelleştirilmiş bir örnek verilmiştir.

     [Serializable]
     public class SimpleNew : CheckinPolicyBase
     {
         public override JsonSerializerSettings GetJsonSerializerSettings()
         {
             return new JsonSerializerSettings()
             {
                 SerializationBinder = new SimpleNewSerializationBinder(),
                 TypeNameHandling = TypeNameHandling.Objects
             };
         }
         ...
     }
    

    Visual Studio sürüm 16 ve önceki sürümleri hedefleyen uzantılar için, daha önce geçersiz kılınmamış olsa BinaryFormatter bile aşağıdaki ek kod gereklidir.

     public class CheckinSerializationBinder : ISerializationBinder
     {
         public void BindToName(Type serializedType, out string assemblyName, out string typeName)
         {
             Assembly assembly = serializedType.Assembly;
             assemblyName = assembly.FullName;
             typeName = serializedType.FullName;
         }
    
         public Type BindToType(string assemblyName, string typeName)
         {
             throw new NotImplementedException();
         }
     }
    
     [Serializable]
     public class SimpleNew : CheckinPolicyBase
     {
         public override JsonSerializerSettings GetJsonSerializerSettings()
         {
             return new JsonSerializerSettings()
             {
                 SerializationBinder = new CheckinSerializationBinder(),
                 TypeNameHandling = TypeNameHandling.Objects
             };
         }
         ...
     }
    
  3. Yeni ilke türünde, daha önce serileştirilmiş özel özellikleri atlayın. Veritabanına kaydedildiklerinden emin olmak için ekleyin [JsonProperty] .

    Örneğin:

     [Serializable]
     public class SimpleNew : CheckinPolicyBase
     {
         [JsonProperty]
         private List<String> pathFilters;
         ...
     }
    
  4. Eski ilke yükleme API'lerini değiştirin.

    Örneğin, aşağıdaki eski yöntemler eskidir: GetCheckinPoliciesForServerPaths, GetCheckinPoliciesve SetCheckinPolicies. Paketten aşağıdaki yöntemleri uygun şekilde kullanın: GetCheckinClientPoliciesForServerPaths, GetCheckinClientPoliciesve SetCheckinClientPolicies.

    Otomatik ilke geçişi yalnızca özel ilkeler için desteklenir. Yerleşik Visual Studio ilkeleri yeni ilke modelini ve geçişi destekler.

Sunucudaki ilkeleri geçirmek için önceden tanımlanmış bir yöntem kullanma

Daha fazla otomatikleştirme yalnızca özel ilkeler için kullanılabilir. Standart Visual Studio ilkeleri bu özelliği desteklemez. NuGet paketi tarafından sağlanan geçiş yöntemini kullanmayı planlamıyorsanız, bu bölümü atlayabilir ve bu makaledeki sonraki bölüme geçebilirsiniz.

  1. Her eski özel ilke için IPolicyMigration arabirimini ekleyin. Bu arabirim ve PolicyBase ile IPolicyCompatibility, gelecek bir sürümde kaldırılmak üzere kullanım dışı bırakılmıştır.

    Önemli

    Geçiş sırasında bu arabirimi devralmayan eski ilkeler atlanır. Bunlar yeni ilkeler olarak kaydedilmez .

  2. ToNewPolicyType yöntemini eski politikada uygulayın. Bu yöntem şu şekilde olmalıdır:

    • Yeni politika (policy) sınıfının bir örneğini döndürün.
    • Yeni örneği eski ilkedeki değerlerle doldurun.

    Örneğin:

     [Serializable]
     public class Simple : PolicyBase, IPolicyMigration
     {
         ...
         public CheckinPolicyBase ToNewPolicyType()
         {
             return new SimpleNew();
         }
     }
    
  3. yöntemini çağırın MigrateFromOldPolicies .