Visual Studio 使用cmd作为项目生成事件的Shell,但是cmd毕竟是上古产物,语法和规则个人不喜欢,遂想到使用powershell代替,但直到本随笔编写的时候,最新版的VS(VS2019)尚未支持使用其它Shell替代CMD。但是我们可以使用CMD调用PowerShell程序的脚本。以下为在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 -Command "&'$(ProjectDir)Pre-Build.ps1' '$(SolutionDir)' '$(TargetDir)'"
此文本内容既是传入当前的解决方案路径和生成路径到我们的脚本中,其中,个人认为有三个细节需要注意:
(1)-ExecutionPolicy RemoteSigned 即告诉PowerShell程序,可使用远程签证的策略执行PS脚本文件,通过设定此参数,我们将无需通过Set-ExecutionPolicy预先设定PowerShell的全局执行策略。
(2)三个字符串参数值需要加上引号,以避免路径中出现空格,这个应该是个老生常谈的问题了。
(3)所使用的powershell脚本文件和其使用的参数许使用单引号包含,powershell文件前需使用一个&以告诉powershell