I have a solution in Visual Studio in which I have a shared property sheet which contains a Post-Build Event command (bar
) which needs to execute for every project.
Foo.props > Common Properties > Build Events > Post-Build Event > Command Line = bar
How do I then specify additional project-specific Post-Build Events? The usual "Inherit from parent or project defaults" is missing, and I would rather not have to manually add bar
to every single project as it makes it hard to maintain.
After finding this solution and looking at the other post. I found it impossible to understand why the VC++ team would leave this feature out.
After looking through the Macros for the property pages you can include the command from the previous properties using the %(Command) macro / environment variable. This works for all build events.
PropertySheet1.props
copy some.dll $(OutputPath)
%(Command)
PropertySheet2.props
copy other.dll $(OutputPath)
%(Command)
Results in all commands being executed.
Based on this post, it doesn't seem possible. You posted your question a while ago; did you manage to find a feasible alternative?
Edited after feedback: A potentially messy alternative would be to define your command as a macro:
<!-- CommandX.props -->
<PropertyGroup>
<CommandX>bar</CommandX>
</PropertyGroup>
Then you could add $(CommandX)
to the post-build command of the project or to another property sheet. If $(CommandX)
doesn't exist, it is quietly ignored.
If you add this macro to another property sheet, then you'd have to Import
your CommandX
property sheet so that $(CommandX)
inherits a value:
<!-- Some-Other-Property-Sheet.props -->
<ImportGroup Label="PropertySheets">
<Import Project="CommandX.props" />
</ImportGroup>
After learning a bit more about the build process, I'd like to recommend using MSBuild tasks; in particular, the Exec task might offer the most feasible solution.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With