【发布时间】:2011-03-29 14:34:54
【问题描述】:
我有一个宏,它可以打开解决方案、连接到 SourceSafe 并下载解决方案中每个文件的最新版本。至此一切正常。
现在我想用 /command 选项执行 devenv.exe 来运行这个宏并在下载源代码后关闭 Visual Studio 环境,此时我遇到了一些问题:
如果我使用类似下面这些行的宏,Visual Studio 会启动,加载解决方案,开始获取源代码,然后退出而不等待完全下载代码。
DTE.Solution.Open("C:\ApeironDev\Soluciones\SolucioApeiron\SolucioApeiron.sln")
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem("SolucioApeiron").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.ContextGetLatestVersion")
DTE.ExecuteCommand("File.Exit")
如果我添加一行让宏休眠一段时间,比如 20 分钟,这会崩溃并出现有关 COM 调用错误的错误(我知道,这不是完成这项工作的优雅方式,而是为了测试…)。
DTE.Solution.Open("C:\ApeironDev\Soluciones\SolucioApeiron\SolucioApeiron.sln")
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem("SolucioApeiron").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.ContextGetLatestVersion")
Threading.Thread.Sleep(New System.TimeSpan(0, 20, 0))
DTE.ExecuteCommand("File.Exit")
我正在寻找的是一种启动 Visual Studio、加载解决方案、获取最新版本的源代码(等待进程完成)然后关闭 Visual Studio 环境的方法。 有什么帮助吗?
澄清,要运行宏,我使用以下命令行:
devenv.exe /command "Macros.MyMacros.SourceControl.GetLastVersion"
其中 Macros.MyMacros.SourceControl.GetLastVersion 是包含上述代码的宏的完整路径。
【问题讨论】:
标签: visual-studio visual-studio-2008 visual-studio-macros