Ich versuche, Powershell zu veranlassen, mein PS-Skript im Post-Build auszuführen - aber irgendwie funktioniert es nicht so, wie es soll:
Folgender Befehl im Post-Build:
%Vor%(eingefügter Zeilenumbruch zum besseren Lesen)
Der Befehl führt das Powershell-Skript erfolgreich aus, was jedoch nicht ausgeführt werden kann, ist die Ausführung der Befehle in (Output from Build): Rundum-Post-Build-Befehl:
%Vor%Und darauf folgen viele Fehler, da alle nachfolgenden Befehle das Sharepoint-Snap-In benötigen.
Die relevante Zeile im Skript ist einfach Add-PsSnapin Microsoft.SharePoint.PowerShell
.
Wie kann ich das verarbeitete Skript einfach ausführen (und es in das PSSnapIn aufnehmen), indem ich es in Visual Studio nach dem Build übergebe?
Aufgrund der Dateisystemvirtualisierung können Sie den Pfad zur 64-Bit-Version von PowerShell aus einem 32-Bit-Prozess (z. B. Visual Studio - der die Msbuild-Engine hostet) nicht wirklich angeben. Ein hack-ish Weg, um dies zu umgehen, ist die Erstellung eines 64-Bit-Launcher, der als 64-Bit läuft und die 64-Bit-Version von PowerShell startet. Hier ist ein einfaches C # -Programm, das dies tun wird:
%Vor%Stellen Sie sicher, dass Sie dies als 64-Bit wie folgt kompilieren:
%Vor% Führen Sie dann von Ihrem Post-Build-Ereignis aus diese Launcher-Exe aus und übergeben Sie ihr die Parameter, mit denen Sie die 64-Bit-PowerShell aufrufen möchten. Mit PowerShell 2.0 würde ich auch empfehlen, den Parameter File
zum Ausführen eines Skripts zu verwenden, z. B .:
Das heißt, sicherlich muss es einen anderen Weg (Dienstprogramm) geben, der exes von einem 64-Bit-Prozess startet.
(Dieser Thread ist nicht neu, aber ich bin von Google hierher gekommen, also dachte ich, dass das Teilen der gefundenen Lösung für andere interessant wäre)
Ich habe versucht, den Pfad zu powershell.exe auf "% WINDIR% \ SysNative \ WindowsPowerShell \ v1.0 \ powershell.exe" zu ändern und es funktionierte perfekt. Die 64-Bit-Version wird vom Post-Build-Ereignis aufgerufen und fügt das SharePoint-Snapin erfolgreich hinzu.
Dank an diesen Artikel: Ссылка , "Verwenden von Windows PowerShell-Skripts zum Automatisieren von Aufgaben in Visual Studio ".
Wenn Sie Ihr Skript direkt ausführen, verwenden Sie wahrscheinlich 32bit PowerShell und in Ihrem msbuild Skript 64bit oder umgekehrt. Siehe auch Fehler msg:" Für Windows PowerShell Version 2 wurden keine Snap-Ins registriert. ".
Fügen Sie cmd-Datei (z. B. run-script.cmd) mit diesem Inhalt hinzu:
%Vor%und rufe es vom Build-Event auf folgende Weise auf:
%Vor%Tags und Links visual-studio-2010 powershell build-process sharepoint-2010