2012-09-10 47 views
2

前段時間我安裝了linqpad,最近我遇到了一些關於如何使用它來查詢tfs的文章。基本查詢,如簽入和簽出以及這種性質的事情。我在運行這些查詢方面大部分都取得了成功。然後我看到這個網站顯示可以使用linqpad查詢tfs,基本上可以使用linqpad進行代碼搜索。所以我花了很多時間試圖讓這個工作。Linqpad查詢tfs2008 ...... Codesearching通過linqpad tfs2008是可能的嗎?

http://pascallaurin42.blogspot.com/2012/05/tfs-queries-searching-in-all-files-of.html

我必須說,這傢伙真有利用linqpad查詢TFS良好的處理。我碰到的是當我運行這個時,我得到了錯誤,指出我的tfs版本不允許團隊分支......我真的在這個黑暗中拍攝,因爲我不是tfs專家,但是這個如果我能爲tfs2008工作,那將是驚人的。無論如何任何幫助或想法,這是非常感謝....感謝。

回答

2

對於TFS 2008服務器,versionControl.QueryRootBranchObjects()方法不受支持,因爲TFS 2008不理解在TFS 2010中引入的「first-class」分支的概念。但是,仍然可以完成這通過提供你自己的分支清單。

舉例來說,如果你在上面這段代碼的樣本中替換線11-25,它應該工作:

var teamBranches = new String[] { "$/project/Main", "$/project/Dev" }; 

filePatterns.Dump("File patterns"); 
textPatterns.Dump("Text patterns");  

foreach (var teamBranch in teamBranches) 
    foreach (var filePattern in filePatterns)  
     foreach (var item in versionControl.GetItems(teamBranch + "/"  + filePattern, RecursionType.Full).Items)  

SearchInFile(item); 

很顯然,你將要替換$ /項目/主及$ /項目/開發你想要搜索的分支。

讓我知道如果您有任何問題。

編輯

因爲你正在使用TFS 2008,你也將需要調整一些其他的線路。相反,包括

Microsoft.TeamFoundation.Framework.Client 

就包括

Microsoft.TeamFoundation.Client 

而不是這一行:

var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://localhost:8088/tfs")); 

試試這個

// Note, 2008 servers don't use "/tfs" and I can't remember if they take a Uri 
// or a string. 
var tfs = new TeamFoundationServer("http://localhost:8080"); 
+0

所以,現在我想你的解決方案,我得到一個SearchInFile函數中的錯誤基本上是statin克,我沒有正確的參考項目....我相信是Microsoft.TeamFoundation.Framework.Client.dll。這是因爲我沒有關於tfs 2010或2012的任何想法? PS非常感謝您的回答。 –

+0

更新了答案,詳細介紹了2008年的情況。讓我知道你是否再次構建/鏈接錯誤。 –

+0

再次感謝您的更新,我仍然收到錯誤消息。 :無法找到類型或命名空間名稱'Item'(按F4添加使用指令或程序集引用)我吹起私人無效SearchInFile(項目文件) –