【问题标题】:How to install MSBuild on old MSBuild installation folder on Windows?如何在 Windows 上的旧 MSBuild 安装文件夹上安装 MSBuild?
【发布时间】:2020-01-15 05:28:13
【问题描述】:

我正在编写一个 powershell 脚本来自动在 TeamCity 上构建 .NET 项目。第一步是安装 msbuild。以下是我目前得到的脚本:

# download msbuild
$Url = 'https://aka.ms/vs/15/release/vs_buildtools.exe'
$msBuildInstaller = ([System.Environment]::ExpandEnvironmentVariables("%TEMP%\vs_BuildTools.exe"))
Invoke-WebRequest -OutFile "$msBuildInstaller" $Url

# install msbuild
$installDir = "$Env:UserProfile\msbuild"
$installDirCache = "$Env:UserProfile\msbuild\cache"
$installDirShared = "$Env:UserProfile\msbuild\shared"
Start-Process -FilePath "$msBuildInstaller" -Verb RunAs -Wait -PassThru -ArgumentList "--add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Workload.NetCoreBuildTools --add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools --add Microsoft.VisualStudio.Workload.WebBuildTools --add Microsoft.Net.Component.4.7.1.SDK --add Microsoft.Net.Component.4.7.1.TargetingPack --norestart --quiet --force --path install=$installDir --path cache=$installDirCache --path shared=$installDirShared"

有了这个脚本,我可以在$installDir 安装 msbuild。但是当我在窗口资源管理器中删除$installDir 并再次运行脚本时,它不起作用。

我怎样才能让它工作?

【问题讨论】:

  • 如果您有特殊原因手动删除要测试的文件夹,请告诉我,这是删除,而不是卸载:)

标签: c# visual-studio powershell msbuild


【解决方案1】:

对于VS2017VS2019,它实际上调用VS installer(vs-installer.exe) 来安装指定的组件和工作负载,Build Tools for VS2017(vs_buildtools.exe) 也是如此。

当你通过vs_buildtools.exe安装构建工具时,它会调用vs-installer.exe为你安装这些包,在这个过程中它不仅会下载包和文件,它还会注册一些注册表在相关的 xx.config 文件中存储有关构建工具包的密钥和存储信息

但是当我在窗口资源管理器中删除 $installDir 并运行 再次编写脚本,它不起作用。

所以你所做的delete操作实际上删除了部分的构建工具(不是完全),当你第二次运行脚本时,安装程​​序会发现您要安装的 VS 构建工具版本之前已通过从注册表或 xx.config 文件中读取信息进行安装。

在这种情况下,VS 安装程序无法安装构建工具,这就是您的脚本无法运行的原因。

我怎样才能让它工作?

你原来的目的是automatically build .NET projects,所以只需要判断是否安装了build tools包,如果没有就安装。(可以结合Test-pathIF statement做这个逻辑。)

您无需手动删除构建工具包即可进行测试。如果要卸载它,只需选择uninstall switch。不推荐手动删除文件,在大多数情况下,这不是必需的。所以脚本不工作是预期的行为。

【讨论】:

  • 谢谢。我使用卸载开关,一切都很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
相关资源
最近更新 更多