2012-04-04 78 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. 
 
}