{"id":35272217,"url":"https://github.com/thesylence/vsvalidate","last_synced_at":"2026-04-11T20:02:50.922Z","repository":{"id":38461503,"uuid":"342021745","full_name":"TheSylence/VsValidate","owner":"TheSylence","description":"Validator for Visual Studio projects","archived":false,"fork":false,"pushed_at":"2022-12-09T20:44:15.000Z","size":99,"stargazers_count":0,"open_issues_count":13,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-25T12:00:52.667Z","etag":null,"topics":["ci","dotnet","projects","validation","visual-studio"],"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/TheSylence.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-24T20:06:47.000Z","updated_at":"2022-12-09T20:44:18.000Z","dependencies_parsed_at":"2023-01-25T16:20:23.956Z","dependency_job_id":null,"html_url":"https://github.com/TheSylence/VsValidate","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/TheSylence/VsValidate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheSylence%2FVsValidate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheSylence%2FVsValidate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheSylence%2FVsValidate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheSylence%2FVsValidate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheSylence","download_url":"https://codeload.github.com/TheSylence/VsValidate/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheSylence%2FVsValidate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31693275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["ci","dotnet","projects","validation","visual-studio"],"created_at":"2025-12-30T12:34:31.432Z","updated_at":"2026-04-11T20:02:50.916Z","avatar_url":"https://github.com/TheSylence.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VsValidate\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/TheSylence/VsValidate)\n[![CI](https://github.com/TheSylence/VsValidate/actions/workflows/Ci.yml/badge.svg?branch=main)](https://github.com/TheSylence/VsValidate/actions/workflows/Ci.yml)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/bbb3b3809fee449f8a0326a1de0e49ff)](https://www.codacy.com/gh/TheSylence/VsValidate/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=TheSylence/VsValidate\u0026amp;utm_campaign=Badge_Grade)\n![Codacy coverage](https://img.shields.io/codacy/coverage/bbb3b3809fee449f8a0326a1de0e49ff)\n![GitHub](https://img.shields.io/github/license/TheSylence/VsValidate)\n\nValidator for Visual Studio projects to make sure all projects in a solution are configured properly.\n\n## Requirements\n.NET Core 5.0 Runtime must be installed on the machine.\nIf you build your app using `dotnet` you probably have installed the .NET Core SDK which includes the runtime.\nThe runtime doesn't have to be installed separately in this case.\n\nThe app should work on Windows x64, Linux x64 and Linux Arm64.\n\n## Usage\nCall the program with your configuration file and specify which projects (or solutions) to validate.\n\n`vsvalidate.exe --config your-configuration-file.yml --project your-project.sln`\n\nValidation errors will be written to stderr and the exit code of the program is either 0 (validation successful) or 1 (validation failed).\n\nYou can specify the `--verbose` switch to enable verbose logging to stdout or `--silent` to suppress all output.\n\n## Configuration\nConfigurations are stored in simple YAML files and are easily editable.\n\nSample configuration:\n```yml\nproperties:\n    - name: TreatWarningsAsErrors\n      value: True\n      required: true\n\n    - name: TargetFramework\n      value: net5.0\n      required: true\n```\n\nThis configuration checks that all projects are built for .NET 5.0 and have *Treat warnings as errors* enabled.\n\nOr if you want to make sure that a certain nuget package is installed in your projects:\n```yml\npackages:\n    - name: Newtonsoft.Json\n      required: true\n      version: \"^12.0.0\"\n```\nThis checks that all projects reference *Newtonsoft.Json* and checks that some version with a major version of 12 is used.\n(See [https://github.com/npm/node-semver#versions](https://github.com/npm/node-semver#versions) for a reference for version ranges)\n\nYou can of course combine both package and property checks in a single configuration file.\n\n## Rules\n\n### Property\nChecks that a property is correctly configured in all projects. Listed under `properties` in your configuration file.\n\n| Field | Description | Required? | Default value |\n|---|---|---|---|\n| `name` | Name of the property. Case sensitive. | Yes | |\n| `forbidden` | Fail validation if property exists. | No | `false` |\n| `required` | Fail validation when property is not found. | No | `false` |\n| `maximumOccurrences` | Fail validation if property is found more than `n` times in a project. | No | Don't check number of occurrences |\n| `minimumOccurrences` | Fail validation if property is found less than `n` times in a project. | No | Don't check number of occurrences |\n| `value` | Fail validation if property does not have this value. Case sensitive | No | Don't check value |\n\n### Package\nChecks that a package is correctly referenced in all projects. Listed under `packages` in your configuration file.\n\n| Field | Description | Required? | Default value |\n|---|---|---|---|\n| `name` | Name of the referenced package. Case sensitive | Yes | |\n| `required` | Fails validation if package is not referenced | No | `false` |\n| `forbidden` | Fails validation if package is referenced | No | `false` |\n| `version` | Fails validation if installed version of the package does not fall in this range. (See [https://github.com/npm/node-semver#versions](https://github.com/npm/node-semver#versions) for a reference for version ranges) | No | Don't check version | \n| `includeAssets` | Validation fails if not all values specified are found in the validated project | No | Don't validate |\n| `excludeAssets` | Validation fails if not all values specified are found in the validated project | No | Don't validate |\n| `privateAssets` | Validation fails if not all values specified are found in the validated project | No | Don't validate |\n\n### Project Reference\nChecks that a project is correctly referenced in all projects. Listed under `projects` in your configuration file.\n\n| Field | Description | Required? | Default value |\n|---|---|---|---|\n| `name` | Name of the referenced project (paths are ignored). Case sensitive | Yes |\n| `required` | Fails validation if project is not referenced. | No | `false` |\n| `forbidden` | Fails validation if project is referenced. | No | `false ` |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthesylence%2Fvsvalidate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthesylence%2Fvsvalidate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthesylence%2Fvsvalidate/lists"}