{"id":22979698,"url":"https://github.com/verticalsoftware/vertical-csdependencies","last_synced_at":"2025-04-02T09:16:36.224Z","repository":{"id":79963770,"uuid":"224909718","full_name":"verticalsoftware/vertical-csdependencies","owner":"verticalsoftware","description":"Project that outputs CSharp projects in dependency order","archived":false,"fork":false,"pushed_at":"2019-11-30T22:23:49.000Z","size":377,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-08T21:40:03.093Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/verticalsoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-29T19:12:36.000Z","updated_at":"2019-11-30T22:18:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"ab1c6429-3e07-4210-bf2c-0273d9aeb324","html_url":"https://github.com/verticalsoftware/vertical-csdependencies","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verticalsoftware%2Fvertical-csdependencies","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verticalsoftware%2Fvertical-csdependencies/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verticalsoftware%2Fvertical-csdependencies/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verticalsoftware%2Fvertical-csdependencies/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/verticalsoftware","download_url":"https://codeload.github.com/verticalsoftware/vertical-csdependencies/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246785485,"owners_count":20833497,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-15T01:33:28.916Z","updated_at":"2025-04-02T09:16:36.204Z","avatar_url":"https://github.com/verticalsoftware.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vertical-csdependencies\n\n[![Build Status](https://dev.azure.com/vertical-software/vertical-csdependencies/_apis/build/status/verticalsoftware.vertical-csdependencies?branchName=master)](https://dev.azure.com/vertical-software/vertical-csdependencies/_build/latest?definitionId=3\u0026branchName=master)\n![Azure DevOps coverage (branch)](https://img.shields.io/azure-devops/coverage/vertical-software/vertical-csdependencies/3/master)\n![Nuget](https://img.shields.io/nuget/v/vertical-csdependencies)\n\nFinds all C# projects in a directory, and displays them in dependency order.\n\n## Installation\n\n```\ndotnet tool install -g vertical-csdependencies\n```\n\n## Quick Start\n\nGiven you are positioned in the root of a multi-project directory, and your sources are in a folder called 'src', the following example lists the full paths to each project in *dependency* order.\n\n```\n$ csdeps ./src\n```\n\n## Use Case\n\nThis tool was designed to aggregate projects that have relationships with each other via package references (not P2P references), and display them in the order in which they should be built, given one is a dependency of another.\n\nFor example, say we have the following project structure:\n\n/src/vertical.core/vertical.core.csproj:\n\n```xml\n\u003cProject Sdk=\"Microsoft.Sdk\"\u003e\n    \u003cPropertyGroup\u003e\n        \u003cIsPackable\u003etrue\u003c/IsPackable\u003e\n        \u003cPackageId\u003evertical.core\u003c/PackageId\u003e\n    \u003c/PropertyGroup\u003e\n\u003c/Project\u003e\n```\n\n/src/vertical.logging.abstractions/vertical.logging.abstractions.csproj:\n\n```xml\n\u003cProject Sdk=\"Microsoft.Sdk\"\u003e\n    \u003cPropertyGroup\u003e\n        \u003cIsPackable\u003etrue\u003c/IsPackable\u003e\n        \u003cPackageId\u003evertical.logging.abstractions\u003c/PackageId\u003e\n    \u003c/PropertyGroup\u003e\n\u003c/Project\u003e\n```\n\n/src/vertical.diagostics.abstractions/vertical.diagnostics.abstractions.csproj:\n\n```xml\n\u003cProject Sdk=\"Microsoft.Sdk\"\u003e\n    \u003cPropertyGroup\u003e\n        \u003cIsPackable\u003etrue\u003c/IsPackable\u003e\n        \u003cPackageId\u003evertical.diagnostics.abstractions\u003c/PackageId\u003e\n    \u003c/PropertyGroup\u003e\n\u003c/Project\u003e\n```\n\n/src/vertical.diagostics/vertical.diagnostics.csproj:\n\n```xml\n\u003cProject Sdk=\"Microsoft.Sdk\"\u003e\n    \u003cPropertyGroup\u003e\n        \u003cIsPackable\u003etrue\u003c/IsPackable\u003e\n        \u003cPackageId\u003evertical.diagnostics\u003c/PackageId\u003e\n    \u003c/PropertyGroup\u003e\n    \u003cItemGroup\u003e\n        \u003cPackageReference Include=\"vertical.diagnsotics.abstractions\" /\u003e\n        \u003cPackageReference Include=\"vertical.logging.abstractions\" /\u003e\n    \u003c/ItemGroup\u003e\n\u003c/Project\u003e\n```\n\nIf we ran the utility and pointed it at `/src`, we would see the following output:\n\n```\n$ csdeps ./src\n/src/vertical.core/vertical.core.csproj\n/src/vertical.logging.abstractions/vertical.logging.abstractions.csproj\n/src/vertical.diagostics.abstractions/vertical.diagnostics.abstractions.csproj\n/src/vertical.diagostics/vertical.diagnostics.csproj\n```\n\nWe could take this output and feed it to a build script...\n\n```PS\nforeach ($project in (\u0026 csdeps .\\src)) {\n    dotnet pack $project -c Release\n}\n```\n\n## Particulars\n\n### How dependency names are resolved\n\nThe utility resolves package identifiers using the following order of precedence:\n\n    1. \u003cPackageId\u003e element text within the \u003cPropertyGroup\u003e element\n    2. \u003cAssemblyName\u003e element text within the \u003cPropertyGroup\u003e element\n    3. Project name - which is the name of project file excluding the extension\n\n### Command line usage\n\n```\n$ csdeps \u003cpath [,...]\u003e [OPTIONS]\n```\n\n#### Arguments\n\npath - One or more source directories to look for project files. Paths are rooted to the current working directory\n\n#### Options\n\n--debug - Display diagnostic information\n\n-h, --help - Displays the help file\n\n-i, --include \u0026lt;pattern\u0026gt; - A glob pattern that matches the files to include. Defaults to **/*.csproj is not specified.\n\n-o, --output \u0026lt;option\u0026gt; - Specifies which nomenclature of the project should be used in the output. Choices are: assemblyName, directory, fileName, projectFile, projectName\n\n--tree - Display the output as a tree\n\n-x, --exclude \u0026lt;pattern\u0026gt; - One or more glob patterns used to match files that should be excluded from aggregation.\n\n## Contributing\nYes! Help from the community is highly appreciated. Please [create an issue](https://github.com/verticalsoftware/vertical-csdependencies/issues/new) though so we can discuss the bug or feature.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverticalsoftware%2Fvertical-csdependencies","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fverticalsoftware%2Fvertical-csdependencies","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverticalsoftware%2Fvertical-csdependencies/lists"}