Psake - 如何激活/ m切换MSBuild?

时间:2016-07-22 04:45:59

标签: powershell msbuild psake

您好我正在尝试使用MSBuild&编译我的项目Psake但我在将/ m传递给MSBuild时遇到问题。这是我的代码:

Exec {
    MSBuild $solutionFile "/p:Configuration=$buildConfiguration;Platform=$buildPlatform;OutDir=$tempPath /m"
}

MSBuild输出:

  

" C:\用户\ mabre \源\ Psake \ Psake.sln" (默认目标)(1) - >   " C:\用户\ mabre \源\ Psake \ SRC \ Psake.Library \ Psake.Library.xproj"   (默认目标)(5) - > C:\ Program Files   (86)\的MSBuild \微软\ VisualStudio的\ v14.0 \ DOTNET的\ Microsoft.DotNet.Common.Targets(262,5):   错误:找不到路径的一部分   ' C:\用户\ mabre \源\ Psake.build \ temp中   的 \米 \ SRC \ Psake.Library \ OBJ \发布\ netstandard1.6&#39 ;.   [C:\用户\ mabre \源\ Psake \ SRC \ Psake.Library \ Psake.Library.xproj]

0 Warning(s)
4 Error(s)

请注意, / m 现在是输出路径的一部分

  

错误:7/22/2016 12:39:04 AM:At   C:\ Users \用户mabre.nuget \包\ psake \ 4.6.0 \工具\ psake.psm1:156   char:17 + throw(" Exec:" + $ errorMessage)+
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [<< ==>>]异常:执行:错误   执行命令MSBuild $ solutionFile   " / P:配置= $ buildConfiguration;平台= $ buildPlatform; OUTDIR = $ TEMPPATH   /米" 。建立退出代码:1

提前致谢

1 个答案:

答案 0 :(得分:3)

尝试不将所有参数放在一个字符串中。以下是我的MSBuild任务在pSake中的两个示例:

Task CleanProject -depends RestoreNuget {
    Exec {
        msbuild `
            "$VisualStudioSolutionFile" `
            /target:Clean `
            /property:Configuration=$Configuration `
            /verbosity:quiet
    }
}

和...

Task BuildProject -depends DeleteBinAndObjFolders {
    Exec {
        msbuild `
            "$ProjectPath" `
            /target:Rebuild `
            /property:Configuration=$Configuration `
            /property:OutDir="$ProjectBuildArtifactsPath" `
            /property:UseWPP_CopyWebApplication=True `
            /property:PipelineDependsOnBuild=False `
            /property:WebProjectOutputDir="$WebBuildArtifactsPath" `
            /verbosity:quiet
    }
}

请注意,我将"放在我认为可能包含空格的任何变量周围。

所以为你尝试这样的事情:

Exec {
    MSBuild "$solutionFile" /p:Configuration=$buildConfiguration;Platform=$buildPlatform;OutDir="$tempPath" /m
}