As discussed in #215, creating granular per-project build tasks can result in a more efficient developer experience than solution-level tasks, particularly for large solutions. However, relying on MSBuild to build referenced projects results in an incongruity, where although a referenced project has a build task defined in Bau, that task is not actually executed. This can be unintuitive and make it difficult to reason about the build flow.
One potential solution to this would be to read the csproj file and extract its project references, and use that to build the task dependency graph in Bau. We can then instruct MSBuild not to build referenced projects (BuildReferencedProjects=false), and rely on Bau to build them instead. This allows us to use the full power of Bau and C# to create a reliable build workflow.
Note that in order for this to work, we need some way of reliably identifying the build task of the referenced project. Without a built-in structure around projects, we would probably have to rely on some kind of naming convention, which is error-prone and not particularly discoverable. Implementing #215 first would create a structure around projects that would make finding the referenced build task easier.
As discussed in #215, creating granular per-project build tasks can result in a more efficient developer experience than solution-level tasks, particularly for large solutions. However, relying on MSBuild to build referenced projects results in an incongruity, where although a referenced project has a build task defined in Bau, that task is not actually executed. This can be unintuitive and make it difficult to reason about the build flow.
One potential solution to this would be to read the csproj file and extract its project references, and use that to build the task dependency graph in Bau. We can then instruct MSBuild not to build referenced projects (BuildReferencedProjects=false), and rely on Bau to build them instead. This allows us to use the full power of Bau and C# to create a reliable build workflow.
Note that in order for this to work, we need some way of reliably identifying the build task of the referenced project. Without a built-in structure around projects, we would probably have to rely on some kind of naming convention, which is error-prone and not particularly discoverable. Implementing #215 first would create a structure around projects that would make finding the referenced build task easier.