Visual Studio宏从解决方案中删除项目的问题

时间:2011-04-01 09:40:32

标签: visual-studio macros

我已经记录了一个宏,我选择了一个项目并将其从解决方案中删除,产生了以下代码:

DTE.ActiveWindow.Object.GetItem("PerfixEMS\Allocations\BDAUploader\perFIXAllocationsFTP").Select(vsUISelectionType.vsUISelectionTypeSelect)
DTE.ExecuteCommand("Edit.Delete")

如果项目在解决方案中,此宏可以很好地工作,但如果已经删除,则会导致运行时错误。即使将GetItem的结果分配给Object变量,在调用Select之前检查Nothing,也会导致运行时错误。如何对此宏进行错误验证?

1 个答案:

答案 0 :(得分:0)

您可以将其放在Try块中:

Try
    DTE.ActiveWindow.Object.GetItem("PerfixEMS\Allocations\BDAUploader\perFIXAllocationsFTP").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ExecuteCommand("Edit.Delete")
Catch
End Try

更新:我认为你的宏不是很安全。它使用活动窗口,该窗口可以是任何窗口。我建议这样的事情:

Try
    DTE.Solution.Remove(DTE.Solution.Projects.Item("test.vcproj"))
Catch
End Try

项目由UniqueName属性引用。该名称是相对于解决方案及其文件扩展名的项目路径。您可以通过在宏调试器下运行宏来探索属性。项目也可以通过基于1的索引(DTE.Solution.Projects.Item(1))引用。

相关问题