Reputation: 163
I have a solution with two executing projects. Users can execute project B from project A by pressing a button. Project A Debug folder contains the project B Debug folder, so it executes project B by the hardcoded path to that folder. If I want to make some changes in project B - I need to recompile project B and replace its Debug folder in project A Debug folder. I think it's not a smart and comfortable way from the point of architecture view. So I want to include such actions in project A build events, but I have never done it before, so I would be happy to hear your suggestions.
Upvotes: 1
Views: 1858
Reputation: 22456
The easiest way to achieve this is to create a reference from A to B, so you coud access the (public) members of B from project A. This way, you could also run the code of B in the process of A, eliminating the need to start a separate process.
If you do have the requirement that you need to have a separate exe for B that runs in a separate process, there is another approach that requires more effort:
<Target Name="AfterBuild">
<ItemGroup>
<AdditionalFiles Include="$(MSBuildProjectDirectory)\..\ProjectB\bin\$(Configuration)\ProjectB.*" />
</ItemGroup>
<Copy SourceFiles="@(AdditionalFiles)" DestinationFolder="$(OutputPath)" />
</Target>
<Target Name="AfterClean">
<ItemGroup>
<AdditionalFilesToDelete Include="$(OutputPath)\ProjectB.*" />
</ItemGroup>
<Delete Files="@(AdditionalFilesToDelete)" />
</Target>
Please see the documentation on build targets and note that the code above is only a sample that you need to adjust to your specific needs. For instance, it only works with the standard output paths.
Upvotes: 1