Bootstrap

dotnet CLI不能自动补全的解决办法

Ver

V0.0 ini 2024-6-3

一、前言

    自从DotNet8.0出来后,想试下用DontNet开发和部署基于VM(ECS)和容器(ACS)的应用,在开发的开程中发现我的开发环境(Windows11)中在PowerShell输入dotnet new con并按tab后,没有补全了,以前是按下后自动补成dotnet new console,下面是解决的办法。

二、内容

1、管理员方式运行“PowerShell”,打开$PROFILE,并粘贴下面脚本。

# PowerShell parameter completion shim for the dotnet CLI
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock {
    param($wordToComplete, $commandAst, $cursorPosition)
        dotnet complete --position $cursorPosition "$commandAst" | ForEach-Object {
            [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
        }
}

2、按下图所示,更改powerShell.exe快捷键的属性

把下面黄底红字的参数,加在“目标”原有内容的后面,如下图所示:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -noe -c "&{Set-PSReadLineOption -ShowToolTips}"  -WorkingDirectory ~

3、修改PowerShell的脚本执行策略问题

3.1 PowerShell 脚本执行策略问题的分析

执行这一步的原因是,1、中的脚本在执行时提示安全策略错误,执行失败;错误信息的第一部分指出,您尝试运行的脚本(位于 C:\Users\27928\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1)由于执行策略的限制而无法被执行。PowerShell有几种执行策略,用于控制是否允许脚本运行,以保护系统免受恶意脚本的攻击。

3.2  解决方案:

1)临时改变执行策略:为了运行此脚本,您可以在当前 PowerShell 会话中暂时更改执行策略。打开 PowerShell(以管理员身份运行),然后输入:
    Set-ExecutionPolicy Bypass -Scope Process
这将仅对当前 PowerShell 会话临时禁用执行策略限制。操作参考 2)。

2)永久改变执行策略(谨慎操作):如果您希望对所有脚本或特定范围(如当前用户)永久更改执行策略,可以使用 -Scope 参数。例如,要为当前用户更改执行策略为 RemoteSigned(允许本地编写的脚本无需签名,但网络下载的脚本需要签名),可以运行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

示例:执行命令,并输入A确认,如下图所示

4、dotnet又能支持“TAB补全”了

三、附录:参考资料

配置文件简介 - PowerShell | Microsoft Learn

启用 tab 自动补全 - .NET CLI | Microsoft Learn

;