TFS GetLocalWorkspaceInfo, TFS’e bağlanma sırasında workspace’i elde etmek isterken sürekli null sonuç dönüyorsa bu soruna çözümü ise 2 satırlık kodda bulacaksınız.
TFS GetLocalWorkspaceInfo sürekli null sonuç döndürülme problemi
Alttaki örnek FilePendEdit
adlı metodda görüleceği üzere fileName
parametresine yolunu vereceğim dosya için TFS’de ilgili dosyanın edit olarak işaretlenmiş olmasını sağlıyorum.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private void FilePendEdit(string fileName) { using (var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfs))) { if (tpc != null) { var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(fileName); if (null != workspaceInfo) { var workspace = workspaceInfo.GetWorkspace(tpc); workspace.PendEdit(fileName); } } } } |
Fakat burada GetLocalWorkspaceInfo
ile null
sonucu döndüğünü görüyoruz böylelikle ilgili dosyayı edit moduna düşüremiyoruz. Bu sorunu gidermek için yapmamız gereken ise oldukça basit TFS’de erişmek istediğimiz Workspace
bilgilerine ait cache’in güncel olup olmadığı konusunda emin olmak için TFS’de yetkilendirilmiş kullanıcıyı EnsureUpdateWorkspaceInfoCache
metodununun ikinci parametresine geçerek kontrolü sağlıyoruz ve eklediğimiz 2 satırlık kod ile metodumuzun son hali ise şöyle.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | private void FilePendEdit(string fileName) { using (var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfs))) { VersionControlServer tfServer = tpc.GetService<VersionControlServer>(); Workstation.Current.EnsureUpdateWorkspaceInfoCache(tfServer, tfServer.AuthorizedUser); if (tpc != null) { var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(fileName); if (null != workspaceInfo) { var workspace = workspaceInfo.GetWorkspace(tpc); workspace.PendEdit(fileName); } } } } |
Artık metod kullanımımıza hazır tek yapmamız gereken FilePendEdit
adlı metodumuza edit moda düşürmek istediğimiz dosya yolunu girmek.