2014-03-28 127 views
8

我想在構建上禁用NuGet包恢復並使用單獨的命令。這可能嗎?如何使用msbuild命令行選項禁用nuget包恢復?

我的想法是用這樣的:

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

更新:

  • 的包更新可以通過MSBuild.exe ... /p:RestorePackages=false
  • 被禁用,它看起來像.nuget\nuget.exe restore solution.sln恢復包
+5

你應該發佈你的更新作爲答案,而不是對問題的編輯。 –

回答

0

現在,我建議讓你的CLI方法更全面可靠。

簡要計劃

  1. 安裝Visual Studio生成工具2017年
  2. 找到合適的MSBuild
  3. 清潔液
  4. 使用正確的MSBuild
  5. 生成解決方案恢復用的NuGet

詳細

  1. 使用構建工具會給你從Visual Studio安裝獨立性。

    Visual Studio Downloads pagedirect link)下載Build Tools for Visual Studio 2017

    這裏記錄的命令行參數: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. 運行的MSBuild與clean目標

  4. 幫助nuget.exe使用正確的MSBuild

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

  5. 運行MSBuild與build目標(您可以添加其他必需的參數)


# 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的依賴。而且你的解決方案可以在本地機器和構建服務器上重用。