Visual Studio 使用cmd作为项目生成事件的Shell,但是cmd毕竟是上古产物,语法个人不喜欢,遂想到使用powershell代替,但直到本随笔编写的时候,最新版的VS(VS2019)尚未支持使用其它Shell替代CMD。但是我们可以使用CMD调用PowerrShell程序的脚本。以下为在Visual Studio中使用PowerShell作为生成前事件脚本的一个小例子。
1.在项目下添加名称为Pre-Build.ps1文件作为我们将要使用的PS脚本,编写其内容如下:
param( [string]$solutionDir, [string]$targetDir ) Write-Output ($msg = "This is your solutionDir:"+$solutionDir) Write-Output ($msg = "This is your targetDir:"+$targetDir)
功能很简单,即输出从外部传入的两个路径参数。
2.为项目的生成后事件编写如下内容:
powershell -ExecutionPolicy RemoteSigned -File "$(ProjectDir)Pre-Build.ps1" -SolutionDir "$(SolutionDir)\" -TargetDir "$(TargetDir)\"
此文本内容既是传入当前的解决方案路径和生成路径到我们的脚本中,其中,个人认为有三个细节需要注意:
(1)-ExecutionPolicy RemoteSigned 即告诉PowerShell程序,可使用远程签证的策略执行PS脚本文件,通过设定此参数,我们将无需通过Set-ExecutionPolicy预先设定PowerShell的全局执行策略。
(2)三个字符串参数值需要加上引号,以避免路径中出现空格,这个应该是个老生常谈的问题了。
(3)后面的两个参数的引号内,最后必须以"\"结尾,否则会导致路径值($(SolutionDir)或$(TargetDir))本身附带的"\"结尾将下一个双引号转义,
使其失去分割参数的作用,如果不加,Powershell就会认为参数SolutionDir =( "$(SolutionDir)\" -TargetDir " + ...) 直到遇见下一个空格或第二哥双引号为止。
Visual Studio 中使用PowerShell作为PostBuild (生成前后)脚本
原文:https://www.cnblogs.com/ponus/p/12527604.html