在Visual Studio中继承Post-Build-Event?

时间:2013-03-05 19:21:14

标签: visual-studio visual-studio-2012

我在Visual Studio中有一个解决方案,其中我有一个共享属性表,其中包含需要为每个项目执行的构建后事件命令(bar)。

  

Foo.props>共同属性>构建活动>构建后事件>   命令行= bar

如何指定其他特定于项目的Post-Build事件?缺少通常的“从父项或项目默认值继承”,我宁愿不必为每个项目手动添加bar,因为它很难维护。

3 个答案:

答案 0 :(得分:16)

找到这个解决方案并查看另一篇文章。我发现无法理解为什么VC ++团队会抛弃此功能。

在查看属性页的宏之后,您可以使用%(命令)宏/环境变量包含以前属性中的命令。这适用于所有构建事件。

PropertySheet1.props

copy some.dll $(OutputPath)
%(Command)

PropertySheet2.props

copy other.dll $(OutputPath)
%(Command)

执行所有命令的结果。

答案 1 :(得分:2)

基于此post,似乎不可能。你刚才发布了你的问题;你有没有找到一个可行的替代方案?


反馈后编辑: 一个可能混乱的替代方法是将您的命令定义为宏:

<!-- CommandX.props -->
<PropertyGroup>
  <CommandX>bar</CommandX>
</PropertyGroup>

然后,您可以将$(CommandX)添加到项目的post-build命令或另一个属性表中。如果$(CommandX)不存在,则会被忽略。

如果您将此宏添加到另一个属性表,那么您必须Import CommandX属性表,以便$(CommandX)继承一个值:

<!-- Some-Other-Property-Sheet.props -->
<ImportGroup Label="PropertySheets">
  <Import Project="CommandX.props" />
</ImportGroup>

在详细了解构建过程后,我建议使用MSBuild tasks;特别是,Exec task可能提供最可行的解决方案。

答案 2 :(得分:-1)

由于一些Post-Build Events没有继承他们所定义的属性表,我质疑了鸭子并降落在这里。

我有个好消息: 自Visual Studio 2013起,Pre-Build和Post-Build事件命令行具有“从父项或项目默认值继承”选项,该选项将添加属性表中的所有事件。

(使用Visual Studio 2013和2017 Professional进行测试)