【问题标题】:Problem with Visual Studio macro to remove a project from a solutionVisual Studio 宏从解决方案中删除项目的问题
【发布时间】:2011-04-01 09:40:32
【问题描述】:

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

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

如果项目在解决方案中,此宏可以很好地工作,但如果它已被删除,则会导致运行时错误。即使将结果 if GetItem 分配给 Object 变量,在调用 Select 之前检查 Nothing,也会导致运行时错误。我怎样才能对这个宏进行防错?

【问题讨论】:

    标签: visual-studio macros


    【解决方案1】:

    你可以把它放在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)) 来引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      相关资源
      最近更新 更多