{"id":19293527,"url":"https://github.com/reloaded-project/reloaded.project.configurations","last_synced_at":"2025-10-14T23:04:33.214Z","repository":{"id":158922286,"uuid":"634283036","full_name":"Reloaded-Project/Reloaded.Project.Configurations","owner":"Reloaded-Project","description":"Common project configurations, e.g. editor configs; .nuget output settings, code style, license files. ","archived":false,"fork":false,"pushed_at":"2024-02-21T21:02:46.000Z","size":108,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-16T18:24:41.218Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Reloaded-Project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2023-04-29T16:20:54.000Z","updated_at":"2023-07-15T01:43:25.000Z","dependencies_parsed_at":"2023-11-16T06:23:32.047Z","dependency_job_id":"e373bf18-97ae-4dea-9f1d-4552ba655ee2","html_url":"https://github.com/Reloaded-Project/Reloaded.Project.Configurations","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Reloaded-Project/Reloaded.Project.Configurations","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Reloaded-Project%2FReloaded.Project.Configurations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Reloaded-Project%2FReloaded.Project.Configurations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Reloaded-Project%2FReloaded.Project.Configurations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Reloaded-Project%2FReloaded.Project.Configurations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Reloaded-Project","download_url":"https://codeload.github.com/Reloaded-Project/Reloaded.Project.Configurations/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Reloaded-Project%2FReloaded.Project.Configurations/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279021843,"owners_count":26087060,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-09T22:35:18.176Z","updated_at":"2025-10-14T23:04:33.171Z","avatar_url":"https://github.com/Reloaded-Project.png","language":"PowerShell","readme":"# Reloaded Project Configurations\n\nThis page hosts the common configurations for various parts of the Reloaded project.\n\nThis includes:\n\n- `.editorconfig` files for configuring code style.\n- `Tests.Build.props` for common project settings for tests.\n- `NuGet.Build.props` for common project settings that target NuGet.\n- `Directory.Build.props` for common project settings.\n\n## Usage\n\nTo use this repository, add it as a submodule to your project.\n\n```\ngit submodule add https://github.com/Reloaded-Project/Reloaded.Project.Configurations.git ./src/Reloaded.Project.Configurations\n```\n\nPeriodically update the submodule to the latest version.\n\n```\ngit submodule update --remote\n```\n\n### Tests.Build.props\n\nFor test projects, modify your `.csproj` to include `Tests.Build.props` as follows:\n\n```xml\n\u003cImport Project=\"../Reloaded.Project.Configurations/Tests.Build.props\" /\u003e\n```\n\nYou'll also need to add a startup class for Dependency Injection somewhere in the project\n\n```csharp\npublic class Startup\n{\n    public void ConfigureServices(IServiceCollection services) { }\n}\n```\n\n### NuGet.Build.props\n\nFor packages that are shipped to NuGet, modify your `.csproj` to include `NuGet.Build.props` as follows:\n\n```xml\n\u003cImport Project=\"../Reloaded.Project.Configurations/NuGet.Build.props\" /\u003e\n```\n\nThe following remaining properties should be manually specified per package:\n\n```xml\n\u003cPackageProjectUrl\u003ehttps://github.com/Reloaded-Project/Reloaded.Memory\u003c/PackageProjectUrl\u003e\n\u003cDescription\u003ePackage Description.\u003c/Description\u003e\n\u003cVersion\u003e1.0.0\u003c/Version\u003e\n\u003cProduct\u003eCool Library Name\u003c/Product\u003e\n```\n\n### Directory.Build.props\n\nFor any other projects, modify your `.csproj` to include `Directory.Build.props` as follows:\n\n```xml\n\u003cImport Project=\"../Reloaded.Project.Configurations/Directory.Build.props\" /\u003e\n```\n\n## Code Style\n\nThe code style is defined in the `.editorconfig` file in the root of the repo.\n\nTo apply this to your project, do the following:\n\n- Enable symlinks for your current project by running `git config core.symlinks true`.\n- Make symlink to `Reloaded.Project.Configurations/.editorconfig` in the root of your project.\n- In PowerShell you can\n  do `New-Item -Path \".editorconfig\" -ItemType SymbolicLink -Value \"Reloaded.Project.Configurations/.editorconfig\"` as\n  admin.\n- Or on Linux, you can do `ln -s \"Reloaded.Project.Configurations/.editorconfig\" \".editorconfig\"`.\n\nIf you are on Windows, you may need to enable `Developer Mode` to be allowed to make symlinks.\n\n### .solutionItems\n\nIn each project you should make a `.solutionItems` folder and add any useful files (as existing files) from the folder\nthe `.sln` is contained in; such that it's visible from the IDE. For example: `GitHub Actions`.\n\n## File Layout\n\nThe following is the expected file layout for your project:\n\n```\n- docs/\n- src/\n```\n\nThe `docs` folder should contain all documentation for your project (if present).  \nThe `src` folder should contain all source code for your project.\n\n## CI/CD Runs\n\nFor CI runs, you can use the following composite steps to set up the required tools and SDKs:\n\n```yaml\n- name: \"Setup Reloaded Library SDKs \u0026 Components\"\n- uses: Reloaded-Project/Reloaded.Project.Configurations/.github/actions/setup-sdks-components@main\n```\n\n```yaml\n# Showing default values, not all inputs are mandatory.\n# Refer to actual upload-coverage-packages file for descriptions.\n- name: \"Upload Codecov Coverage, Changelog \u0026 NuGet Packages\"\n- uses: Reloaded-Project/Reloaded.Project.Configurations/.github/actions/upload-coverage-packages@main\n  with:\n    code-coverage-path: './Coverage.xml'\n    changelog-path: './Changelog.md'\n    nupkg-glob: './src/*.nupkg'\n    nuget-key: ${{ secrets.NUGET_KEY }}\n    changelog-template: 'keepachangelog'\n    is-release: ${{ startsWith(github.ref, 'refs/tags/') }} # if 'true' publishes to GitHub Actions and NuGet\n```\n\nReplace `@main` with appropriate version tag if you want to pin to a specific version.\n\n### Cross Targeting CI/CD Runs\n\nUse the following template to run CI/CD for multiple target frameworks:\n\n```yaml\nname: Build, Test and Publish\non:\n  push:\n    branches: [ main ]\n    paths:\n      - \"src/**\"\n    tags:\n      - '*'\n  pull_request:\n    branches: [ main ]\n    paths:\n      - \"src/**\"\n  workflow_dispatch:\n\njobs:\n  build:\n    strategy:\n      matrix:\n        os:\n          - windows-latest\n          - ubuntu-latest\n          - macos-latest\n        targetFramework:\n          - net7.0\n          - net6.0\n          - net5.0\n          - netcoreapp3.1\n        platform:\n          - x64\n        include:\n          - os: windows-latest\n            targetFramework: net48\n            platform: x64\n          - os: windows-latest\n            targetFramework: net48\n            platform: x86\n          - os: windows-latest\n            targetFramework: net7.0\n            platform: x86\n          - os: windows-latest\n            targetFramework: net6.0\n            platform: x86\n          - os: windows-latest\n            targetFramework: net5.0\n            platform: x86\n          - os: windows-latest\n            targetFramework: netcoreapp3.1\n            platform: x86\n            \n    runs-on: ${{ matrix.os }}\n    steps:\n      - name: Checkout Code\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n          submodules: 'recursive'\n      - name: Setup Reloaded Library SDKs \u0026 Components\n        uses: Reloaded-Project/Reloaded.Project.Configurations/.github/actions/setup-sdks-components@main\n      - name: Build Library\n        run: dotnet build -c Release -f ${{ matrix.targetFramework }} ./src/Reloaded.\u003cXXX\u003e.Tests/Reloaded.\u003cXXX\u003e.Tests.csproj\n      - name: Run Tests\n        run: dotnet test -c Release -f ${{ matrix.targetFramework }} ./src/Reloaded.\u003cXXX\u003e.Tests/Reloaded.\u003cXXX\u003e.Tests.csproj --collect:\"XPlat Code Coverage;Format=opencover;\" --results-directory \"Coverage\"\n      - name: \"Upload Coverage\"\n        uses: actions/upload-artifact@v4\n        with:\n          name: coverage-${{ matrix.os }}-${{ matrix.targetFramework }}-${{ matrix.platform }}\n          path: Coverage/*/coverage.cobertura.xml\n  upload:\n    needs: build\n    runs-on: ubuntu-latest\n    steps:\n      - name: \"Checkout Code\"\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n          submodules: 'recursive'\n      - name: \"Setup Reloaded Library SDKs \u0026 Components\"\n        uses: Reloaded-Project/Reloaded.Project.Configurations/.github/actions/setup-sdks-components@main\n      - name: Build Library\n        run: dotnet build -c Release ./src\n      - name: \"Install ReportGenerator\"\n        run: dotnet tool install --global dotnet-reportgenerator-globaltool\n      - name: \"Download Coverage Artifacts\"\n        uses: actions/download-artifact@v4\n        with:\n            path: artifacts\n      - name: \"Merge Coverage Files\"\n        run: |\n            dotnet tool install --global dotnet-coverage\n            dotnet-coverage merge ./artifacts/*.cobertura.xml --recursive --output ./Cobertura.xml --output-format xml\n      - name: \"Upload Coverage \u0026 Packages\"\n        uses: Reloaded-Project/Reloaded.Project.Configurations/.github/actions/upload-coverage-packages@main\n        with:\n          code-coverage-path: './Cobertura.xml'\n          changelog-path: './Changelog.md'\n          nupkg-glob: './src/*.nupkg'\n          nuget-key: ${{ secrets.NUGET_KEY }}\n          changelog-template: 'keepachangelog'\n          is-release: ${{ startsWith(github.ref, 'refs/tags/') }}\n          release-tag: ${{ github.ref_name }}\n```\n\nThe required components for reporting coverage should already be there provided `NuGet.Build.props` is included as\ninstructed\nin your test project.\n\n## Documentation\n\nIf documentation is required, please follow the guidelines\nfor [Reloaded MkDocs Theme](https://reloaded-project.github.io/Reloaded.MkDocsMaterial.Themes.R2/Pages/)\non how to set up documentation.\n\n## Auto Fix Public API Analyzer Warnings\n\n!!! tip\n\n    [Rider does not have a way to apply Roslyn code fixes in a larger scope](https://youtrack.jetbrains.com/issue/RIDER-18372),\n    so working with [Public API Analyzer](https://github.com/dotnet/roslyn-analyzers/blob/main/src/PublicApiAnalyzers/PublicApiAnalyzers.Help.md) might be painful.\n\nTo work around this, a `Powershell` script `FixUndeclaredAPIs.ps1` is included in repo root.\nUse like this:\n\n```powershell\n.\\FixUndeclaredAPIs.ps1 ../Your.Project/Your.Project.csproj\n```\n\nIf you ever run into: `Could not load file or assembly 'Microsoft.CodeAnalysis, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified.`, remove source generator project dependency temporarily.\n\n## License\n\nThis repository is licensed under the LGPLv3 license; as per the license of the Reloaded Project (sans. Reloaded\nII/Reloaded3).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freloaded-project%2Freloaded.project.configurations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freloaded-project%2Freloaded.project.configurations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freloaded-project%2Freloaded.project.configurations/lists"}