Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Aşağıdaki teknik ayrıntılar, Visual Studio'da güvenilir bir şekilde bir kaynak denetimi eklentisi uygulamanıza yardımcı olabilir.
Bellek yönetimi sorunları
Çoğu durumda çağıran tümleşik geliştirme ortamı (IDE), belleği serbest bırakır ve ayırır. Kaynak denetimi eklentisi, çağıran tarafından ayrılan arabelleklerdeki dizeleri ve diğer öğeleri döndürür. Özel durumlar, oluştukları belirli işlevlerin açıklamalarında not edilir.
Dosya adı dizileri
Bir dosya dizisi geçirildiğinde, dosya adlarının bitişik dizisi olarak geçirılmaz. Dosya adlarına işaretçi dizisi olarak geçirilir. Örneğin, SccGet'te dosya adları parametresi tarafından lpFileNames
geçirilir; burada lpFileNames
aslında bir char **
işaretçidir. lpFileNames
[0] adın işaretçisidir, lpFileNames
[1] ikinci ada yönelik bir işaretçidir, vb.
Büyük model
16 bit işletim sistemlerinde bile tüm işaretçiler 32 bittir.
Tam yollar
Dosya adları veya dizinler bağımsız değişken olarak belirtildiğinde, son ters eğik çizgi olmadan tam yollar veya UNC yolları olmalıdır. Temel alınan kaynak denetim sisteminin bir gereksinimiyse, bunları göreli yollara çevirmek kaynak denetimi eklentisinin sorumluluğundadır.
Kayıtlı DLL için tam yol belirtme
IDE artık göreli yollardan DLL'leri yüklemez (örneğin, .\NewProvider.dll). DLL'nin tam yolu belirtilmelidir (örneğin, C:\Providers\NewProvider.dll). Bu gereksinim, yetkisiz veya kimliğine bürünülen kaynak denetimi DLL'lerinin yüklenmesini engelleyerek IDE'nin güvenliğini güçlendirir.
Kaynak denetimi eklentinizi yüklerken var olan bir VSSCI eklentisini denetleyin
Kaynak denetimi eklentinizi yüklemeyi planlayan bir kullanıcının bilgisayarda zaten bir kaynak denetimi eklentisi yüklü olabilir. Oluşturduğunuz eklentinin yükleme (kurulum) programı, ilgili kayıt defteri anahtarları için mevcut değerler olup olmadığını belirlemelidir. Bu anahtarlar zaten ayarlanmışsa, yükleme programınız kullanıcıya eklentinizi varsayılan kaynak denetimi eklentisi olarak kaydedip kaydetmediğini sormalı ve zaten yüklü olan eklentiyi değiştirmelidir.
Hata sonuç kodları ve raporlama
Kaynak denetimi işlevinin SCC_OK
dönüş kodu, işlemin tüm dosyalar için başarılı olduğunu gösterir. İşlem başarısız olursa, karşılaşılan son hata kodunu döndürmesi beklenir.
Raporlama kuralı, IDE'de bir hata oluşursa, bunu bildirmek IDE'nin sorumluluğundadır. Kaynak denetim sisteminde bir hata oluşursa, kaynak denetimi eklentisi bunu bildirmekle sorumludur. Örneğin, Şu anda seçili olan hiçbir dosya IDE tarafından bildirilmezken , Bu dosya zaten kullanıma alınmış durumdayken eklenti tarafından bildirilir.
Bağlam yapısı
SccInitialize çağrısı sırasında çağıran, başlatılmamış bir tanıtıcı olan parametresini bir void'e geçirirppvContext
. Kaynak denetimi eklentisi bu parametreyi yoksayabilir veya herhangi bir türde bir yapı ayırabilir ve geçirilen işaretçiye bu yapıya bir işaretçi koyabilir. IDE bu yapıyı anlamaz, ancak eklentideki diğer tüm çağrılara bu yapıya bir işaretçi geçirir. Bu, eklentiye, genel değişkenler kullanmadan işlev çağrıları arasında kalıcı olan genel durum bilgilerini korumak için kullanabileceği değerli bağlam önbelleği bilgileri sağlar. Eklenti, SccUninitialize çağrısında yapıyı boşaltmaktan sorumludur.
Eklenti SccInitialize içindeki biti SCC_CAP_REENTRANT
ayarlarsa (özellikle parametresindelpSccCaps
), açık olan tüm projeleri izlemek için birden çok bağlam yapısı kullanılır.
Bitflags ve diğer komut seçenekleri
SccGet gibi her komut için IDE, komutun davranışını değiştiren birçok seçenek belirtebilir.
API, parametresi aracılığıyla IDE tarafından belirli seçeneklerin ayarlanmasını fOptions
destekler. Bu seçenekler, etkiledikleri komutlarla birlikte belirli komutlar tarafından kullanılan Bitflag'larda açıklanmıştır. Genel olarak, bunlar kullanıcıya sorulmayacak seçeneklerdir.
Kullanıcı tarafından yapılandırılabilir ayar seçeneklerinin çoğu, kaynak denetimi eklentileri arasında büyük ölçüde farklılık gösterdiği için bu şekilde tanımlanmaz. Bu nedenle önerilen mekanizma gelişmiş bir düğmedir. Örneğin, Al iletişim kutusunda IDE yalnızca anladığı bilgileri görüntüler, ancak eklentide bu komut için seçenekler varsa gelişmiş düğmesi de görüntülenir. Kullanıcı Gelişmiş düğmesine tıkladığında IDE, kaynak denetimi eklentisini etkinleştirmek için SccGetCommandOptions'ı çağırarak kullanıcıdan bitflags veya tarih/saat gibi bilgileri istemesini sağlar. Eklenti, bu bilgileri komut sırasında geri geçirilen bir yapıda SccGet
döndürür.