在Visual Studio中获取最新版本的键盘快捷方式

18

我希望在Visual Studio 2012中使用键盘快捷方式获取当前解决方案的“最新版本(递归)”。我们正在使用TFS。

我已经尝试过映射

File.GetLatestSolutionFiles
File.GetLatestVersion
File.TfsGetLatestVersion

但是没有任何反应。有什么想法吗?

作为解决方法,我还尝试过将键盘快捷键映射到以下内容,但失败了:

Tools.shell """c:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\TF.exe""" get $/OUR/REPOSITORY/Main /recursive

这是我想要一个键盘快捷键的命令: 输入图像描述


如果您没有提及使用的源代码控制工具以及它如何与VS集成,那么很难准确回答这个问题。 - Hans Passant
这并不能帮助你太多,但我已经在VS 2012(和VS 2010)以及TFS 2010中测试了“File.TfsGetLatestVersion”和CTRL+!作为快捷方式,对我来说运行良好。这可能是与你的设置有关吗? - Simon Mourier
这正是我们正在运行的设置!你也在使用ReSharper吗?虽然这并不重要。 - Jonas Elfström
我已经安装了R# V5(并且程序集已经加载到VS地址空间中),但是我将其保持挂起状态(你知道的,当它不会占用整个内存时),但只在VS2010中,而不是在VS2012中。PS:发送评论给某人时,请不要忘记添加@符号,我已经收到了你的通知。 - Simon Mourier
7个回答

9

Alt-V P Home Alt-F R L

或者

Alt-V P Home Menu L(这是我每天的做法)

一个更简短的解决方案是绑定你列出的其中一个命令;你试过了吗,具体是怎么做的?


我尝试将它们绑定到crtl+shift+',但没有任何反应。然后我将其绑定到OpenFile,这样就可以了,所以这不是快捷方式的问题。 - Jonas Elfström
尝试绑定仅 TfsGetLatestVersion;我很确定如果您有冲突的绑定,只会触发找到的第一个。此外,您是在使用 TFS 还是其他版本控制系统? - jonvuri
我们正在使用TFS。现在我尝试了TfsGetLatestVersionDynamicSilent,然后发生了一些事情。只需要验证它是否确实获取了解决方案的最新版本,而不仅仅是当前文件。 - Jonas Elfström
好的,如果我的答案和右键单击并选择菜单命令可以工作,但 File.TfsGetLatestVersion 不行,我不知道该说什么。据我所知,它们是相对应的。 - jonvuri
1
我之前不知道错在哪里,但现在当我执行“File.TfsGetLatestVersion”时确实会发生一些事情。问题是它似乎只获取当前打开文件的最新版本,而不是项目中的所有文件,更不用说解决方案中的所有文件了。 - Jonas Elfström
显示剩余3条评论

6
在2012年,你只需要执行"ALT-F R L"即可。

11
获取当前打开文件的最新版本。我正在寻找一个可获取整个解决方案最新版本的快捷方式。 - Jonas Elfström

5
该命令是TfsGetLatestVersionDynamicSilent。该命令的工作方式基于Solution Explorer
  1. Options > Environment > Keyboard 中设置您的键绑定。 TfsGetLatestVersionDynamicSilent
  2. 选择您想要更新的内容,这里我选择了SolutionSolution
  3. 然后,按下您的键绑定,就完成啦!现在,您已经从 TFS 获取了最新的SolutionAll files are up to date.

3
C:\Foo\Bar\Main>tf get . /recursive

从Visual Studio命令提示符中执行

完整示例

将以下内容放入.bat文件中:

@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\VsDevCmd.bat"
cd /d "C:\Foo\Bar\Main"
tf get . /recursive
pause

在桌面上创建一个指向 .bat 文件的快捷方式,并为该快捷方式分配全局键(我将其映射为 CTRL+ALT+G)。您可以右键单击快捷方式并选择属性来分配键。

我该如何将其绑定到键盘快捷键或至少绑定到菜单项? - Jonas Elfström
将代码放入.bat文件中,将快捷方式(指向.bat文件)放置在桌面上,进入该快捷方式的属性并分配一个键盘快捷键(我将其映射为CTRL+ALT+G)。非常好用! :) - RickardN
完整的命令行文件:@echo off call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\VsDevCmd.bat" cd /d "F:\Projects\tfs\SunHotels\B.Dev\Groups\SunHotels.Groups" tf get . /recursive pause[return]替换为新行。(迷你Markdown不允许在注释中使用新行...我的错...) - RickardN
我会在接下来的一周尝试这个。现在我也明白为什么这可能有效。它根本不需要使用Visual Studio,但对我来说没问题! - Jonas Elfström
这个可以工作,但我发现文件修改检测的对话框很烦人。它们也会滞后几秒钟。 https://dl.dropboxusercontent.com/u/26840/file_mod_detected.png如果有一个集成在Visual Studio中的解决方案,那就会好得多。 - Jonas Elfström
你可以安装AutoHotKey并使用一个脚本,在VS内触发,执行批处理文件,等待几秒钟并发送Alt+A到“更新全部”对话框。 - RickardN

2
通过“工具”->“选项”->“环境”->“键盘”映射快捷方式是可行的。

步骤:
  1. 转到“工具”菜单->“选项”。
  2. 展开“环境”节点。 转到“键盘”部分
  3. 在“显示包含命令的文本框中”输入“tfsget”。
  4. 从显示的选项列表中选择“File.TfsGetLatestVersion”。 enter image description here
  5. 选择“按快捷键:”文本框并输入您的组合键。
  6. 单击“分配”按钮,并确保组合键出现在“所选命令的快捷方式:”下拉列表中。
  7. 单击“确定”按钮。

要确保此方法有效,请打开“输出”窗口(查看菜单->“输出”),清除其中的所有消息。 enter image description here
在“解决方案资源管理器”中打开解决方案,选择需要获取最新版本的解决方案、项目或文件,并键入您的组合键。

如果成功,您将在输出窗口中看到消息: enter image description here


1

修改自 @RickardN 的回答

创建一个名为 GetLatest.bat 的文件并将其放在您的程序文件夹中。

文件应包含以下内容:

@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\VsDevCmd.bat"
tf get . /recursive
rem require keypress on error, else pause a few seconds
if %errorlevel% neq 0 pause
if %errorlevel% == 0 choice /C X /T 3 /D X > nul

路径到vsdevcmd.bat假定您正在使用Visual Studio 2013;根据您的Visual Studio版本更改路径。现在转到工具->外部工具并添加一个新命令。将其命名为Get Latest。将Command设置为.bat文件的路径,并将Initial Directory设置为$(SolutionDir)。

您可以将外部命令映射到工具栏按钮或快捷方式。


我没有VS2013。这会显示“检测到文件修改”对话框吗? https://dl.dropboxusercontent.com/u/26840/file_mod_detected.png - Jonas Elfström
如果您在Visual Studio中打开了该文件,则是的,它会告诉您文件已更改,并询问您是否要重新加载。这是基本的Visual Studio功能-与TFS无关。如果您使用像记事本这样的外部编辑器修改在VS中打开的文件,则会发生同样的事情。 - mhenry1384
是的,但它不是即时的,那几秒钟的延迟有点让人烦恼。 - Jonas Elfström
这个很好用,但每次都会提示我输入TFS凭证。有没有办法避免这种情况? - Daniel Alexiuc
@DanielAlexiuc 这个问题有几种解决方案,包括在tfs命令中使用-login:username@domain,password指定您的凭据。https://msdn.microsoft.com/en-us/library/Hh190725.aspx - mhenry1384

0

通过使用Visual Studio宏,您可以设置此宏

//go to solution explorer
dte.ExecuteCommand("View.SolutionExplorer");

//1 based indexing so item 1 is the first item, which should be you Solution
dte.Windows.Item(1).Activate();

//perform get on the activated item (which is the solution)
dte.ExecuteCommand("File.TfsGetLatestVersion");

然后您只需将该宏绑定到诸如 cntrl+alt+shift+G 之类的键。

如果您没有使用 Visual Studio 宏,我强烈推荐您使用: Visual Studio 13/15/17 的宏


这听起来很有趣,但我现在没有Visual Studio甚至没有Windows,所以我无法测试它是否有效。如果这被可靠的来源证实,我会考虑接受这个答案。 - Jonas Elfström

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接