Powershell and PMC $dte.ActiveWindow.Object.GetItem error

本文关键字:Object GetItem error ActiveWindow dte and PMC Powershell | 更新日期: 2023-09-27 18:12:33

我正在尝试编写一个powershell脚本来重新加载一个项目(文件和文件夹已通过c#应用程序添加到它中(试图通过c#做到这一点,但失败了,见这里)。我的最终目标是能够调用c#应用程序,然后重新加载项目(卸载和重新加载)来刷新项目,避免用户不得不手动说重新加载项目。

$project = Get-Project
write-host("starting NHMigrate on project: " + $project.Name)
$project.FullName
$project.UniqueName
$shortpath = $dte.Solution.Properties.Item("Name").Value + "'" +     $project.Name
$dte.Windows.Item("{3AE79031-E1BC-11D0-8F78-00A0C9110057}").Activate() 
$dte.ActiveWindow.Object
$dte.ActiveWindow.Object.GetItem($project.UniqueName)

我遇到的问题是一切我谷歌说使用GetItem选择该项目能够调用execute_command,但我得到异常

Exception calling "GetItem" with "1" argument(s): "Value does not fall within the expected range."
At E:'Work'nhibernateRepo'NHibernateRepository'NHMigrate'test.ps1:12 char:1
+ $dte.ActiveWindow.Object.GetItem($project.UniqueName)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentException

我找不到任何关于为什么这不起作用的东西。每个人似乎都在用一个参数调用getitem。

编辑

这是一个关于我试图实现的笔记。使用powershell来刷新项目工作,但它不会停止,或删除"文件修改检测"对话框,这是我最终想要做的。

Powershell and PMC $dte.ActiveWindow.Object.GetItem error

方法对我不起作用的原因是我没有使用项目的正确路径。它需要与解决方案文件具有相同的结构,即

sol[
  testfolder[
     ExampleRepo
]

,并使用:

$dte.ActiveWindow.Object.GetItem("sol'testfolder'ExampleRepo").Select(1)