如何从 MSBuild 任务将文件添加到项目输出文件

2024-01-07

给定一个在以下位置运行的 MSBuild 任务AfterTargets="AfterCompile"并生成一些文件,如何将这些文件包含在当前项目输出中,以便将这些文件复制到引用该项目的任何项目的 bin 目录中?


我不能保证这是正确的解决方案,但它似乎有效:

<Target Name="MyTarget" AfterTargets="AfterCompile">
  <PropertyGroup>
    <MyInput>D:\1.txt</MyInput>
    <MyOutput>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)$(OutDir)\1.txt'))</MyOutput>
  </PropertyGroup>
  <Copy SourceFiles="$(MyInput)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" />
  <ItemGroup>
    <AllItemsFullPathWithTargetPath Include="$(MyOutput)">
      <TargetPath>1.txt</TargetPath>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </AllItemsFullPathWithTargetPath>
  </ItemGroup>
</Target>

相关逻辑在这里:http://sourceroslyn.io/#MSBuildTarget=获取 CopyToOutputDirectory 项目 http://sourceroslyn.io/#MSBuildTarget=GetCopyToOutputDirectoryItems http://sourceroslyn.io/#MSBuildItem=AllItemsFullPathWithTargetPath http://sourceroslyn.io/#MSBuildItem=AllItemsFullPathWithTargetPath

基本上,我们依赖于这样一个事实:为了确定要从依赖项目复制的文件列表,MSBuild 调用依赖项目的 GetCopyToOutputDirectoryItems 目标并使用其输出(即 AllItemsFullPathWithTargetPath)。

通过在最后一刻将我们自己添加到 AllItemsFullPathWithTargetPath 中,当依赖项目调用我们时,我们就会被接听。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 MSBuild 任务将文件添加到项目输出文件 的相关文章

随机推荐

  • Android中SAX解析问题

    您好 我有一个 Android 应用程序 我想从 xml 文件获取数据 我已经使用了 SAX 解析器 但是从这里给出的这种类型的 xml 文件获取数据存在一些问题 所以请给我解决方案 使用SAX解析来解析以下xml文件 我的 xml 文件在
  • 基于查找 df 中其他两列之间最接近的值返回值

    我的问题几乎相同this one https stackoverflow com questions 41496276 return rows establishing a closest value to in r除非不是寻找列值和固定数
  • 写入 VpnService 输出流没有响应

    我的应用程序实现 VpnService 来拦截网络流量并提供量身定制的响应 目标是处理特定地址的流量 并丢弃其他请求 目前 我成功解析传入请求并构建和发送响应 然而 问题在于这些响应并不是作为对原始请求的实际响应而到达的 使用套接字连接进行
  • GridBagLayout 如何将组件向北推

    这是我的代码 public class HomeTopPanel extends JPanel BUTTONS private final JButton myAccountButton new JButton My Account pri
  • java.lang.NoSuchMethodError: org.mockito.Answers.get()Lorg/mockito/stubbing/Answer;

    我正在尝试将 spring boot 版本从 2 2 4 升级到 2 6 6 我能够成功编译应用程序并且能够启动应用程序 但是当我尝试运行测试时 所有测试都因一个错误而失败 java lang NoSuchMethodError org m
  • 在 Threejs 中使用鼠标滚轮更改相机位置.z

    有谁知道如何改变camera position z 用鼠标滚轮 相机 并制作滚动效果 当我尝试使用变量时 它不起作用 TrackballControls or OrbitControls示例中可以使用启用缩放 以及旋转和平移 参见示例htt
  • matplotlib 复制图形并应用更改

    我正在制作一系列具有相同布局的人物 由于布局需要多行代码 我试图复制第一次完成的代码 只更改一些内容 例如标记 如果可能的话 数据虽然我知道它可能会使事情变得复杂 因为它可能需要重新缩放和这样在 plt show 命令结束时 就会显示原始图
  • 进行预测时 conv2d_transpose 取决于 batch_size

    我目前有一个在张量流中实现的神经网络 但我在训练后进行预测时遇到问题 因为我有 conv2d transpose 操作 并且这些操作的形状取决于批量大小 我有一个需要 output shape 作为参数的层 def deconvLayer
  • 带计时器的 .NET Windows 服务停止响应

    我有一个用 C 编写的 Windows 服务 它内部有一个计时器 可以定期触发一些功能 所以我的服务的骨架 public partial class ArchiveService ServiceBase Timer tickTack int
  • 传播 Bash shell 脚本中的所有参数

    我正在编写一个非常简单的脚本来调用另一个脚本 并且我需要将参数从当前脚本传播到我正在执行的脚本 例如 我的脚本名称是foo sh并打电话bar sh foo sh bar 1 2 3 4 在不明确指定每个参数的情况下如何做到这一点 Use
  • 使用另一个字段的值更新 MongoDB 字段

    在 MongoDB 中 是否可以使用另一个字段的值来更新一个字段的值 等效的 SQL 类似于 UPDATE Person SET Name FirstName LastName MongoDB 伪代码是 db person update s
  • 如何使用 d3.js 对分箱时间序列求和?

    我想要一个简单的图表 例如 我拥有的数据是具有两个属性的简单交易列表 时间戳 amount 我尝试了 d3 layout histogram bins 但它似乎只支持counting交易 我一定不是唯一一个在寻找这个的人 不是吗 好的 IR
  • 如何在R中设置C5.0包的成本矩阵?

    我在网上搜索了很多 但没有找到任何关于 R 中 C5 0 函数的 成本 参数的有用描述 在 C5 0 R 手册中 它只是说 与可能的错误 矩阵应有 C 列和行 其中 C 是类别级别的数量 它没有告诉我是否row or the column是
  • 如何告诉Java运行这个Runtime.getRuntime().exec,而不等待它必须运行的任何命令,只需在后端运行它?

    如何让Runtime getRuntime exec p 运行而不等待sleep 10 目前它是错误的 它等待执行完成然后移动到下一个 我需要动态地让 exec 运行 这样 10 秒后它就可以杀死PresentationInProjecto
  • 在向量中找到最长“连续数字”条纹的最快方法是什么?

    我有一个排序的std vector
  • Java 8:计算 lambda 迭代次数的首选方法?

    我经常面临同样的问题 我需要计算 a 的运行次数lambda供外部使用lambda E g myStream stream filter forEach item gt runCount System out println The lam
  • 如何在vba中使用间接引用选择单个单元格或区域

    我只需要一个用于选择单元格的代码 但是选择的单元格会发生变化 我的工作簿中有一个单元格 它可以识别它应该是什么单元格 单元格 A1 包含应选择的单元格编号 在此示例中 单元格 A1 包含单词 P25 因此我希望以下代码引用 A1 以间接引用
  • 如何删除多余的节点

    我有一组 erlang 节点 它们通过 Mnesia 的 extra db nodes 复制数据 我需要升级硬件和软件 所以当我从一个节点移动到另一个节点时 我必须分离一些节点 如何删除一个节点并仍然保留插入的数据 更新 删除节点与添加节点
  • 如何关闭我的应用程序的所有活动?

    我有一个包含多项活动的应用程序 例如 活动 1 gt 活动 2 gt 活动 3 gt 活动 4 我想关闭所有活动并返回家里的电话 您可以通过使用来实现BroadcastReceivers 创建一个BaseActivity像这样 public
  • 如何从 MSBuild 任务将文件添加到项目输出文件

    给定一个在以下位置运行的 MSBuild 任务AfterTargets AfterCompile 并生成一些文件 如何将这些文件包含在当前项目输出中 以便将这些文件复制到引用该项目的任何项目的 bin 目录中 我不能保证这是正确的解决方案