【问题标题】:MSBuild with XCopy Not Working带有 XCopy 的 MSBuild 不工作
【发布时间】:2014-10-03 03:34:10
【问题描述】:

我正在使用 msbuild 并有一个后期生成步骤,可以即时生成 JavaScript 文件。 我想确保当 msbuild 完成后,这些文件也随之而来。此文件不在源代码管理中。

每当我从 Visual Studio 2012 开始构建时,该文件都会与构建服务器上的所有其他内容一起生成,但它永远不会最终出现在网络服务器上。我尝试使用 xcopy 将其推送到十几个地方,例如 binaries/_publishedSites 或 /bin 以及我能想到的所有地方(最多 5 个不同的位置),但它似乎都忽略了它,它永远不会出现在目标服务器上。

是否有我需要将文件复制到特定文件夹以确保 msbuild 能够拾取它?

谢谢!

【问题讨论】:

  • 您可以尝试this 解决方法。

标签: visual-studio-2012 msbuild


【解决方案1】:

生成文件后,您需要将该文件添加到 @(Content) 项目数组中。这需要在目标中完成,而不是静态完成,因为在处理静态项目时该项目将不存在。生成文件的目标也需要在 web 打包步骤之前发生,而不是在构建完成之后。

<Target Name="GenerateFiles"
  BeforeTargets="Build">
  ... create the file named generated.js
  <ItemGroup>
    <Content Include="./path/to/generated.js">
      <CopyTo... />
    </Content>
  </ItemGroup>
</Target>

【讨论】:

  • 谢谢,这很有帮助,但 CopyTo 中应该包含什么?它也应该是 CopyToOutputDirectory 吗?我可以使用一个变量来确保它到达其他所有东西的目标位置吗?我基本上只是想从 /scripts/1/myfile.js 位置取出它并将其移动到目标 /scripts/1/myfile.js
  • 是的,CopyToOutputDirectory,我是凭记忆去的。您可以将其设置为“始终”或“PreserveNewest”,这应该将其发送到其他输出的位置。它应该像文件是静态的并且在项目中作为普通的 @(Content) 项引用一样工作。
  • 谢谢 - 要运行这个,我需要告诉 MSBUILD 进行发布吗?即使用开关 /p:DeployOnBuild=true;PublishProfile=SomeProfile ?还是只运行典型的 msbuild 命令并通过 TFS 将构建排队而不指定发布就足够了?
猜你喜欢
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-07
  • 2014-02-10
  • 1970-01-01
  • 2018-12-25
相关资源
最近更新 更多