由于.NET Core已经出局,我一直在使用越来越多的命令行作为工作方式,一般来说我使用了很多PowerShell.
虽然Visual Studio Code非常符合命令行,但对于它的大哥来说却不能说是相同的.
为了改善这种情况,我在$ PROFILE文件中添加了以下内容.
function Execute-VisualStudioAsAdmin
{
if ($args.Count -gt 0)
{
Start-Process "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe" $args -Verb RunAs
}
else
{
Start-Process "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe" -Verb RunAs
}
}
Set-Alias vsa Execute-VisualStudioAsAdmin -Option ReadOnly
Set-Alias vs "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe" -Option ReadOnly
Run Code Online (Sandbox Code Playgroud)
现在我能做到
PS> vs
PS> vsa
PS> vs .\Solution.sln
PS> vsa .\Solution.sln
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,但它不如我想的那么好.也许我正在考虑它,但我想知道是否有办法创建一个更好的功能,并通过传递不同的参数使用它的两个别名.
提前致谢!
你想要的是这个:
function Start-VisualStudio {
[CmdletBinding()]
[Alias("vs")]
param(
[Parameter()]
[switch]$AsAdmin,
[Parameter(
Mandatory = $false,
ValueFromRemainingArguments = $true
)]
[string[]]$ArgumentList
)
process {
$parameters = @{
FilePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\devenv.exe"
}
if ($AsAdmin.ToBool()) {
$parameters["Verb"] = "RunAs"
}
# Allow no null or empty arrays or values
$ArgumentList = @($ArgumentList | where {"$_" -ne ""})
if ($ArgumentList.Count -gt 0) {
$parameters["ArgumentList"] = $ArgumentList
}
Start-Process @parameters
}
}
Run Code Online (Sandbox Code Playgroud)
例子:
vs
vs .\Solution.sln
vs .\Solution.sln -AsAdmin
Run Code Online (Sandbox Code Playgroud)
说明:
[CmdletBinding()]使函数像编译的cmdlet一样工作.=> MS Docs
[Alias()]允许您在函数内定义别名.=> MS Docs
ValueFromRemainingArguments从所有不是的参数中创建一个数组-AsAdmin.=> MS Docs
@parameters被称为"泼溅".=> MS Docs
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |