Common input and integrity validation routines for Visual Studio and other applications
Перейти к файлу
dependabot[bot] 93702f097e
Bump dotnet-coverage from 17.11.5 to 17.12.2 (#285)
Bumps [dotnet-coverage](https://github.com/microsoft/codecoverage) from 17.11.5 to 17.12.2.
- [Commits](https://github.com/microsoft/codecoverage/commits)

---
updated-dependencies:
- dependency-name: dotnet-coverage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 09:23:54 -06:00
.config Bump dotnet-coverage from 17.11.5 to 17.12.2 (#285) 2024-09-02 09:23:54 -06:00
.devcontainer Bump .NET SDK to 8.0.400 2024-08-14 06:32:24 -06:00
.github Skip codecov publishing without token 2024-07-10 10:19:19 -07:00
.vscode fix typo 2024-02-21 15:48:10 -07:00
azure-pipelines Update PublishCodeCoverageResults task to v2 2024-03-19 12:09:43 -06:00
src Add support for VB.NET projects 2024-06-28 12:17:08 -06:00
test Add xml header to msbuild files 2023-11-30 11:56:35 -07:00
tools Fix ARM64 detection on Windows Powershell 2023-04-14 20:54:34 -06:00
.editorconfig Enable CA2016: forward the CancellationToken 2024-07-17 22:28:10 -06:00
.gitattributes Use LF line endings for plist files 2023-02-16 13:02:03 -07:00
.gitignore Ignore .sarif files 2024-06-28 07:03:43 -06:00
.prettierrc.yaml Recommend prettier 2024-02-09 19:54:55 +00:00
Apply-Template.ps1 Fix template expansion 2024-06-28 13:54:20 -06:00
CONTRIBUTING.md Update doc links 2022-09-06 13:38:10 -06:00
Directory.Build.props Add support for VB.NET projects 2024-06-28 12:17:08 -06:00
Directory.Build.rsp Add Directory.Build.rsp file 2020-03-03 09:50:03 -07:00
Directory.Build.targets Add support for VB.NET projects 2024-06-28 12:17:08 -06:00
Directory.Packages.props Bump Nerdbank.GitVersioning from 3.6.141 to 3.6.143 (#283) 2024-09-02 09:23:41 -06:00
Expand-Template.cmd Add Expand-Template.cmd stub 2019-11-14 21:57:40 -07:00
Expand-Template.ps1 Fix template expansion 2024-06-28 13:54:20 -06:00
LICENSE Add script for proper expansion 2019-06-17 09:37:46 -06:00
Library.sln Add Directory.Packages.props as a solution item 2022-11-07 08:59:42 -07:00
README.md Update doc links 2022-09-06 13:38:10 -06:00
azure-pipelines.yml Switch from `MSBuildTreatWarningsAsErrors` to `-warnaserror` 2023-05-11 08:52:46 -06:00
azurepipelines-coverage.yml Post code coverage diff comments for AzDO PRs 2024-08-15 09:04:25 -06:00
global.json Bump .NET SDK to 8.0.400 2024-08-14 06:32:24 -06:00
init.cmd Fix up init.cmd to set env vars from .ps1 child process 2020-08-19 12:13:49 -06:00
init.ps1 Format init.ps1 2024-01-29 17:05:36 -07:00
nuget.config Drop test-tools as a nuget feed source 2023-02-27 15:23:59 -07:00
settings.VisualStudio.json Enable auto-format on save in VS and VS Code 2023-11-22 13:42:47 -07:00
strongname.snk Fix build and snk updates during template expansion 2020-07-24 08:46:23 -06:00
stylecop.json Shift to `using` directives outside the namespace 2022-05-05 21:07:12 -06:00
version.json Disable default, redundant NB.GV behavior 2021-11-02 06:13:29 -06:00

README.md

Your Library

An awesome template for your awesome library

NuGet package

Azure Pipelines status GitHub Actions status codecov

Features

  • Follow the best and simplest patterns of build, pack and test with dotnet CLI.
  • Init script that installs prerequisites and auth helpers, supporting both non-elevation and elevation modes.
  • Static analyzers: default Code Analysis and StyleCop
  • Read-only source tree (builds to top-level bin/obj folders)
  • Auto-versioning (via Nerdbank.GitVersioning)
  • Builds with a "pinned" .NET Core SDK to ensure reproducible builds across machines and across time.
  • Automatically pack the library and publish it as an artifact, and even push it to some NuGet feed for consumption.
  • Testing
    • Testing on .NET Framework, multiple .NET Core versions
    • Testing on Windows, Linux and OSX
    • Tests that crash or hang in Azure Pipelines automatically collect dumps and publish as a pipeline artifact for later investigation.
  • Cloud build support
    • YAML based build for long-term serviceability, and PR review opportunities for any changes.
    • Azure Pipelines and GitHub Action support
    • Emphasis on PowerShell scripts over reliance on tasks for a more locally reproducible build.
    • Code coverage published to Azure Pipelines
    • Code coverage published to codecov.io so GitHub PRs get code coverage results added as a PR comment

Consumption

Once you've expanded this template for your own use, you should run the Expand-Template.ps1 script to customize the template for your own project.

Further customize your repo by:

  1. Verify the license is suitable for your goal as it appears in the LICENSE and stylecop.json files and the Directory.Build.props file's PackageLicenseExpression property.
  2. Reset or replace the badges at the top of this file.

Maintaining your repo based on this template

The best way to keep your repo in sync with this template's evolving features and best practices is to periodically merge the template into your repo:

git checkout main          # your default branch
git pull                   # make sure you're at tip
git fetch libtemplate      # fetch latest Library.Template
git merge libtemplate/main

There will frequently be merge conflicts to work out, but they will be easier to resolve than running the Apply-Template.ps1 script every time, which simply blows away all your local changes with the latest from the template.

If you do not already have Library.Template history in your repo or have never completed a merge before, the above steps may produce errors. To get it working the first time, follow these steps:

git remote add libtemplate https://github.com/AArnott/Library.Template.git
git fetch libtemplate

If the git merge step described earlier still fails for you, you may need to artificially create your first merge. First, you must have a local clone of Library.Template on your box:

git clone https://github.com/AArnott/Library.Template.git

Make sure you have either main checked out in that clone, as appropriate to match. Use git rev-parse HEAD within the Library.Template repo and record the resulting commit as we'll use it later.

Run the Apply-Template.ps1 script, passing in the path to your own Library.Template-based repo. This will blow away most customizations you may have made to your repo's build authoring. You should carefully review all changes to your repo, staging those changes that you want to keep and reverting those that remove customizations you made.

Now it's time to commit your changes. We do this in a very low-level way in order to have git record this as a merge commit even though it didn't start as a merge. By doing this, git will allow future merges from libtemplate/main and only new changes will be brought down, which will be much easier than the Apply-Template.ps1 script you just ran. We create the merge commit with these commands:

  1. Be sure to have staged or reverted all the changes in your repo.
  2. Run git write-tree within your repo. This will print out a git tree hash.
  3. Run git commit-tree -p HEAD -p A B -m "Merged latest Library.Template", where A is the output from git rev-parse HEAD that you recorded earlier, and B is the output from your prior git write-tree command.
  4. Run git merge X where X is the output of the git commit-tree command.

IMPORTANT: If using a pull request to get your changes into your repo, you must merge your PR. If you squash your PR, history will be lost and you will have to repeatedly resolve the same merge conflicts at the next Library.Template update.

CAUTION: when merging this for the first time, a github-hosted repo may close issues in your repo with the same number as issues that this repo closed in git commit messages. Verify after completing your PR by visiting your github closed issues, sorted by recently updated, and reactivate any that were inadvertently closed by this merge. This shouldn't be a recurring issue because going forward, we will avoid referencing github issues with simple #123 syntax in this repo's history.

Congratulations. You're all done. Next time you want to sync to latest from Library.Template, you can the simple git merge steps given at the start of this section.