在Visual Studio中跨项目添加和删除多个引用

时间:2012-04-04 20:55:29

标签: visual-studio visual-studio-2010 refactoring resharper

我有一个包含超过50或60个csproj文件的庞大项目。我需要删除退出引用的6或7个引用,并在所有这些项目中添加10或15个新引用。是否有批量添加引用和删除引用的机制?

或者如果有办法说,在所有项目中用Y替换参考X,这也非常有用。让我补充一点,Nuget不是一个选择。

2 个答案:

答案 0 :(得分:1)

这个很简单:只需编写一个脚本,打开所有.proj文件,删除不需要的行并添加您执行的行。这是最简单的方法。我认为还有为VS或ReSharper编写插件的选项,但这两个选项都是矫枉过正的。毕竟,项目文件只是XML文件(=文本文件),可以这样处理。

当然,如果您发现这是一个重复操作,或者您需要遵守某些条件逻辑,那么编写插件是一个明智的选择。

答案 1 :(得分:0)

您可以使用AutoHotKey编写脚本/宏来在Visual Studio中添加对多个项目的引用。

下面的方法与Visual Studio的运行副本交互而不是直接操作项目文件中的文本,它利用了这样一个事实,即你可以在不使用鼠标和仅使用键盘的情况下完成所有事情(大多数?)。它的工作原理是向Visual Studio发送适当的按键,以便找到合适的项目,右键单击,打开引用等。

要使脚本生效,您需要打开资源视图窗口,并在执行脚本之前突出显示项目。这样它就可以按名称搜索项目(解决方案资源管理器可能有防止这种情况的文件夹)。 您还需要通过重命名项目窗口 SolutionName 以及要添加的引用名称​​ ReferenceName 来调整脚本。 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%
{
	element := Array%A_Index% ; Grabs current project name from array
	Send % element ; types the name of the project
	Sleep 100
	Send {AppsKey}F{Tab}{Tab}{Space}
	Sleep 100
	Send ReferenceName{Enter}
	Sleep 100
	Send {Enter}
	Sleep 100
}

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