如何指定NuGet使用的MSBuild可执行文件?覆盖自动检测逻辑
如何覆盖NuGet的MSBuild自动检测行为并指定x86版本?
当然有办法调整NuGet的MSBuild自动检测逻辑,精准指定使用x86版本的MSBuild,这里给你几个实用的方案:
命令行参数直接指定(优先级最高)
在执行NuGet命令时,通过-MsBuildPath参数直接指定x86版本MSBuild的目录路径。比如你要使用14.0版本的x86 MSBuild,可以这样写:nuget restore YourSolution.sln -MsBuildPath "C:\Program Files (x86)\MSBuild\14.0\bin"注意这里指向的是
bin目录而非amd64子目录,这样NuGet就会调用该目录下的x86版本MSBuild。通过环境变量全局临时/永久设置
设置MSBUILD_EXE_PATH环境变量,直接指向x86版本的MSBuild可执行文件路径:- 临时生效(仅当前命令行窗口):
之后在这个窗口里执行NuGet命令,就会使用指定的x86版本。set MSBUILD_EXE_PATH=C:\Program Files (x86)\MSBuild\14.0\bin\MSBuild.exe - 永久生效(系统级):
在Windows系统的「环境变量」设置中添加MSBUILD_EXE_PATH变量,值同上,之后所有NuGet命令都会默认使用该路径的MSBuild。
- 临时生效(仅当前命令行窗口):
修改NuGet配置文件(持久化项目级/用户级设置)
编辑NuGet配置文件(可以是项目根目录下的NuGet.Config,或者用户目录%UserProfile%\.nuget\NuGet\NuGet.Config),在<config>节点下添加msbuildPath配置项:<configuration> <config> <add key="msbuildPath" value="C:\Program Files (x86)\MSBuild\14.0\bin\MSBuild.exe" /> </config> </configuration>保存后,NuGet在执行相关操作时会优先使用这个配置里指定的MSBuild路径。
另外要注意这几个方案的优先级:命令行参数 > 环境变量 > NuGet配置文件,如果同时设置了多个,优先级高的会覆盖低的。
内容的提问来源于stack exchange,提问作者aolszowka
相关产品推荐
相关产品推荐

