Visual Studio PreBuildEvent powershell 字符串缺少终止符:“
Visual Studio PreBuildEvent powershell The string is missing the terminator: "
之前我遇到了一个最奇怪的错误,我真的很困惑,所以我想我会写一个自我回答来帮助人们解决问题。我的 googlefu 什么都没找到,所以我们来了。
这是我原来的台词
<PreBuildEvent>powershell.exe -noninteractive -command "$(solutiondir)\..\PreBuild.ps1" "$(TargetFileName)" "$(ProjectDir)" "$(SolutionDir)"</PreBuildEvent>
这是我的 PreBuild.ps1 文件:
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";
}
出于某种原因,我的脚本中的变量 $projectDir
包含 projectdir 和 solutiondir。像这样:
2> Processing files with gulp script.
2> $targetFileName project.dll
2> $projectDir c:\src\sln\project c:\src\sln
所以我改成了这个
<PreBuildEvent>powershell.exe -noninteractive -command "$(solutiondir)\..\PreBuild.ps1" "$(TargetFileName)" "$(ProjectDir)"</PreBuildEvent>
我在 VS 输出中收到此错误:The string is missing the terminator: ".
这是我搞砸的地方。 $(ProjectDir)
以斜杠结尾。所以实际上我的命令是:
powershell.exe -noninteractive -command "c:\src\sln\project\..\PreBuild.ps1" "project.dll" "c:\src\sln\project\"
你看到了吗?这很微妙,花了我几分钟。最后是 \"
。这会转义引号,使字符串不受限制。因此缺少收盘价。
所以现在如果我简单地写下这一行:
<PreBuildEvent>powershell.exe -noninteractive -command "$(solutiondir)\..\PreBuild.ps1" $(TargetFileName) $(ProjectDir)</PreBuildEvent>
一切如期进行。这些引号真的是因为我害怕空格。如果有人在他们的道路上遇到了一些人,我会回去赌。
之前我遇到了一个最奇怪的错误,我真的很困惑,所以我想我会写一个自我回答来帮助人们解决问题。我的 googlefu 什么都没找到,所以我们来了。
这是我原来的台词
<PreBuildEvent>powershell.exe -noninteractive -command "$(solutiondir)\..\PreBuild.ps1" "$(TargetFileName)" "$(ProjectDir)" "$(SolutionDir)"</PreBuildEvent>
这是我的 PreBuild.ps1 文件:
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";
}
出于某种原因,我的脚本中的变量 $projectDir
包含 projectdir 和 solutiondir。像这样:
2> Processing files with gulp script.
2> $targetFileName project.dll
2> $projectDir c:\src\sln\project c:\src\sln
所以我改成了这个
<PreBuildEvent>powershell.exe -noninteractive -command "$(solutiondir)\..\PreBuild.ps1" "$(TargetFileName)" "$(ProjectDir)"</PreBuildEvent>
我在 VS 输出中收到此错误:The string is missing the terminator: ".
这是我搞砸的地方。 $(ProjectDir)
以斜杠结尾。所以实际上我的命令是:
powershell.exe -noninteractive -command "c:\src\sln\project\..\PreBuild.ps1" "project.dll" "c:\src\sln\project\"
你看到了吗?这很微妙,花了我几分钟。最后是 \"
。这会转义引号,使字符串不受限制。因此缺少收盘价。
所以现在如果我简单地写下这一行:
<PreBuildEvent>powershell.exe -noninteractive -command "$(solutiondir)\..\PreBuild.ps1" $(TargetFileName) $(ProjectDir)</PreBuildEvent>
一切如期进行。这些引号真的是因为我害怕空格。如果有人在他们的道路上遇到了一些人,我会回去赌。