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

Visual studio 如何使用msbuild命令行选项禁用nuget包还原?,visual-studio,msbuild,nuget,Visual Studio,Msbuild,Nuget,我想禁用NuGet package restore on build,并为此使用单独的命令。这可能吗 我的想法是使用如下内容: nuget.exe restore msbuild.exe /p:NuGetRestorePackages=false 更新: MSBuild.exe可以禁用包更新/p:RestorePackages=false 它看起来像是.nuget\nuget.exe还原解决方案.sln还原包 如今,我建议让您的CLI方法更全面、更可靠 短期计划 安装Visual Studi

我想禁用NuGet package restore on build,并为此使用单独的命令。这可能吗

我的想法是使用如下内容:

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

  • MSBuild.exe可以禁用包更新/p:RestorePackages=false
  • 它看起来像是
    .nuget\nuget.exe还原解决方案.sln
    还原包

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

短期计划

  • 安装Visual Studio生成工具2017
  • 查找正确的MSBuild
  • 清洁溶液
  • 使用正确的MSBuild还原带有nuget的包
  • 构建解决方案

  • 详细信息

  • 使用构建工具将使您独立于Visual Studio安装

    从()下载

    此处记录的命令行参数:

    此处列出了所有工作负载和组件:

  • 使用PowerShell模块
    VSSetup
    。然后选择x86或x64 MSBuild版本

    从此处下载或安装:

  • 使用
    clean
    目标运行MSBuild

  • 帮助
    nuget.exe
    使用正确的MSBuild

    nuget.exe还原-MSBuildPath“C:\…”

  • 使用
    build
    target运行MSBuild(您可以添加其他必需参数)


  • 因此,您将没有任何文件系统、路径或VisualStudio依赖项。您的解决方案将在本地计算机和构建服务器上可重用


    您可以使用“MSBuild/p:RestorePackages=false”禁用生成时的包还原命令。

    您应该将更新发布为问题的答案,而不是编辑。这对我很有效。MSBuild正在抱怨NuGet版本,因此我不得不停止MSBuild尝试还原,而是在生成之前从命令行运行NuGet.exe。
    # 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