Visual studio Visual Studio宏从解决方案中删除项目时出现问题

Visual studio Visual Studio宏从解决方案中删除项目时出现问题,visual-studio,macros,Visual Studio,Macros,我在选择项目并将其从解决方案中删除时录制了一个宏,导致以下代码: DTE.ActiveWindow.Object.GetItem("PerfixEMS\Allocations\BDAUploader\perFIXAllocationsFTP").Select(vsUISelectionType.vsUISelectionTypeSelect) DTE.ExecuteCommand("Edit.Delete") 如果项目在解决方案中,此宏可以很好地工作,但如果项目已被删除,则会导致运行时错误。即

我在选择项目并将其从解决方案中删除时录制了一个宏,导致以下代码:

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

如果项目在解决方案中,此宏可以很好地工作,但如果项目已被删除,则会导致运行时错误。即使将结果if
GetItem
分配给
对象
变量,以便在调用
Select
之前不检查任何内容,也会导致运行时错误。如何防止此宏出错?

您可以将其放入
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)
)引用