{"id":21272706,"url":"https://github.com/webmaster442/csproj","last_synced_at":"2026-01-26T18:01:48.791Z","repository":{"id":262491426,"uuid":"887402245","full_name":"webmaster442/csproj","owner":"webmaster442","description":"csproj is a simple tool to change properties of multiple C# projects","archived":false,"fork":false,"pushed_at":"2025-12-23T16:56:18.000Z","size":112,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-24T06:22:56.350Z","etag":null,"topics":["automation","csproj","csproj-tooling","devops","dotnet","multi-project","project-files","tooling"],"latest_commit_sha":null,"homepage":"","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/webmaster442.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-12T17:21:31.000Z","updated_at":"2025-12-22T17:20:36.000Z","dependencies_parsed_at":"2024-11-12T18:30:17.771Z","dependency_job_id":"f343d116-385f-4385-86f5-6cce5df26284","html_url":"https://github.com/webmaster442/csproj","commit_stats":null,"previous_names":["webmaster442/csproj"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/webmaster442/csproj","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webmaster442%2Fcsproj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webmaster442%2Fcsproj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webmaster442%2Fcsproj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webmaster442%2Fcsproj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webmaster442","download_url":"https://codeload.github.com/webmaster442/csproj/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webmaster442%2Fcsproj/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28784093,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["automation","csproj","csproj-tooling","devops","dotnet","multi-project","project-files","tooling"],"created_at":"2024-11-21T09:08:44.499Z","updated_at":"2026-01-26T18:01:48.785Z","avatar_url":"https://github.com/webmaster442.png","language":"C#","readme":"# csproj\n\ncsproj is a simple tool to change properties of multiple C# projects\n\n## Installation\n\n```bash\ndotnet tool install -g csproj\n```\n\n## Provided commands\n\n### targetframework\n\n```\nDESCRIPTION:\nSet the target framework for the project\n\nUSAGE:\n    csproj targetframework [OPTIONS]\n\nOPTIONS:\n    -h, --help         Prints help information\n    -p, --project      Project File Path. Can be a directory or a single project file. If not provided, the current\n                       directory is used\n    -r, --recursive    Recursive search for csproj files\n    -f, --filter       Filter project files by name. Wildcards like * and ? are supported\n    -b, --backup       Create a backup of the project file\n    -t, --target       The target framework to upgrade to\n    -o, --old          The old target framework to upgrade from\n```\n\nExample: upgrade all csproj files in the current directory and subdirectories from netcoreapp3.1 to net9.0 recursively and create a backup of the original files:\n\n```bash\ncsproj targetframework --recursive --backup --old netcoreapp3.1 --target net9.0\n```\n\nExample: upgrade all csproj files in the current directory from netcoreapp3.1 to net9.0 which have the word \"Web\" in their name:\n\n```bash\ncsproj targetframework --filter \"Web*\" --old netcoreapp3.1 --target net9.0\n```\n\n### nullable\n\n```\nDESCRIPTION:\nSet the nullable context for the project\n\nUSAGE:\n    csproj nullable [OPTIONS]\n\nOPTIONS:\n    -h, --help           Prints help information\n    -p, --project        Project File Path. Can be a directory or a single project file. If not provided, the current\n                         directory is used\n    -r, --recursive      Recursive search for csproj files\n    -f, --filter         Filter project files by name. Wildcards like * and ? are supported\n    -b, --backup         Create a backup of the project file\n    -n, --nullability    The nullability to upgrade to\n```\n\n### version\n\n```\nDESCRIPTION:\nSet project, file, and assembly versions\n\nUSAGE:\n    csproj version [OPTIONS]\n\nOPTIONS:\n    -h, --help             Prints help information\n    -p, --project          Project File Path. Can be a directory or a single project file. If not provided, the current directory is used\n    -r, --recursive        Recursive search for csproj files\n    -f, --filter           Filter project files by name. Wildcards like * and ? are supported\n    -b, --backup           Create a backup of the project file\n    -v, --version          The version prefix to set (e.g. 1.2.3.4)\n    -a, --assembly         The assembly version to set (e.g. 1.2.3.4)\n    -f, --file             The file version to set (e.g. 1.2.3.4)\n```\n\nExample: set all project versions in the current directory to 1.2.3.4:\n\n```bash\ncsproj version --version 1.2.3.4\n```\n\nExample: set assembly and file versions for all projects recursively:\n\n```bash\ncsproj version --recursive --assembly 1.2.3.4 --file 1.2.3.4\n```\n\n### licenseheaders\n\n#### apply\n\n```\nDESCRIPTION:\nApply license headers to source files using a specified template\n\nUSAGE:\n    csproj licenseheaders apply [OPTIONS]\n\nOPTIONS:\n    -h, --help             Prints help information\n    -d, --directory        Directory to process. Default: current working directory\n    -t, --template         License template file (default: licenses.xml in current directory)\n    -D, --dryrun           Dryrun mode. Don't do any changes, just output what would happen\n    -r, --recursive        Process subdirectories as well\n```\n\nExample: apply license headers recursively using a custom template:\n\n```bash\ncsproj licenseheaders apply --directory src --template my_license.xml --recursive\n```\n\n#### create\n\n```\nDESCRIPTION:\nCreate a default license headers template file (licenses.xml)\n\nUSAGE:\n    csproj licenseheaders create\n```\n\nExample: create a default license header template in the current directory:\n\n```bash\ncsproj licenseheaders create\n```\n\n### prunelinks\n\n```\nDESCRIPTION:\nInspect and remove redundant project/NuGet references in solution or project files. Optionally outputs a dependency graph in Markdown/Mermaid format.\n\nUSAGE:\n    csproj prunelinks [OPTIONS] --solution \u003cSolutionFile.sln\u003e\n    csproj prunelinks [OPTIONS] --csproj \u003cProjectFile.csproj\u003e\n\nOPTIONS:\n    -h, --help           Prints help information\n    -s, --solution       Solution file path (.sln or .slnx)\n    --csproj             Project file path (.csproj)\n    -D, --dryrun         Only show what would be changed, do not modify files\n    -b, --backup         Create a backup of the project file before editing\n    -v, --verbose        Show the reference tree for each project\n    --graph-md [file]    Output the dependency graph as a Markdown file with Mermaid syntax. If no file is specified, defaults to \u003cSolutionName\u003e.md or \u003cProjectName\u003e.md in the solution/project directory.\n\nNote: You must specify either --solution or --csproj, but not both.\n```\n\n#### Example: Remove redundant links and output dependency graph for a solution\n\n```bash\ncsproj prunelinks --solution MySolution.sln --graph-md\n```\nThis will create `MySolution.md` in the same directory as the solution, containing a Mermaid graph of project dependencies.\n\n#### Example: Remove redundant links and output dependency graph for a single project\n\n```bash\ncsproj prunelinks --csproj MyProject.csproj --graph-md\n```\nThis will create `MyProject.md` in the same directory as the project file, containing a Mermaid graph of its dependencies.\n\n#### Example: Specify a custom Markdown output file\n\n```bash\ncsproj prunelinks --solution MySolution.sln --graph-md dependencies.md\n```\n\n#### Example: Show reference trees for each root project\n\n```bash\ncsproj prunelinks --solution MySolution.sln --verbose\n```\n\n#### Example: Dry run mode (show what would be changed, do not modify files)\n\n```bash\ncsproj prunelinks --solution MySolution.sln --dryrun\n```\n\n#### Output\n- If no redundant links are found: `No redundant links found.`\n- If changes are detected, each change is listed in yellow.\n- If --graph-md is specified, a Markdown file with a Mermaid diagram is generated.\n\n#### Example Mermaid Markdown output\n\n```markdown\n# MySolution.md\n\n```mermaid\n---\ntitle: MySolution\n---\ngraph TD\n    ProjectA --\u003e ProjectB\n    ProjectB --\u003e ProjectC\n    ProjectA --\u003e ProjectC\n````\n\nThat gives you a visual representation of the project dependencies in your solution. You can open this Markdown file in any compatible viewer that supports Mermaid diagrams to see the graph rendered visually.\n\n````mermaid\n---\ntitle: MySolution\n---\ngraph TD\n    ProjectA --\u003e ProjectB\n    ProjectB --\u003e ProjectC\n    ProjectA --\u003e ProjectC\n````\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebmaster442%2Fcsproj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebmaster442%2Fcsproj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebmaster442%2Fcsproj/lists"}