2009-01-07 7 views
12

क्या टीएफएस एपीआई का उपयोग कर विजुअल स्टूडियो में ओपन एसएलएन/प्रोज के वर्तमान वर्कस्पेस को प्रोग्रामेटिक रूप से निर्धारित करने का कोई तरीका है? मैंने देखा है कि वर्जनकंट्रोल सर्वर सभी ज्ञात कार्यक्षेत्रों को कैसे पुनः प्राप्त कर सकता है, लेकिन क्या ऐसा कुछ भी है जिसका उपयोग मैं उस उपयोगकर्ता को वर्तमान में (या नहीं) खोलने के लिए कर सकता हूं?टीएफएस एपीआई के माध्यम से 'वर्तमान' ओपन वर्कस्पेस की पहचान करें?

उत्तर

1

यदि आप समाधान या प्रोजेक्ट फ़ाइल का भौतिक पथ निर्धारित कर सकते हैं, तो आप उस फ़ाइल को टीएफएस में क्वेरी कर सकते हैं और आपको यह देखना चाहिए कि उस स्थानीय फ़ाइल स्थान पर कौन सा वर्कस्पेस मैप किया गया है।

+0

आह। मुझे एहसास नहीं हुआ कि वर्कस्पेस के लिए मैप किए गए पथ को अद्वितीय होना था, लेकिन यह समझ में आता है। बहुत अच्छे धन्यवाद! – JPero

10

तत्काल VersionControlServer ऑब्जेक्ट की GetWorkspace विधि पर एक और ओवरराइड है। आप GetWorkspace को बर्नार्ड राज्यों जैसे स्थानीय पथ के साथ कॉल कर सकते हैं, लेकिन आप इसे वर्कस्पेस नाम और वर्कस्पेस स्वामी के साथ भी कॉल कर सकते हैं। चूंकि वर्कस्पेस नाम स्थानीय कंप्यूटर नाम पर डिफ़ॉल्ट होता है, इसलिए आप आमतौर पर Environment.MachineName का उपयोग कर दूर हो सकते हैं, लेकिन हमेशा डेवलपर नाम बदलने वाले डेवलपर होने जा रहे हैं।

उदाहरण:

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

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

डेव टेप्लाई से दृष्टिकोण के साथ समस्या यह मानता है कि आप पहले से ही एक VersionControlServer या कम से कम TeamFoundationServerUri का एक उदाहरण है।

हालांकि, using the Workstation class एक और शक्तिशाली तरीका है। इस विषय के बारे में Ricci Gian Maria has written a quite extensive blog post। नीचे स्निपेट उस पोस्ट की अनिवार्यता है:

वर्कस्टेशन क्लास का उपयोग उस पथ के लिए वर्कस्पेसइन्फो प्राप्त करने के लिए करें, जो उस कार्यस्थान पर पंजीकृत सभी टीएफएस सर्वरों के लिए कार्यस्थानों को खोजेगा ताकि यह देखने के लिए कि कोई मिलान है या नहीं :

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

अब जब कि तुम WorkspaceInfo है, तो आप TFS से कनेक्ट करने के खिलाफ मुकदमा कर सकते हैं, कार्यक्षेत्र की जानकारी है कि विशिष्ट टीम प्रोजेक्ट संग्रह के लिए ProjectCollectionUri शामिल हैं। और वह कार्यस्थान उदाहरण से:

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

संग्रह या कार्यक्षेत्र का प्रयोग करें तो VersionControlServer तक पहुँच प्राप्त करने के लिए:

VersionControlServer versionControlServer = collection.GetService<VersionControlServer>(); 
संबंधित मुद्दे