7
votes

PowerShell .PS1 Fichier sur l'événement Visual Studio Post Build

J'essaie d'exécuter le code d'événement de la publication suivant, mais je reçois une erreur non utile: xxx pré>

J'ai exécuté le script PS suivant avant d'essayer: p>

Set-ExecutionPolicy unrestricted


4 commentaires

erreur non utile? Holiday impossible à répondre sans Quelques indice comme quel problème vous obtenez.


@Jamiec Voir la question mise à jour.


Pas capable de répondre à cela mais j'ai trouvé un lien utile pour vous


@Jamiec c'est la réponse. Merci !


3 Réponses :


8
votes

Vous pouvez reproduire l'erreur de PowerShell comme suit: xxx

Il prend la première sous forme de chaîne, le -file comme le -f Format Drapeau et disant qu'il n'a pas d'expression de valeur à droite pour la substitution au format.

Essayez comme ceci:

& "C: \ Windows \ system32 \ windowspowershell \ v1.0 \ powerershell.exe "-file" $ (solutiondir) outils \ nuget_pack.ps1 "

(Comme Keith Notes, cela ne fonctionnera pas comme c'est Exécuter à partir d'un fichier BAT que PowerShell.)

ou juste: xxx


3 commentaires

Donc, le problème est sur "c: \ windows \ system32 \ windowspowershell \ v1.0 \ powershell.exe"?


@TUGBERK - Il est traité comme une chaîne. Consultez ma réponse mise à jour Donner des suggestions pour que vous puissiez essayer.


Je peux obtenir cela pour travailler jusqu'à ce que j'ai des paramètres avec des espaces. Comment l'appellerais-je avec des paramètres avec des espaces?



16
votes

Visual Studio écrit le script d'événement post-Build sur un fichier .bat et exécute cela à l'aide de cmd.exe. Ainsi, en utilisant & "" code> ne fonctionnera pas. Il suffit d'exécuter:

Powershell.exe -ExecutionPolicy Unrestricted -file "$(SolutionDir)tools\nuget_pack.ps1" 


4 commentaires

Mon mauvais, oublié à propos de la chauve-souris et aussi que OP l'avait essayé dans la console PowerShell. Donc, la partie de fichier doit-elle être $ ($ solutiondir) (je l'ai changé de l'OP en première pensée, il s'agissait de PS), mais je suppose que VS / Msbuild en aurait besoin d'une manière différente? $ (solutiondir) ?


Pas de biggie. Ouais, il devrait être $ (solutiondir) . C'est ainsi que vous faites référence à une propriété à Msbuild. Fixé. Merci.


Selon: TechEnt.microsoft.com/en-us/library/hh847736.aspx "Le fichier doit être le dernier paramètre de la commande" de sorte qu'il devrait être: powerShell.exe -executionpolicy non restreint -file "$ (solutiondir) outils \ nuget_pack.ps1" BTW. Grâce à cela, vous pouvez ajouter des params à PS1


@Andrzejmartyna bonne prise. Mise à jour de la réponse. Merci.



1
votes

Avant d'appeler le script Power-shell à partir de Visual Studio, définissez l'exécutifpolicy sur sans restriction de la fenêtre Power-Shell, comme ceci ... XXX

Le script Power-Shell d'appel de la manière suivante. .. xxx

 Entrez la description de l'image ici

puis dans le script, vous pouvez toujours lire le paramètre comme celui-ci. .. xxx


0 commentaires