来自.csproj文件的MSBuild任务

3

我正在尝试为我的csproj添加一个Post Build MSBuild事件,为此我正在尝试从.csproj文件的Afterbuild目标中调用一个MSBuild任务。

  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.-->
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
    <Message Text="Copying Files" />
    <MSBuild Projects="post.build" 
        Targets="Copy"
        ContinueOnError="false" />
  </Target>

这是 post.build 文件。
 <Project DefaultTargets="Copy"
 xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <Target Name="Copy">
     <Message Text="Copying Files inside COPY" />
     <CallTarget Targets="CopyToProfile"/>   </Target>
 </project>

看起来csproj文件无法调用MSbuild任务,有人能建议一下出了什么问题吗?我收到了以下错误信息:
错误 MSB4057:项目中不存在目标“Copy”。

1
奇怪。 我刚用VS2010和你的代码尝试了一下,它可以工作。 你可以尝试在.csproj文件的<Project ...>元素下添加一个<Import Project="post.build"/>。 - Martin Ingvar Kofoed Jensen
2个回答

2
我最终成功的做法是:
我按照Martin的建议进行了操作,并且
<Import Project="post.build"/>

然而,MSBuild任务仍然没有按计划运行。因此,我最终使用了
<CallTarget Targets="copy"/>

跨文件调用。这听起来像是VS2008的限制,在VS2010中已经修复。


0

你确定你在实际的 post.build 文件中没有打错字吗?也就是说,应该是 <Import Project="..\packages\Microsoft.Web.Publishing.targets" Condition="Exists('..\packages\Microsoft.Web.Publishing.targets')" /> 而不是 <Import Project="..\packages\Microsoft.Web.Publishing.targets" Condition="Exists('..\packages\Microsoft.Web.Publishing.targets')" />。XML 是大小写敏感的。

此外,我建议你再次确认 post.build 文件是否放置在与 .csproj 文件相同的文件夹中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接