1

Hatte den merkwürdigsten Fehler früher, dass ich wirklich verwirrt war, so dachte ich, ich würde eine Selbst-Antwort schreiben, um Menschen zu helfen. Mein googlefu nichts ordentlich aufgedeckt, so sind wir hierVisual Studio PreBuildEvent Powershell Die Zeichenfolge fehlt der Terminator: "

Diese Linie

<PreBuildEvent>powershell.exe -noninteractive -command "$(solutiondir)\..\PreBuild.ps1" "$(TargetFileName)" "$(ProjectDir)" "$(SolutionDir)"</PreBuildEvent> 

und hier ist meine PreBuild.ps1 Datei meine Original war.

Param(
    [Parameter(Mandatory=$false)][string]$targetFileName, 
    [Parameter(Mandatory=$false)][string]$projectDir, 
    [Parameter(Mandatory=$false)][string]$solutionDir 
) 
process { 
    Write-Host "`$targetFileName $targetFileName"; 
    Write-Host "`$projectDir $projectDir"; 
    Write-Host "`$solutionDir $solutionDir"; 
} 

Aus irgendeinem Grund die Variable $projectDir in meinem Skript enthält sowohl das Projektverzeichnis als auch das Lösungsverzeichnis. Wie so:

2> Processing files with gulp script. 
2> $targetFileName project.dll 
2> $projectDir c:\src\sln\project c:\src\sln 

So habe ich es zu diesem

<PreBuildEvent>powershell.exe -noninteractive -command "$(solutiondir)\..\PreBuild.ps1" "$(TargetFileName)" "$(ProjectDir)"</PreBuildEvent> 

und ich diesen Fehler in VS Ausgang: The string is missing the terminator: ".

Antwort

2

Hier, wo ich vermasselt. $(ProjectDir) endet mit einem Schrägstrich. So effektiv ist mein Befehl:

powershell.exe -noninteractive -command "c:\src\sln\project\..\PreBuild.ps1" "project.dll" "c:\src\sln\project\" 

Sehen Sie es? Es ist subtil, dauerte ein paar Minuten. Es ist die \" am Ende. Das entzieht sich dem Zitat und macht die Zeichenkette unbegrenzt. Daher das fehlende Schlusszitat.

So, jetzt, wenn ich einfach gesagt diese Zeile:

<PreBuildEvent>powershell.exe -noninteractive -command "$(solutiondir)\..\PreBuild.ps1" $(TargetFileName) $(ProjectDir)</PreBuildEvent> 

Es funktioniert alles wie erwartet. Die Zitate waren wirklich, weil ich Angst vor Räumen hatte. Wenn jemand mit einigen auf ihren Wegen endet, werde ich zurückgehen und stochern.

+0

danke für das Teilen Ihrer Lösung hier, Sie könnten es als die Antwort markieren, so könnte es anderen Community-Mitgliedern helfen, die die gleichen Probleme bekommen. einfacher, die Antwort zu finden –

+0

Danke @ Leo-MSFT war gerade versucht, es ein paar Tage zu geben und vergaß es hahaha – jcolebrand

Verwandte Themen