我想在構建上禁用NuGet包恢復並使用單獨的命令。這可能嗎?如何使用msbuild命令行選項禁用nuget包恢復?
我的想法是用這樣的:
nuget.exe restore
msbuild.exe /p:NuGetRestorePackages=false
更新:
- 的包更新可以通過
MSBuild.exe ... /p:RestorePackages=false
- 被禁用,它看起來像
.nuget\nuget.exe restore solution.sln
恢復包
我想在構建上禁用NuGet包恢復並使用單獨的命令。這可能嗎?如何使用msbuild命令行選項禁用nuget包恢復?
我的想法是用這樣的:
nuget.exe restore
msbuild.exe /p:NuGetRestorePackages=false
更新:
MSBuild.exe ... /p:RestorePackages=false
.nuget\nuget.exe restore solution.sln
恢復包現在,我建議讓你的CLI方法更全面可靠。
簡要計劃
詳細
使用構建工具會給你從Visual Studio安裝獨立性。
從Visual Studio Downloads page(direct link)下載Build Tools for Visual Studio 2017
這裏記錄的命令行參數:Use command-line parameters to install Visual Studio 2017
所有的工作負載和組件在這裏列出:Visual Studio Build Tools 2017 component directory
使用PowerShell模塊VSSetup
。並選擇x86或x64 MSBuild的版本
下載,或從這裏安裝:Github: Microsoft/Visual Studio Setup PowerShell Module
運行的MSBuild與clean
目標
幫助nuget.exe
使用正確的MSBuild
nuget.exe restore -MSBuildPath "C:\..."
運行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的依賴。而且你的解決方案可以在本地機器和構建服務器上重用。
你應該發佈你的更新作爲答案,而不是對問題的編輯。 –