消除跨项目中的多个引用我有超过50或60的csproj文件,一个巨大的工程。我需要删除6或7个引用退出引用,并在所有这些项目中添加10或15个新引用。是否有一个机器人批量添加引用和删除引用?添加和Visual Studio中
或者,如果有一种方法可以说,在所有项目中,那将是非常有益的太更换为Y参考X。让我补充说,Nuget不是一个选项。
消除跨项目中的多个引用我有超过50或60的csproj文件,一个巨大的工程。我需要删除6或7个引用退出引用,并在所有这些项目中添加10或15个新引用。是否有一个机器人批量添加引用和删除引用?添加和Visual Studio中
或者,如果有一种方法可以说,在所有项目中,那将是非常有益的太更换为Y参考X。让我补充说,Nuget不是一个选项。
这个很简单:只需编写一个脚本,打开所有的.proj
文件,删除不需要的行并添加行。这是最简单的方法。我认为还有为VS或ReSharper编写插件的选项,但这两个选项都是过分的。项目文件毕竟只是XML文件(=文本文件),可以这样对待。
当然,如果你觉得这是一个经常性的动作,或者如果有,你需要坚持,然后写一个插件,一些有条件的逻辑是一个明智的选择。
您可以通过编写使用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.
}
我希望在Visual Studio团队将建立某种形式的适配器,以便与解决方案目前看起来像一个本地的NuGet库,与溶液中的每个项目看起来像一个NuGet包。那么你可以轻松地做到这一点。 – HiredMind 2013-09-26 17:33:26
如果引用是NuGet包,这可能会有所帮助:https://stackoverflow.com/a/45898835/1014320 – vaheeds 2017-08-26 19:18:16