VS 2022 PowerShell 原本的启动参数长这样
-NoExit -Command "& { Import-Module """$env:VSAPPIDDIR\..\Tools\Microsoft.VisualStudio.DevShell.dll"""; Enter-VsDevShell -SkipAutomaticLocation -SetDefaultWindowTitle -InstallPath $env:VSAPPIDDIR\..\..\}"
作法主要就是为原本的指令加上这个参数
-ExecutionPolicy RemoteSigned
这个参数目的是绕过 PowerShell 的安全性限制
再于大括号的区块后方汇入 conda 提供的 conda-hook.ps1 并启动虚拟环境
Import-Module 'C:\Users\username\anaconda3\shell\condabin\conda-hook.ps1'; conda activate base;
最后的成品,路径记得改成自己的
-ExecutionPolicy RemoteSigned -NoExit -Command "& { Import-Module """$env:VSAPPIDDIR\..\Tools\Microsoft.VisualStudio.DevShell.dll"""; Enter-VsDevShell -SkipAutomaticLocation -SetDefaultWindowTitle -InstallPath $env:VSAPPIDDIR\..\..\; Import-Module 'C:\Users\username\anaconda3\shell\condabin\conda-hook.ps1'; conda activate base;}"
当初因为没注意到忘了複製 --NoExit 这个参数,搞到我要去读 conda-hook.ps1 的原始码弄清楚到底背后做了啥事,一句一句慢慢加上去实验,最后弄出一个很长的指令版本
-ExecutionPolicy RemoteSigned -NoExit -Command "& { Import-Module """$env:VSAPPIDDIR\..\Tools\Microsoft.VisualStudio.DevShell.dll"""; Enter-VsDevShell -SkipAutomaticLocation -SetDefaultWindowTitle -InstallPath $env:VSAPPIDDIR\..\..\; $Env:CONDA_EXE = 'C:\Users\username\anaconda3\Scripts\conda.exe'; $Env:_CE_M = ''; $Env:_CE_CONDA = ''; $Env:_CONDA_ROOT = 'C:\Users\username\anaconda3';$Env:_CONDA_EXE = 'C:\Users\username\anaconda3\Scripts\conda.exe';$CondaModuleArgs = @{ChangePs1 = $True};Import-Module "$Env:_CONDA_ROOT\shell\condabin\Conda.psm1" -ArgumentList $CondaModuleArgs; conda activate base;}"