【问题标题】:MSBuild: Task to embedding a file before compilationMSBuild:编译前嵌入文件的任务
【发布时间】:2011-01-29 02:02:34
【问题描述】:

我有以下需求:

我必须创建一个 MSBuild 任务,该任务将生成一个 xml 文件,然后我需要将其作为资源嵌入到正在构建的项目之一中。如何更改我的 MSBuild 项目以实现这一目标?是否有可用于嵌入文件的内置任务,还是需要创建一个?如果是后者,任何方向都会很棒。

提前致谢!

更新:根据给出的建议,我最终将一个空的 xml 文件作为资源添加到项目中,创建了一个简单的 MSBuild 自定义任务 (http://bartdesmet.net/blogs/bart/archive/2008 /02/15/the-custom-msbuild-task-cookbook.aspx)根据需要将内容写入该文件,并将该任务作为“BeforeBuild”目标运行。奇迹般有效。请注意,我必须“从源代码管理中排除文件”,因此每次构建项目时都不会检查它,并且我还在任务中添加了一些代码以确保文件不是只读(http://www.del337ed.com/blog/index.php/2007/09/05/clearing-the-read-only-flag-on-a-file-in-c/)。

【问题讨论】:

  • 您是让 MSBuild 只构建您的 VS 解决方案,还是单独构建您的 .*proj?
  • 我没有单独构建 *proj 文件...

标签: msbuild


【解决方案1】:

如果您不需要从头开始创建整个 Xml 文件并且可以将存根文件添加到您的项目中,您可以使用 XmlPoke Task 在 BeforeBuild 目标中更新此文件(请参阅 Sergios 答案)。

【讨论】:

  • 啊,是的……这是个好主意。我想我需要在那个文件上“从源代码管理中排除文件”,这样我就可以更新它而不必检查它。谢谢。
  • @Claudio 希望你能像这样工作。我关于构建解决方案与构建项目的评论是关于您是否需要修改您的 .*proj (BeforeBuild) 或可以在更高级别的构建脚本中执行任何任务。
【解决方案2】:

您可以在 .csproj/.vbproj 文件目标 BeforeBuild 中使用 builtin(不要忘记取消注释它)和 call BeforeTarget 中所需的 MSBuild 任务。在该项目中将该资源添加为嵌入式。就这样。

【讨论】:

  • 我就是这么想的。谢谢。关于如何将文件添加为嵌入式资源的任何指示?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多