Visual Studio 通过命令行安装MS生成工具更新时出现问题

4nkexdtk  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(133)

我正在使用powershell尝试在我们的构建代理上自动化一些构建工具更新/安装Visual Studio 2022构建工具。在UI中,我需要以下3个选项:
sql server build tools
我从第一台服务器上导出了配置,在那里我手动安装了这个,这样我就可以得到要安装的项目的ID:

{
  "version": "1.0",
  "components": [
    "Microsoft.VisualStudio.Component.Roslyn.Compiler",
    "Microsoft.Component.MSBuild",
    "Microsoft.VisualStudio.Component.CoreBuildTools",
    "Microsoft.VisualStudio.Workload.MSBuildTools",
    "Microsoft.Net.Component.4.7.2.TargetingPack",
    "Microsoft.Net.Component.4.8.TargetingPack",
    "Microsoft.VisualStudio.Component.SQL.SSDTBuildSku"
  ]
}

我使用底部的3个sku创建脚本来尝试安装它:

$components =@(
    "Microsoft.Net.Component.4.7.2.TargetingPack",
    "Microsoft.Net.Component.4.8.TargetingPack",
    "Microsoft.VisualStudio.Component.SQL.SSDTBuildSku")
 $components | %{Start-Process "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList 'modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools" --passive --add $_' -Wait -PassThru}

我知道这会通过UI提示重新启动,但是我在安装后重新启动了,它没有显示这些已经安装。除了下面的输出,我没有得到任何关于成功或失败的确认,尽管我看到UI弹出了一小段时间,因为我没有指定silent:
script output
我做错了什么?

olmpazwi

olmpazwi1#

-ArgumentList中的引号换成外部双引号和内部单引号。单引号内不会出现插值,因此$_不会展开。

$components =@(
    "Microsoft.Net.Component.4.7.2.TargetingPack",
    "Microsoft.Net.Component.4.8.TargetingPack",
    "Microsoft.VisualStudio.Component.SQL.SSDTBuildSku")
 $components | %{Start-Process "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList "modify --installPath 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools' --passive --add $_" -Wait -PassThru}
bwitn5fc

bwitn5fc2#

按照Metzli_Tonaltzintli的说法,我尝试了其他方法,用双引号将下载位置括起来并将其转义。

$components =@(
    "Microsoft.Net.Component.4.7.2.TargetingPack",
    "Microsoft.Net.Component.4.8.TargetingPack",
    "Microsoft.VisualStudio.Component.SQL.SSDTBuildSku")
$installTo = "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"
$components | %{Start-Process "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList "modify --installPath `"$installTo`" --passive --add $_" -Wait -PassThru}

当我这样做的时候,UI弹出,实际上显示了下载状态,并在之后立即重新启动。

相关问题