我在Visual Studio中有一个解决方案,其中我有一个共享属性表,其中包含需要为每个项目执行的构建后事件命令(bar
)。
Foo.props>共同属性>构建活动>构建后事件> 命令行= bar
如何指定其他特定于项目的Post-Build事件?缺少通常的“从父项或项目默认值继承”,我宁愿不必为每个项目手动添加bar
,因为它很难维护。
答案 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进行测试)