2012-04-04 49 views
4

消除跨項目中的多個引用我有超過50或60的csproj文件,一個巨大的工程。我需要刪除6或7個引用退出引用,並在所有這些項目中添加10或15個新引用。是否有一個機器人批量添加引用和刪除引用?添加和Visual Studio中

或者,如果有一種方法可以說,在所有項目中,那將是非常有益的太更換爲Y參考X。讓我補充說,Nuget不是一個選項。

+1

我希望在Visual Studio團隊將建立某種形式的適配器,以便與解決方案目前看起來像一個本地的NuGet庫,與溶液中的每個項目看起來像一個NuGet包。那麼你可以輕鬆地做到這一點。 – HiredMind 2013-09-26 17:33:26

+0

如果引用是NuGet包,這可能會有所幫助:https://stackoverflow.com/a/45898835/1014320 – vaheeds 2017-08-26 19:18:16

回答

1

這個很簡單:只需編寫一個腳本,打開所有的.proj文件,刪除不需要的行並添加行。這是最簡單的方法。我認爲還有爲VS或ReSharper編寫插件的選項,但這兩個選項都是過分的。項目文件畢竟只是XML文件(=文本文件),可以這樣對待。

當然,如果你覺得這是一個經常性的動作,或者如果有,你需要堅持,然後寫一個插件,一些有條件的邏輯是一個明智的選擇。

+0

謝謝。我絕對可以寫一個腳本來做到這一點(並擁有)。但是,我想知道是否有一個工具已經做到這一點?我相信有幾個人應該面對這種情況。 – praskris 2012-04-19 19:50:27

+0

沒有。我當然沒有聽說過這樣的工具。 – 2012-04-20 07:58:45

+0

謝謝。我也意識到,我一直認爲這應該是一個非常常見的用於管理引用的用例。 – praskris 2012-04-23 15:01:52

0

您可以通過編寫使用AutoHotKey腳本/宏添加到Visual Studio中多個項目的參考。

下面的方法與Visual Studio的運行副本進行交互,而不是直接操縱項目文件中的文本,它利用了事實,您可以在沒有鼠標和僅使用鍵盤的情況下獲得所有內容(大多數?)。它通過發送相應的按鍵到Visual Studio,以便找到合適的項目,合適的點擊廣告,打開引用等

有關腳本工作,你需要有資源視圖窗口,突出了項目開在執行腳本之前。這樣它就可以按名稱搜索項目(解決方案資源管理器可能有防止這種情況的文件夾)。 您還需要通過重命名項目窗口解決方案名稱和您要添加引用名稱引用的名稱來調整該腳本。 這些projects.txt只是與AutoHotKey腳本位於相同目錄中的文本文件,並且您希望添加引用的項目以換行符分隔。

注:我使用Visual Studio 2008。另外,我還沒有使用過任何科學的方法來確定我的睡眠時間,他們甚至可能不是必要的。這是一個戰術解決方案,腳本無疑可以進行優化和改進。

; Prepare array from project list 
 
ArrayCount = 0 ; Initialise array counter 
 
Loop, Read, projects.txt ; This loop retrieves each line from the file, one at a time. 
 
{ 
 
ArrayCount += 1 ; Keep track of how many items are in the array. 
 
Array%ArrayCount% := A_LoopReadLine ; Store this line in the next array element. 
 
} 
 
IfWinExist SolutionName - Microsoft Visual Studio (Administrator) ; Check if VS2008 with solution is running 
 
{ 
 
WinActivate ; Bring a window to front 
 
Loop %ArrayCount% 
 
{ 
 
\t element := Array%A_Index% ; Grabs current project name from array 
 
\t Send % element ; types the name of the project 
 
\t Sleep 100 
 
\t Send {AppsKey}F{Tab}{Tab}{Space} 
 
\t Sleep 100 
 
\t Send ReferenceName{Enter} 
 
\t Sleep 100 
 
\t Send {Enter} 
 
\t Sleep 100 
 
} 
 

 
} 
 
else 
 
{ 
 
MsgBox Cannot find "SolutionName - Microsoft Visual Studio (Administrator)" window. 
 
}