MSBuild后构建步骤将代码复制到临时文件夹中

时间:2015-02-26 21:51:37

标签: msbuild msbuild-task

我尝试将编译后的Web应用程序放置到临时目录中。

我有以下但它似乎没有效果。它会丢弃并创建控制器,但是msbuild任务似乎并没有将编译输出复制到我需要它的 obj / publish 目录中?

<Target Name="AfterBuild">
    <CallTarget Targets="Publish" />
  </Target> 
  <Target Name="Publish">
    <RemoveDir Directories="$(SolutionDir)AsycLearn\obj\publish\" ContinueOnError="true" />
    <MakeDir Directories="$(SolutionDir)AsycLearn\obj\publish\"/>
    <MSBuild Projects="AsycLearn.csproj" Targets="ResolveReferences;_CopyWebApplication" Properties="WebProjectOutputDir=$(SolutionDir) AsycLearn\obj\publish\;OutDir=$(SolutionDir) AsycLearn\obj\publish\bin\" />
  </Target>

任何想法?感谢

1 个答案:

答案 0 :(得分:0)

看起来您需要引用输出路径,因为它们包含空格。否则,将在第一个空格处截断读取的值。这也将终止传递给任何其他任务的参数集。

Properties="WebProjectOutputDir=$(SolutionDir) AsycLearn\obj\publish\;OutDir=$(SolutionDir) AsycLearn\obj\publish\bin\"

应该是

Properties="WebProjectOutputDir=&quot;$(SolutionDir) AsycLearn\obj\publish\&quot;;OutDir=&quot;$(SolutionDir) AsycLearn\obj\publish\bin\&quot;"

需要转义序列&quot;,因为我们希望解析的值包含引号。