{"id":21281755,"url":"https://github.com/prophetlamb/loggermessagegen","last_synced_at":"2025-03-15T14:22:01.692Z","repository":{"id":100672624,"uuid":"491785486","full_name":"ProphetLamb/LoggerMessageGen","owner":"ProphetLamb","description":"Simplifies implementing LoggerMessage extensions with attributes using source generation","archived":false,"fork":false,"pushed_at":"2022-05-18T08:22:07.000Z","size":41,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-22T04:27:27.072Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ProphetLamb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-05-13T06:39:04.000Z","updated_at":"2023-08-26T01:44:38.000Z","dependencies_parsed_at":"2023-05-16T17:15:37.221Z","dependency_job_id":null,"html_url":"https://github.com/ProphetLamb/LoggerMessageGen","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"ProphetLamb/CSharpMultiLibrary","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProphetLamb%2FLoggerMessageGen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProphetLamb%2FLoggerMessageGen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProphetLamb%2FLoggerMessageGen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProphetLamb%2FLoggerMessageGen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProphetLamb","download_url":"https://codeload.github.com/ProphetLamb/LoggerMessageGen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243740096,"owners_count":20340203,"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-11-21T10:50:40.350Z","updated_at":"2025-03-15T14:22:01.687Z","avatar_url":"https://github.com/ProphetLamb.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multi Library Template\n\nThis is my best effort at creating a template for solutions that contain multiple projects, especially for libraries.\n\n## Tech Stack\n\n| Purpose        | Technology                                                        |\n| -------------- | ----------------------------------------------------------------- |\n| Source control | [GitHub](https://github.com)                                      |\n| CI/CD          | [AppVeyor](https://ci.appveyor.com/)                              |\n| Documentation  | [XMLDoc2Markdown](https://charlesdevandiere.github.io/xmldoc2md/) |\n| Test driver    | [NUnit](https://docs.nunit.org/)                                  |\n| Test converge  | [coveralls](https://coveralls.io)                                 |\n\n## Getting started\n\nSetting up your project in 10 minutes max.\n\n### Setup environment\n\n1. Create a [GitHub](https://github.com) repository and clone it\n2. Add the repository to [AppVeyor](https://ci.appveyor.com/)\n3. Add the repository to [coveralls](https://coveralls.io)\n4. Replace [variables](#variables) with your specific information\n5. Confirm your code-style in the `.editorconfig`\n\nLastly replace this `README.md` with your own.\n\n### Variables\n\nThere are a few variables denoted by the `+++` prefix. Search all project files for this prefix.\n\nThe following files contain variables `appveyor.yml`, `src/AssemblyInfo.cs` \u0026 `src/Directory.Build.props`\n\n| Variable   | Explanation                                                 |\n| ---------- | ----------------------------------------------------------- |\n| +++PROJECT | The root name of your project. e.g. `Microsoft` or `System` |\n| +++YOU     | The GitHub name of the owner of the project                 |\n| +++VALUE   | Some specific value explained in the following comment      |\n\n### Include documentation\n\n```pwsh\n./scripts/doc.ps1\n```\n\nThe script generates the markdown documentation, then reference it in the `README.md`.\n\n```md\n`Your.Project` [documentation](doc/Your.Project/index.md)\n```\n\nAutomatically update the documentation using the following github workflow\n```yml\non:\n  push:\n    branches:\n      - /^rc/\n  workflow_dispatch:\n\nname: Update Documentation\n\njobs:\n  update:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n        with:\n          fetch-depth: 0\n\n      - name: Update documentation\n        shell: pwsh\n        run: scripts/doc.ps1\n      - uses: stefanzweifel/git-auto-commit-action@v4\n        with:\n          commit_message: Update documentation\n          file_pattern: doc/*\n\n```\n\n### Solution \u0026 Projects\n\nFirst add a solution in the repository root.\n```pwsh\ndotnet new sln -n \"Your\"\n```\n\nAdd a projects in `src/` and `tests/` and define the missing nuget and assembly information, see [more on project files](#csproj).\n```pwsh\ndotnet new classlib -n \"Your.Project\"\n```\nTestadapters similar packages are already included in [Build.props](tests/Directory.Build.props).\n\n## Workflow\n\nThis template assumes that there are three kinds of branches\n1. `release`: Branches with this prefix trigger deploy scripts. Only one commit should exist per branch, and it should have a tag.\n2. `rc`: Branches with this prefix update the doc. If they are sound, a `release` branch may be created.\n3. development: Any other branch with none of the prefixes above.\n\n## Badges\n\n**The most fancy badges and build charts at [buildstats.info](https://buildstats.info)**\n\n![NuGet Badge](https://buildstats.info/nuget/Rustic.Memory)\n\n![Build history](https://buildstats.info/appveyor/chart/ProphetLamb/rustic-sharp/?branch=master)\n\n**Happy badges at [shields.io](shields.io)**\n\n![AppVeyor tests](https://img.shields.io/appveyor/tests/ProphetLamb/rustic-sharp)\n\n\n## Files\n\n### Release notes\n\nContains the release notes of each project. Releases are usually separated by `---`. The file is automatically imported into the project package using the `Build.props`.\n\n### `Build.props`\n\nThis template uses `Directory.Build.props` to reduce the redundancy in `.csproj` project files. There are distinct `props` for both `src/` and `tests/` where assembly \u0026 [nuget](nuget.org) information is defined, as well as common packages are included.\n\nThis allows new projects to be added using the [dotnet cli](https://docs.microsoft.com/en-us/dotnet/core/tools/) with minimal manual intervention.\n\n#### License\n\nTo change the license to a file based replace `PackageLicenseExpression` with\n```xml\n    \u003cPackageLicenseFile\u003e../../LICENSE-MIT\u003c/PackageLicenseFile\u003e\n```\n\n### Scripts\n\nThese `scripts/` are usually used by the CI, but can be run locally as well.\n\n- `tooling.ps1`: Installs required tools globally, requires the [choco](https://chocolatey.org/) package manager. Can be adopted to work with linux, by [installing](https://docs.microsoft.com/en-us/powershell/scripting/install/install-debian) powershell first\n- `test.ps1`: Executes all test projects in `tests/`, collects code coverage, and uploads it to coveralls.\n- `doc.ps1`: Generates markdown documentation from the `xml` documentation, generated by the build project, in the `doc/` directory. One subdirectory is created per project with the same name.\n\n### `.gitignore`\n\nThe gitignore is created by [topal gitignore](https://www.toptal.com/developers/gitignore/api/visualstudio,visualstudiocode,rider) then modified to work with [VisualStudio](https://visualstudio.microsoft.com/), [JetBrains Rider](https://www.jetbrains.com/rider/) \u0026 [VSCode](https://code.visualstudio.com/).\n\n### `.editorconfig`\n\nThe [EditorConfig](https://editorconfig.org) is a bit opinionated, so you might want to change some things. There is plugin support for all moderns IDEs and VIM.\n\n### `.csproj`\n\nTake a look at the [example project](src/Your.Project/Your.Project.csproj) and [source generator example](src/Your.Generator/Your.Generator.csproj).\n\nTags from the [Directory.Build.props](src/Directory.Build.props) are included in every `.csproj` in sub-directories. Duplicates are overwritten.\n\nDocumentation on project properties and stuff:\n\n- [Target Frameworks](https://docs.microsoft.com/en-us/dotnet/standard/frameworks)\n- [MSBuild Props](https://docs.microsoft.com/en-us/visualstudio/msbuild/common-msbuild-project-properties)\n- [MSBuild Tasks](https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-task-reference)\n- [Nuget Props](https://docs.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#nuget-metadata-properties)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprophetlamb%2Floggermessagegen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprophetlamb%2Floggermessagegen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprophetlamb%2Floggermessagegen/lists"}