【问题标题】:MSBuild - Adding files to be "cleaned" in a buildMSBuild - 在构建中添加要“清理”的文件
【发布时间】:2010-08-16 21:08:50
【问题描述】:

作为我的一个项目的一部分,有一些“BeforeBuild”任务最终会生成一些文件。特别是,它将一个小的静态类(包含在项目中作为“不编译”)编译成它自己的可执行文件,然后执行它,传入一个外部输入文件,输出一个新生成的类以包含在项目中。

我对其进行了编程以将中间文件放入项目 $(OutDir) 中,但发现在“重建”(最终“清理”)时,这些文件没有被拾取。经过一番思考,我意识到最终生成的放在 $(ProjectDir) 中的类可能也应该在“Clean”中删除。

对 Microsoft.Common.targets 的一些调查显示,有一些来自中间路径 (obj\build\assembly.FileListAbsolute.txt) 的“主列表”被查询以删除文件。

是否有一些标准方法可以将我的新文件添加到 MSBuild 中的此列表中以清理它们,或者这种方法更适合“BeforeClean”(或“AfterClean”)目标覆盖?

【问题讨论】:

    标签: visual-studio msbuild


    【解决方案1】:

    请参阅 Extending the Clean Process,了解此 MSBuild article by Hashimi 中的 FileWrites 机制(即系统写入您所看到的 FileListAbsolute.txt)的详细信息。如果您打算在明年花费超过 2 小时编写构建脚本,请立即获取 the book

    【讨论】:

    • 完美! 扩展清洁过程正是我想要的!我真的希望明年不必在构建脚本上花费超过 2 个小时,但是这本书很可能会在不久的将来出现在我的办公桌上。
    • @Jeff Wight:你无法躲避它——理解 MSBuild-ese 非常值得,你甚至会随着时间的推移欣赏它的优雅! stackoverflow.com/questions/47884/…stackoverflow.com/questions/1326445/…
    • 是的,我同意鲁本的观点,得到这本书!
    • 引用的 MSBuild 文章来自 2009 年,所以当它专门说“C# 和 VB.NET 项目”时,我认为一般来说它的意思是“使用 MSBuild 的项目”。在 VS2010 中,C++ 被添加到该列表中。但是,FileListAbsolute.txt 似乎不用于 C++。
    • 获得这本书是任何人都可以给从事 msbuild 工作的开发人员的最佳建议。即使在今天对项目系统进行了许多更改,它仍然是 msbuild 上最好的资源之一,并且在解释系统意图方面做得非常出色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 2014-08-19
    • 2012-05-15
    • 2012-09-05
    相关资源
    最近更新 更多