为什么MSBuild的复制任务没有复制?

3
我将尝试使用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”(TaskId:43) 任务参数:Include = bin\**\*.*(TaskId:43) 任务参数: Exclude = bin\**\*.pdb bin\**\*.xml(TaskId:43) 执行“CreateItem”任务完成。 (TaskId:43) 任务“Copy”(TaskId:44) 任务参数:DestinationFolder = Areas\KoobooModule7\bin(TaskId:44) 执行“Copy”任务完成。 (TaskId:44) 任务“Message”(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) 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

正如您所看到的,要复制的文件已被正确识别,而复制后的文件为空。我该如何找出复制过程失败的原因?

1个回答

9

您没有在复制任务中引用MySourceFiles项,而是引用了MySourceFiles属性。

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

应该是

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

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