msbuild - 为什么MSBuild复制任务不复制?

标签 msbuild copy msbuild-task

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

这是我的 .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

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

Target "CopyFilesForModule: (TargetId:75)" in project "C:\Users\chris\Documents\Visual Studio 2013\Projects\KoobooModule7\KoobooModule7\KoobooModule7.csproj" (target "Build" depends on it):
Task "CreateItem" (TaskId:43)
  Task Parameter:Include=bin\**\*.* (TaskId:43)
  Task Parameter:
      Exclude=
          bin\**\*.pdb
          bin\**\*.xml (TaskId:43)
Done executing task "CreateItem". (TaskId:43)
Task "Copy" (TaskId:44)
  Task Parameter:DestinationFolder=Areas\KoobooModule7\bin (TaskId:44)
Done executing task "Copy". (TaskId:44)
Task "Message" (TaskId:45)
  Task Parameter: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)
Done executing task "Message". (TaskId:45)
Task "Message" (TaskId:46)
  Task Parameter:Text=changed: (TaskId:46)
  Task Parameter:Importance=high (TaskId:46)
  changed: (TaskId:46)
Done executing task "Message". (TaskId:46)
Done building target "CopyFilesForModule" in project "KoobooModule7.csproj".: (TargetId:75)

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

最佳答案

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

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

应该是

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

关于msbuild - 为什么MSBuild复制任务不复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24888976/

相关文章:

visual-studio - 即使发布成功,发布配置文件中的构建目标也不会执行

c# - 无论大小如何,如果源较新,则只复制 MSBuild 复制任务

c++ - 64 位 VS2013 构建的 C++ 认为从命令行构建切换到开发人员工作室时代码已过时

c# - vshost.exe 在 Visual Studio 2015 中未正确终止

使用 C 中的指针将数组的内容复制到多维数组?

Linux:如何递归复制省略某些文件夹?

tfs - MSBuild TFS内部版本号

.net - 构建服务器上的 Visual Studio 2017 依赖项验证项目

c# - 将 2x DOCX 文件合并为 1 个?

javascript - 复制数组而不链接到它