如何使用msbuild命令行选项禁用nuget包还原?

时间:2014-03-28 11:14:01

标签: visual-studio msbuild nuget

我想在构建时禁用NuGet包还原,并使用单独的命令。这可能吗?

我的想法是使用这样的东西:

nuget.exe restore
msbuild.exe /p:NuGetRestorePackages=false

更新

  • 可以通过MSBuild.exe ... /p:RestorePackages=false
  • 禁用包更新
  • 看起来.nuget\nuget.exe restore solution.sln恢复了包

2 个答案:

答案 0 :(得分:1)

您可以使用“ MSBuild / p:RestorePackages = false ”来禁用构建命令上的程序包还原。

答案 1 :(得分:0)

如今,我建议让您的CLI方法更全面,更可靠。

简短计划

  1. 安装Visual Studio Build Tools 2017
  2. 找到合适的MSBuild
  3. 清洁解决方案
  4. 使用nuget 使用正确的MSBuild
  5. 还原软件包
  6. 构建解决方案
  7. <强>详情

    1. 使用构建工具可以独立于Visual Studio安装

      Build Tools for Visual Studio 2017Visual Studio Downloads page

      下载direct link

      此处记录的命令行参数:Use command-line parameters to install Visual Studio 2017

      此处列出了所有工作负载和组件:Visual Studio Build Tools 2017 component directory

    2. 使用PowerShell模块VSSetup。并选择 x86或x64 MSBuild版本

      从此处下载或安装:Github: Microsoft/Visual Studio Setup PowerShell Module

    3. 使用clean目标

    4. 运行MSBuild
    5. 帮助nuget.exe使用正确的MSBuild

      nuget.exe restore -MSBuildPath "C:\..."

    6. 使用build目标运行MSBuild(您可以添加其他必需参数)

    7. # 1. Find MS Build  
      
      Import-Module $PSScriptRoot\VSSetup\VSSetup.psd1
      
      $msBuildPath = (Get-VSSetupInstance | Select-VSSetupInstance -Version 15.0 -Product Microsoft.VisualStudio.Product.BuildTools).InstallationPath
      
      if ([System.IntPtr]::Size -eq 8)
      {
          $global:msbuildPath = Join-Path $msBuildPath 'MSBuild\15.0\Bin\amd64'
      }
      else
      {
          $global:msbuildPath = Join-Path $msBuildPath 'MSBuild\15.0\Bin'
      }
      
      Write-Output "Using MSBuild from $global:msbuildPath"
      Write-Output "MSBuild /version"
      
      $msbuild = Join-Path $global:msbuildPath msbuild
      
      & $msbuild /version
      
      
      # 2. Clean
      
      & $msbuild "$sln_file" /t:Clean /v:q /nologo
      
      
      # 3. Restore
      
      $nuget = Join-Path $PSScriptRoot "\.nuget\nuget.exe"
      & $nuget restore -MSBuildPath $global:msbuildPath
      
      
      # 4. Build
      
      & $msbuild "$sln_file" /t:Build /v:q /nologo 
      
        

      结果,您将不会拥有任何文件系统,PATH或Visual Studio依赖项。您的解决方案可以在本地计算机和构建服务器上重复使用。