使用Ansible win_chocolatey模块安装VS17.2时版本参数失效
解决Ansible win_chocolatey安装Visual Studio 17.2版本错误的问题
你遇到的问题是因为Ansible win_chocolatey模块的参数组合逻辑和直接调用Chocolatey命令行存在差异,同时指定version参数和package_params中的通道地址会引发冲突,导致模块没有正确识别你要安装的17.2版本。
修正后的Ansible任务
- name: Install Visual Studio 2022 Enterprise 17.2 win_chocolatey: name: visualstudio2022enterprise state: present pinned: true package_params: "--channelUri https://aka.ms/vs/17/release.ltsc.17.2/channel"
如果系统中已经安装了更高版本的Visual Studio(比如17.8),可以将state改为downgrade:
- name: Downgrade to Visual Studio 2022 Enterprise 17.2 win_chocolatey: name: visualstudio2022enterprise state: downgrade pinned: true package_params: "--channelUri https://aka.ms/vs/17/release.ltsc.17.2/channel"
问题原因说明
直接使用choco install命令时,仅通过--channelUri指定17.2 LTSC通道就能正确拉取对应版本,是因为Visual Studio的Chocolatey包会根据通道地址自动锁定对应分支的最新稳定版本(即17.2系列)。
而你原本的任务中同时指定了version: '117.2.2.0',这个是Chocolatey包自身的版本号,并非Visual Studio的产品版本。当模块同时收到包版本号和通道参数时,参数传递的优先级或逻辑冲突导致通道参数没有生效,最终安装了包对应的最新VS版本17.8。
验证方式
执行修正后的任务后,打开Visual Studio的「帮助-关于」页面,确认产品版本为17.2.x系列;同时可以通过choco list --local-only visualstudio2022enterprise命令检查Chocolatey包的安装状态,确保已锁定到目标通道的版本。
内容的提问来源于stack exchange,提问作者Ryan Richard Klopka
相关产品推荐
相关产品推荐

