Towel
Throw in the towel.
Install / Use
/learn @ZacharyPatten/TowelREADME
<p align="center"> <a href="https://github.com/ZacharyPatten/Towel"><img src="https://img.shields.io/badge/github-repo-%2324292e?logo=github" title="Go To Github Repo"></a> <a href="https://docs.microsoft.com/en-us/dotnet/csharp/"><img src="https://img.shields.io/badge/language-C%23-%23178600" title="Go To C# Documentation"></a> <a href="https://dotnet.microsoft.com/download"><img src="https://img.shields.io/badge/dynamic/xml?color=%23512bd4&label=target&query=%2F%2FTargetFramework%5B1%5D&url=https%3A%2F%2Fraw.githubusercontent.com%2FZacharyPatten%2FTowel%2Fmain%2FSources%2FTowel%2FTowel.csproj&logo=.net" title="Go To .NET Download"></a> <a href="https://www.nuget.org/packages/Towel"><img src="https://img.shields.io/nuget/v/Towel.svg?logo=nuget" title="Go To Nuget Package" /></a> <a href="https://zacharypatten.github.io/Towel/index.html"><img src="https://github.com/ZacharyPatten/Towel/blob/main/.github/Resources/docfx-badge.svg?raw=true" title="Go To Docfx Documentation"></a> <a href="https://github.com/ZacharyPatten/Towel/actions/workflows/Continuous%20Integration.yml"><img src="https://github.com/ZacharyPatten/Towel/actions/workflows/Continuous%20Integration.yml/badge.svg" title="Go To Action"></a> <a href="https://zacharypatten.github.io/Towel/coveragereport/index.html"><img src="https://img.shields.io/badge/dynamic/xml?color=yellow&label=coverage&query=%2F%2Fcoverage%5B1%5D%2F%40line-rate-percentage&url=https%3A%2F%2Fraw.githubusercontent.com%2FZacharyPatten%2FTowel%2Fgh-pages%2Fcoveragereport%2Fcoverage.xml" title="Go Test Coverage Report" /></a> <a href="https://discord.gg/4XbQbwF"><img src="https://img.shields.io/discord/557244925712924684?logo=discord&logoColor=ffffff&color=7389D8" title="Go To Discord Server" /></a> <a href="https://github.com/ZacharyPatten/Towel/blob/main/License.md"><img src="https://img.shields.io/badge/license-MIT-green.svg" title="Go To License" /></a> </p>"It's a tough galaxy. If you want to survive, you've gotta know... where your towel is." - Ford Prefect
Note This project has a goal of keeping up-to-date on modern coding practices rather than maintaining backwards compatibility such as targetting the latest non-preview version of .NET and embracing favorable breaking changes ("Semantic Versioning" is not being respected at this time).
Getting Started
<details> <summary> Run The Included Examples <sub>[Expand]</sub> </summary> <p></p> </details> <details> <summary> Use Towel In Your .NET Projects <sub>[Expand]</sub> </summary> <p>Towel has Examples included in this repository.
Download this repository and unzip the contents.
There are no custom build processes. Towel should build with any standard .NET build process, but one of the following is recommended:
<details> <summary> Visual Studio <sub>[Expand]</sub> </summary> <p></p> </details> <details> <summary> Visual Studio Code <sub>[Expand]</sub> </summary> <p>
Install Visual Studio if not already installed.
Open the <sub><a href="Towel.sln"><img src="https://raw.githubusercontent.com/ZacharyPatten/Towel/main/.github/Resources/file-16.svg" title="File"></a></sub>
Towel.slnfile in Visual Studio.</p> </details>
Install the .NET SDK if not already installed.
Install Visual Studio Code if not already installed.
Open the <sub><a href="#"><img src="https://raw.githubusercontent.com/ZacharyPatten/Towel/main/.github/Resources/file-directory-16.svg" title="Directory"></a></sub>
root folderof the repository in Visual Studio Code.The following files are included in the repository:
.vscode/extensions.json<sub>recommends Vistual Studio Code extension dependencies</sub>.vscode/launch.json<sub>includes the configurations for debugging the examples</sub>.vscode/settings.json<sub>automatically applies settings to the workspace</sub>.vscode/tasks.json<sub>includes the commands to build the projects</sub>Visual Studio Code Extensions (will be prompted to install these when you open the folder):
ms-vscode.csharp<sub>C# support</sub>formulahendry.dotnet-test-explorer(optional) <sub>MSTest unit testing support</sub>aisoftware.tt-processor(optional) <sub>T4 Template support</sub>zbecknell.t4-support(optional) <sub>T4 Template syntax highlighting</sub>
</p> </details> <details> <summary> View Documentation <sub>[Expand]</sub> </summary> <p>
Your project must target the same or newer version of .NET as Towel. See this documentation on how to check the current target of your project. Towel targets the following version of .NET: <sub><sub><a href="https://dotnet.microsoft.com/download"><img src="https://img.shields.io/badge/dynamic/xml?color=%23512bd4&label=target&query=%2F%2FTargetFramework%5B1%5D&url=https%3A%2F%2Fraw.githubusercontent.com%2FZacharyPatten%2FTowel%2Fmain%2FSources%2FTowel%2FTowel.csproj&logo=.net" title="Go To .NET Download"></a></sub></sub>
Towel has a nuget package: <sub><sub><a href="https://www.nuget.org/packages/Towel"><img src="https://img.shields.io/nuget/v/Towel.svg?logo=nuget" title="Go To Nuget Package"/></a></sub></sub><br/>Instructions on how to reference the package are included on nuget.org (click the badge).
If you use Towel and would be willing to show it, here is a badge you can copy-paste into your readme: <sub><sub><a href="#"><img src="https://github.com/ZacharyPatten/Towel/blob/main/.github/Resources/UsingTowel.svg?raw=true" title="Go To Towel"></a></sub></sub>
<a href="https://github.com/ZacharyPatten/Towel"><img src="https://github.com/ZacharyPatten/Towel/blob/main/.github/Resources/UsingTowel.svg?raw=true" title="Go To Towel"></a>Share your work. If you use Towel in one of your projects we want to hear about it. :)
- Change Log: https://github.com/ZacharyPatten/Towel/releases
- docfx generated API documentation reference: <sub><sub><a href="https://zacharypatten.github.io/Towel/index.html"><img src="https://github.com/ZacharyPatten/Towel/blob/main/.github/Resources/docfx-badge.svg?raw=true" title="Go To Docfx Documentation"></a></sub></sub>
- Coverlet + ReportGenerator generated test coverage report: <sub><sub><a href="https://zacharypatten.github.io/Towel/coveragereport/index.html"><img src="https://img.shields.io/badge/dynamic/xml?color=yellow&label=coverage&query=%2F%2Fcoverage%5B1%5D%2F%40line-rate-percentage&url=https%3A%2F%2Fraw.githubusercontent.com%2FZacharyPatten%2FTowel%2Fgh-pages%2Fcoveragereport%2Fcoverage.xml" title="Go Test Coverage Report"/></a></sub></sub>
- BenchmarkDotNet generated benchmarking: https://zacharypatten.github.io/Towel/articles/benchmarks.html
Relevant Articles:
- MSDN Accessing XML Documentation Via Reflection</br>
- Beginner's Guide To Console Input In C#</br>
- Generating Unique Random Data</br>
- Random Generation (with efficient exclusions)</br>
- Omnitree</br>
- C# Generic Math</br>
File Structure Overview (except for <sub><a href="https://github.com/ZacharyPatten/Towel/tree/gh-pages"><img src="https://raw.githubusercontent.com/ZacharyPatten/Towel/main/.github/Resources/git-branch-16.svg" title="Branch"></a></sub>
gh-pages):
- <sub><a href=".github"><img src="https://raw.githubusercontent.com/ZacharyPatten/Towel/main/.github/Resources/file-directory-16.svg" title="Directory"></a></sub>
.github<sub>content regarding the GitHub repoistory.</sub>
- <sub><a href=".github/ISSUE_TEMPLATE"><img src="https://raw.githubusercontent.com/ZacharyPatten/Towel/main/.github/Resources/file-directory-16.svg" title="Directory"></a></sub>
ISSUE_TEMPLATE<sub>templates for issue submissions to the GitHub repository</sub>- <sub><a href=".github/Resources"><img src="https://raw.githubusercontent.com/ZacharyPatten/Towel/main/.github/Resources/file-directory-16.svg" title="Directory"></a></sub>
Resources<sub>resources such as image files</sub>- <sub><a href=".github/workflows"><img src="https://raw.githubusercontent.com/ZacharyPatten/Towel/main/.github/Resources/file-directory-16.svg" title="Directory"></a></sub>
workflows<sub>GitHub Actions workflows</sub>
- <sub><a href=".github/workflows/Continuous Integration.yml"><img src="https://raw.githubusercontent.com/ZacharyPatten/Towel/main/.github/Resources/play-16.svg"
