在不生成msbuild.exe进程的情况下从Powershell运行MSBuild,可以使用以下方法:
可以使用MSBuild命令行参数来指定不生成msbuild.exe进程。具体方法是在Powershell中使用以下命令:
msbuild.exe /nologo /noconsolelogger /v:minimal /clp:NoSummary /p:BuildInParallel=true /p:BuildProjectReferences=false /p:Configuration=Release /p:Platform=x64 /p:OutputPath=bin\x64\Release\ /p:ErrorReport=none /p:WarningsNotAsErrors=MSB4011 Solution.sln
其中,/nologo /noconsolelogger /v:minimal /clp:NoSummary 参数可以减少MSBuild的输出信息,/p:BuildInParallel=true /p:BuildProjectReferences=false 参数可以启用并行构建,/p:Configuration=Release /p:Platform=x64 /p:OutputPath=bin\x64\Release\ 参数可以指定构建的配置和平台,/p:ErrorReport=none /p:WarningsNotAsErrors=MSB4011 参数可以控制错误报告和警告行为。
可以使用MSBuild API来在Powershell中运行MSBuild,以下是一个示例代码:
Add-Type -AssemblyName 'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
$projectFile = 'Path\To\Project.csproj'
$buildParameters = New-Object 'Microsoft.Build.Execution.BuildParameters'
$buildParameters.Loggers = New-Object 'System.Collections.Generic.List[Microsoft.Build.Framework.ILogger]'
$buildParameters.Loggers.Add((New-Object 'Microsoft.Build.Logging.ConsoleLogger'))
$buildRequest = New-Object 'Microsoft.Build.Execution.BuildRequestData' -ArgumentList $projectFile, $null, '4.0', $null, $null, New-Object 'System.Collections.Generic.Dictionary[string,string]'
$buildRequest.GlobalProperties.Add('Configuration', 'Release')
$buildRequest.GlobalProperties.Add('Platform', 'x64')
$buildRequest.GlobalProperties.Add('OutputPath', 'bin\x64\Release\')
$buildRequest.GlobalProperties.Add('ErrorReport', 'none')
$buildRequest.GlobalProperties.Add('WarningsNotAsErrors', 'MSB4011')
$buildResult = [Microsoft.Build.Execution.BuildManager]::DefaultBuildManager.Build($buildParameters, $buildRequest)
这个示例代码使用MSBuild API来创建一个BuildParameters对象和一个BuildRequestData对象,然后使用BuildManager类的Build方法来执行MSBuild构建。在这个示例中,我们设置了一些全局属性,例如Configuration、Platform、OutputPath、ErrorReport和WarningsNotAsErrors,以控制MSBuild的行为。
总之,在不生成msbuild.exe进程的情况下从Powershell运行MSBuild,可以使用MSBuild命令行参数或MSBuild API来实现。
领取专属 10元无门槛券
手把手带您无忧上云