2015-09-14 1 views
0

J'essaie d'écrire un script powershell pour recharger un projet (les fichiers et les dossiers ont été ajoutés via une application C# (essayé de le faire via C# mais échoué, voir here). Mon objectif final est d'être en mesure d'appeler l'application C#, puis recharger le projet (décharger et recharger) pour actualiser le projet et d'éviter que l'utilisateur ait à dire manuellement recharger le projet.

$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) 

le problème Je vais avoir tout ce que je google dit utiliser GetItem pour sélectionner ce projet pour pouvoir appeler execute_command, mais je reçois l'exception

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 

Je ne trouve rien pour expliquer pourquoi cela ne fonctionne pas. Tout le monde semble appeler l'objet avec un seul paramètre. Je ne trouve pas non plus les documents qui couvrent cette méthode.

EDIT

C'est une note sur ce que je voulais atteindre. Utiliser PowerShell pour rafraîchir le projet fonctionne mais il ne s'arrête pas, ou supprimer la boîte de dialogue "Modification de fichier détectée" qui était finalement ce que je voulais faire.

Répondre

0

La raison pour laquelle la méthode n'a pas fonctionné pour moi était que je n'utilisais pas le bon chemin pour le projet. il doit être la même structure que le fichier de solution, à savoir

sol[ 
    testfolder[ 
    ExampleRepo 
] 

et appelez avec:

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