2009-01-07 20 views
12

Görsel stüdyodaki açık sln/projenin mevcut çalışma alanını TFS API'sini kullanarak programatik olarak belirleme yolu var mı? VersionControlServer'ın bilinen tüm çalışma alanlarını nasıl geri alabildiğini gördüm, ancak kullanıcının şu anda sahip olduğu (veya sahip olmadığı) bir şeyi bağlamak için kullanabileceğim bir şey var mı?'Mevcut' açık çalışma alanını TFS API aracılığıyla tanımlayın.

cevap

1

Çözümün veya proje dosyasının fiziksel yolunu belirleyebiliyorsanız, bu dosyayı TFS'de sorgulayabilirsiniz ve hangi çalışma alanının bu yerel dosya konumuna eşlendiğini görmelisiniz.

+0

Ah:

TfsTeamProjectCollection collection = new TfsTeamProjectCollection(info.ServerUri); Workspace workspace = info.GetWorkspace(collection); 

sonra VersionControlServer erişmek için koleksiyon veya çalışma alanını kullanın. Bir çalışma alanının haritalanmış yolunun benzersiz olması gerektiğinin farkında değildim, ama mantıklı. Harika, teşekkürler! – JPero

10

Sıfırlanmış VersionControlServer nesnesinin GetWorkspace yöntemine başka bir geçersiz kılma daha vardır. Bernhard durumları gibi yerel yolla GetWorkspace numaralı telefonu arayabilir, ancak çalışma alanı adı ve çalışma alanı sahibi ile de arayabilirsiniz. Çalışma alanı adı varsayılan olarak yerel bilgisayar adına girdiğinden, genellikle Environment.MachineName'u kullanarak kurtulursunuz, ancak her zaman çalışma alanı adını değiştiren geliştirici olacak.

Örnek:

TeamFoundationServerFactory _tfs = TeamFoundationServerFactory.GetServer(server); 
      _tfs.EnsureAuthenticated(); 

VersionControlServer _vcs = (VersionControlServer)_tfs.GetService(typeof(VersionControlServer)); 
Workspace _ws = _vcs.GetWorkspace(Environment.MachineName, Environment.UserName); 
1

Dave Teply gelen yaklaşımdaki sorun zaten bir VersionControlServer ya da en azından TeamFoundationServerUri bir örneğini sahip olduğu varsayılır olmasıdır.

Daha güçlü bir yol olsa da, using the Workstation class. Bu konu hakkında Ricci Gian Maria has written a quite extensive blog post. Aşağıdaki kod parçacığı, bu iletinin esaslarıdır: Eşleşme olup olmadığını görmek için Workspace sınıfını almak için Workstation sınıfını kullanın, bu iş istasyonunda kayıtlı olan tüm TFS sunucularının çalışma alanlarını arar. : Artık

Workstation workstation = Workstation.Current; 
WorkspaceInfo info = workstation.GetLocalWorkspaceInfo(path); 

Eğer WorkspaceInfo olduğuna göre, TFS bağlanmak için dava edebilir, çalışma alanı bilgisi belirli ekip proje koleksiyonu için ProjectCollectionUri içerir. Ve bu Çalışma Alanı örneğinden:

VersionControlServer versionControlServer = collection.GetService<VersionControlServer>(); 
İlgili konular