2017-08-04 2 views
3

ich ein post_build.ps1 nach der regulären Version von Visual Studio in VB.NET auf einem Windows-Laptop und das Setup zu arbeiten versuchenUnauthorizedAccess auf Post-Build von Visual Studio

Als ich das Skript auf Powershell-Befehl ausführen, es doesn‘ t habe irgendeinen Fehler. Aber wenn ich es durch Build-in Visual Studio zu tun, ich habe dies:

powershell ./_POST_BUILD.ps1 exited with code 1

Wenn ich den Diagnoseausgang zu aktivieren, kann ich dies den Ausgang sehe durch:

1> AuthorizationManager check failed. (TaskId:39) 
1>  + CategoryInfo   : SecurityError: (:) [], ParentContainsErrorRecordException (TaskId:39) 
1>  + FullyQualifiedErrorId : UnauthorizedAccess (TaskId:39) 

Was ich versuchte:

  1. die Politik in den frei Set mit Set-ExecutionPolicy Unrestricted -scope LocalMachine und Set-ExecutionPolicy Unrestricted -scope CurrentUser
  2. ändern Sie den p ost Buildereignis in Visual Studio zu Powershell.exe -ExecutionPolicy Unrestricted -file "$(SolutionDir)bin\debug\_POST_BUILD.ps1"
  3. Entblocken Datei mit der rechten Maustaste -> Eigenschaften -> entsperren
  4. Führen Sie Visual Studio als Administrator immer
+0

ist, dass Ziel Datei/Ordner nur lesen? –

+0

Ordner sind schreibgeschützt. Dateien sind nicht. Wenn ich es auf unmarkiert ändere, wird es nur für Ordner in der Black Box angezeigt. – Tasos

Antwort

0

Ich mag es nicht, meine eigenen Fragen zu beantworten, aber ich habe es geschafft, es zu beheben.

Aus irgendeinem Grund die Datei mit Rechtsklick entsperren -> Eigenschaften -> Entsperren -> Übernehmen. Ich hatte auf Powershell folgendes auszuführen:

unblock-file --path ./_POST_BUILD.ps1

0

Versuchen Hinzufügen Debug-Ausgabe zu Ihrem Powershell-Skript. Dadurch können Sie feststellen, ob das Skript gerade gestartet wird und während der Ausführung einen Fehler meldet oder ob der Fehler darin besteht, das Skript überhaupt auszuführen.

Versuchen Sie auch, den Schalter "ExecutionPolicy" direkt zu Ihren powershell.exe-Argumenten hinzuzufügen, um sicherzustellen, dass die Ausführungsrichtlinie kein Problem ist (wahrscheinlich nicht, wenn Sie eine explizite Nachricht erhalten würden, die dies sagt).

Stellen Sie sicher, dass Ihr Testlauf des Skripts unter dem gleichen Benutzerkonto (wahrscheinlich) ausgeführt wird und UAC erhöhten/nicht erhöhten Status als Visual Studio (seit Sie versucht, mit VS erhöht, das ist ein Problem).

Diese Seite (http://tgnp.me/2011/09/powershell-authorizationmanager-check-failed-resolution/) empfiehlt, sicherzustellen, dass der WMI-Dienst ausgeführt wird.

Verwandte Themen