- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想使用宏来发布我的网络应用程序项目。小问题是,DTE.ExecuteCommand 异步运行,我需要等到命令完成。
例子:
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem("04 - Products\04 - Products.WSS").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Publish")
'// now I want copy (and overwrite) some files, but AFTER the publish
是否有一些同步对象或有关执行命令状态的信息?
最佳答案
如果您仍在寻找这个问题的答案,请试试这个。
绑定(bind)到发布事件并在成功推送时调用您的外部命令。我正在做类似的事情,构建解决方案,然后启动 MSpec 测试运行器 ( blog post )。
为此,您需要为 PublishEvents_OnPublishDone 添加一个 Hook 。通过转到 EnvironmentEvents 模块并添加以下内容来执行此操作:
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
'call custom module sub here.
End Sub
如果您只想运行外部命令,有时可以这样做。像这样创建你的宏:
Public runExternalCommandOnComplete As Boolean = False
Sub PublishAndRunExternalCommand()
DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
DTE.ActiveWindow.Object.GetItem("04 - Products\04 - Products.WSS").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Publish")
runExternalCommandOnComplete = True
End Sub
然后在 EnvironmentEvents 中添加:(注意:CustomMacros 是您在上面放置代码的模块的名称)
<System.contextStaticAttribute()> Public WithEvents PublishEvents As EnvDTE80.PublishEvents
Private Sub PublishEvents_OnPublishDone(ByVal Success As Boolean) Handles PublishEvents.OnPublishDone
CustomMacros.runExternalCommandOnComplete = False
'Where ExternalCommand1 matches the command you want to run
DTE.ExecuteCommand("Tools.ExternalCommand1")
End Sub
应该这样做。
关于c# - DTE.ExecuteCommand 并等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1000137/
在我的包中,我使用 (DTE) GetService(typeof (DTE)) 获取有关当前打开的解决方案的信息。有没有一种方法可以模拟这个以进行测试,特别是这样我就可以使用 dte.Solutio
我正在尝试在Powershell中做一些非常简单的事情,我有一个ProjectItem实例,我想读取FileNames属性的值(记录为字符串数组)。但是事实证明这是相当困难的 ForEach ($it
我想使用宏来发布我的网络应用程序项目。小问题是,DTE.ExecuteCommand 异步运行,我需要等到命令完成。 例子: DTE.Windows.Item(Constants.vsWind
我编写了如下代码: [Attrib(typeof(MyCustomType))] public class TargetType { // ..... } 我想使用 EnvDTE 获取对 type
我正在尝试使用 PowerShell 来自动化创建基于种子(例如 EDMX 文件或 DbContext)配置的 n 层解决方案的过程。我希望能够打开一个框架解决方案,获取事件实例,并使用自动生成的代码
我的 Visual Studio 程序包需要使用 EnvDTE.DTE 变量,但返回时始终为空。在阅读了许多 hack 之后,他们都说使用 OnShellPropertyChange() 方法 (IV
我正在编写 Visual Studio 2008 扩展。我想在每次 DTE.ActiveDocument 更改时收到通知,因此我可以在自定义面板中更新某些内容,该面板执行与解决方案资源管理器类似的功能
我一直在慢慢研究 Visual Studio 的 SDK,但还不能弄清楚 DTE 代表什么。这是一个愚蠢的问题,但我似乎真的找不到它。 DTE 非常有用,如果知道它是什么,那就太酷了。 最佳答案 它代
我正在尝试自动将焦点从解决方案资源管理器中的一个 .ProjectItem 更改为另一个 .ProjectItem。我想以编程方式将焦点从一个项目更改到另一个项目,但似乎不知道如何操作。 这是我到目前
使用VS2010 感谢汉斯(因为我要低调地回答我自己的问题8个小时) Sub CreateBreakPoint() Dim doc As TextDocument = _
我正在尝试在浏览器 JavaScript 中捕获 Visual Studio 扩展事件,DTE 可通过 window.external 获得: window.external.DTE.Events.S
在这段代码中,在我尝试为 Vs2010 编写的插件中 _applicationObject.ItemOperations.NewFile( "General\\Text File", File
是否可以通过DTE mDte变量获取visual studio实例的进程id?引用下面的代码。 private static DTE mDte; public static void
如何获取所有正在运行的 Visual Studio 实例以便我可以执行自动化? (添加此问题是因为 this one 已关闭) 最佳答案 使用运行对象表获取所有实例,然后选择你想要的。 我认为没有比这
我为我的 VSPackage 创建了一个自定义输出窗口 Pane : 使用此代码: // Creating Output Window for our package. IVsOutputWindow
我正在使用 DTE 来跟踪何时从解决方案中加载和删除项目,以便我可以更新自定义测试资源管理器扩展。然后我触发容器发现过程。但是,当解决方案首次加载时,它会异步加载一些项目并触发大量项目添加事件。 我真
我正在尝试为 vs2010 编写我的第一个插件,但我很挣扎。 我有一个生成大量 cs 文件的程序集。我希望我的插件将新文件添加到所选项目,或者如果文件存在,则覆盖它们。 我有两个问题: 添加新文件时,
我有一个设计师依赖于其他解决方案的存在。如果其中一项被删除,设计器就会崩溃,您必须以 XML 格式进行编辑才能修复。不完全是用户友好的。 但是,我确实拥有代表 Visual Studio 实例的 DT
我有一个仅用于命令行的 C++ VSPackage。在我的 pkgdef 文件中设置以下 Autoload 注册表项,不会在从命令行运行 devenv 时强制加载 VSPackage。 [$RootK
我正在尝试在 Visual Studio 2012 中自动化程序包管理器控制台窗口。我是 DTE 对象以实现相同的目的。通过使用下面的代码行,我可以打开包管理器控制台窗口。 DTE.ExecuteCo
我是一名优秀的程序员,十分优秀!