microsoft / microsoft/vs-solutionpersistence

Add support for `Microsoft.Build.Traversal` projects

Open
#87 2 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
213
Forks
14
PR merge metrics
No merged PRs in 30d

Description

This one might be a bit of a reach, but I've heard from many people that they would like traversal projects to act as solutions. Personally, it's the ease with which projects can be included. Traversal projects could make use of the familiar MSBuild properties, items, targets, and tasks known from project files.

<Project Sdk="Microsoft.Build.Traversal/4.1.0">

  <ItemGroup>
    <ProjectReference Include="src/*/*.csproj" />
  </ItemGroup>

</Project>

I'm curious about people's alternative ideas, since I'm not optimistic that this can be supported. MSBuild projects are a lot more complicated, and using one as a solution would probably produce unexpected behavior.


I would still like to open the discussion for some format that's closer to MSBuild project files, so let me know if you have any ideas on how to perhaps use the MSBuild architecture to build a solution format that integrates with MSBuild. A possible format I've imagined is the following:

<Project Sdk="Microsoft.Build.Solution">

  <ItemGroup>
    <Configuration Include="CustomConfiguration" Platform="Any CPU" />
  </ItemGroup>

  <ItemGroup>
    <Project Include="src/*/*.csproj"
             Folder="src" />
    <Project Include="test/*/*.csproj"
             Folder="test" />

    <Project Update="test/*/*.csproj"
             Condition="'$(Configuration)' == 'Release'"
             NoBuild="true" />
  </ItemGroup>

</Project>

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the repository's solution serializers and models, then compare their supported solution behavior with the proposed Microsoft.Build.Traversal and Microsoft.Build.Solution XML examples. The issue does not identify an entry point, tests, or an agreed format; done would require a decided design and corresponding support.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.