【问题标题】:Why does MSBuild copy task not copy?为什么 MSBuild 复制任务不复制?
【发布时间】:2014-09-13 08:49:45
【问题描述】:

我正在尝试使用 MSBuild Copy 任务将我的构建创建的二进制文件复制到某个文件夹。不幸的是,这个过程默默地失败了。不会发出错误消息,也不会复制任何文件。

这是我的 .csproj 文件的相关部分:

<Target Name="CopyFilesForModule" AfterTargets="AfterBuild">
  <CreateItem Include="bin\**\*.*" Exclude="bin\**\*.pdb;bin\**\*.xml">
    <Output TaskParameter="Include" ItemName="MySourceFiles" />
  </CreateItem>
  <Copy SourceFiles="$(MySourceFiles)" DestinationFolder="Areas\KoobooModule7\bin">
    <Output
          TaskParameter="CopiedFiles"
          ItemName="Changed" />
  </Copy>
  <Message Text="sourcefiles: @(MySourceFiles)" />
  <Message Text="changed:@(Changed)" Importance="high" />
</Target>

如您所见,我已经添加了用于调试目的的消息。我使用以下命令行调用 msbuild:

"c:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe" /t:rebuild /verbosity:d
iag KoobooModule7.csproj > buildlog.txt

这是我的构建日志的相关摘录:

项目“C:\Users\chris\Documents\Visual Studio 2013\Projects\KoobooModule7\KoobooModule7\KoobooModule7.csproj”中的目标“CopyFilesForModule: (TargetId:75)”(目标“Build”取决于它):
任务“CreateItem”(任务 ID:43)
  任务参数:Include=bin\**\*.* (TaskId:43)
  任务参数:
      排除=
          bin\**\*.pdb
          bin\**\*.xml (TaskId:43)
完成执行任务“CreateItem”。 (任务编号:43)
任务“复制”(TaskId:44)
  任务参数:DestinationFolder=Areas\KoobooModule7\bin (TaskId:44)
完成执行任务“复制”。 (任务编号:44)
任务“消息”(TaskId:45)
  任务参数:Text=sourcefiles: bin\CookComputing.XmlRpcV2.dll;bin\DiffPlex.dll;bin\dotless.Core.dll;bin\DotNetOpenAuth.AspNet.dll;bin\DotNetOpenAuth.Core.dll;bin\DotNetOpenAuth.OAuth .Consumer.dll;bin\DotNetOpenAuth.OAuth.dll;bin\DotNetOpenAuth.OpenId.dll;bin\DotNetOpenAuth.OpenId.RelyingParty.dll;bin\HtmlAgilityPack.dll;bin\Ionic.Zip.Reduced.dll;bin\Kooboo .CMS.Account.dll;bin\Kooboo.CMS.Caching.dll;bin\Kooboo.CMS.Common.dll;bin\Kooboo.CMS.Common.Runtime.Dependency.Ninject.dll;bin\Kooboo.CMS.Content .dll;bin\Kooboo.CMS.Form.dll;bin\Kooboo.CMS.Membership.dll;bin\Kooboo.CMS.Search.dll;bin\Kooboo.CMS.Sites.dll;bin\Kooboo.CMS.Sites .TemplateEngines.Razor.dll;bin\Kooboo.CMS.Web.dll;bin\Kooboo.dll;bin\KoobooModule7.dll;bin\KoobooModule7.dll.config;bin\Lucene.Net.Contrib.Highlighter.dll;bin \Lucene.Net.dll;bin\Microsoft.Web.Infrastructure.dll;bin\Mono.Math.dll;bin\Newtonsoft.Json.dll;bin\Ninject.dll;bin\NuGet.Core.dll;bin\Org .Mentalis.Security.Cryptography.dll;bin\System.Net.Http.dll;bin\System .Web.Helpers.dll;bin\System.Web.Mvc.dll;bin\System.Web.Razor.dll;bin\System.Web.WebPages.Administration.dll;bin\System.Web.WebPages.Deployment.dll ;bin\System.Web.WebPages.dll;bin\System.Web.WebPages.Razor.dll (TaskId:45)
  源文件:bin\CookComputing.XmlRpcV2.dll;bin\DiffPlex.dll;bin\dotless.Core.dll;bin\DotNetOpenAuth.AspNet.dll;bin\DotNetOpenAuth.Core.dll;bin\DotNetOpenAuth.OAuth.Consumer.dll; bin\DotNetOpenAuth.OAuth.dll;bin\DotNetOpenAuth.OpenId.dll;bin\DotNetOpenAuth.OpenId.RelyingParty.dll;bin\HtmlAgilityPack.dll;bin\Ionic.Zip.Reduced.dll;bin\Kooboo.CMS.Account。 dll;bin\Kooboo.CMS.Caching.dll;bin\Kooboo.CMS.Common.dll;bin\Kooboo.CMS.Common.Runtime.Dependency.Ninject.dll;bin\Kooboo.CMS.Content.dll;bin\ Kooboo.CMS.Form.dll;bin\Kooboo.CMS.Membership.dll;bin\Kooboo.CMS.Search.dll;bin\Kooboo.CMS.Sites.dll;bin\Kooboo.CMS.Sites.TemplateEngines.Razor。 dll;bin\Kooboo.CMS.Web.dll;bin\Kooboo.dll;bin\KoobooModule7.dll;bin\KoobooModule7.dll.config;bin\Lucene.Net.Contrib.Highlighter.dll;bin\Lucene.Net。 dll;bin\Microsoft.Web.Infrastructure.dll;bin\Mono.Math.dll;bin\Newtonsoft.Json.dll;bin\Ninject.dll;bin\NuGet.Core.dll;bin\Org.Mentalis.Security。 Cryptography.dll;bin\System.Net.Http.dll;bin\System.Web.Helpers.dll;bin \System.Web.Mvc.dll;bin\System.Web.Razor.dll;bin\System.Web.WebPages.Administration.dll;bin\System.Web.WebPages.Deployment.dll;bin\System.Web.WebPages .dll;bin\System.Web.WebPages.Razor.dll (TaskId:45)
完成执行任务“消息”。 (任务编号:45)
任务“消息”(TaskId:46)
  任务参数:Text=changed: (TaskId:46)
  任务参数:Importance=high (TaskId:46)
  更改:(TaskId:46)
完成执行任务“消息”。 (任务编号:46)
在项目“KoobooModule7.csproj”中完成构建目标“CopyFilesForModule”。: (TargetId:75)

如您所见,当复制的文件为空时,已正确识别要复制的文件。如何找出复制过程失败的原因?

【问题讨论】:

    标签: msbuild copy msbuild-task


    【解决方案1】:

    您在复制任务中引用的不是 MySourceFiles 项,而是 MySourceFiles 属性。

    <Copy SourceFiles="$(MySourceFiles)" DestinationFolder="Areas\KoobooModule7\bin">
    

    应该是

    <Copy SourceFiles="@(MySourceFiles)" DestinationFolder="Areas\KoobooModule7\bin">
    

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 2014-04-19
      相关资源
      最近更新 更多