Skip to content

Instantly share code, notes, and snippets.

View peteraritchie's full-sized avatar
😖

Peter Ritchie peteraritchie

😖
View GitHub Profile
@peteraritchie
peteraritchie / EntityEntryExtensions.cs
Last active September 16, 2026 20:51
Extension method to get #entity-framework shadow property entry using the try pattern in #csharp
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore.ChangeTracking;
namespace Common;
public static class EntityEntryExtensions
{
extension<TEntity>(EntityEntry<TEntity> entityEntry) where TEntity : class
{
@peteraritchie
peteraritchie / GetDatabaseTables.cs
Last active September 12, 2026 15:44
Get Sqlite database tables via a `DbContext` object #dotnet #csharp
public static Dictionary<string, string> GetDatabaseTables(DbContext db)
{
Dictionary<string, string> tablesDictionary = [];
var connection = db.Database.GetDbConnection();
using var command = connection.CreateCommand();
command.CommandText = "SELECT name, sql from sqlite_schema where type='table';";
using var reader = command.ExecuteReader();
while (reader.Read())
{
var entityName = reader.GetString(0);
@peteraritchie
peteraritchie / Remove-ObjBin.ps1
Created August 27, 2026 16:40
This script searches for all 'bin' and 'obj' directories under the given path and deletes them. #VisualStudio
<#PSScriptInfo
.VERSION 1.0.0
.AUTHOR Peter Ritchie
.COMPANYNAME
.COPYRIGHT
.TAGS Visual Studio, dotnet
@peteraritchie
peteraritchie / Remove-TestResults.ps1
Created August 26, 2026 18:22
Powershell script to remove all '.trx' and '.coverage' files from 'TestResults' directories and delete the directories if they are empty
<#PSScriptInfo
.VERSION 1.0.0
.AUTHOR Peter Ritchie
.COMPANYNAME
.COPYRIGHT
.TAGS
<#
.SYNOPSIS
Gets the build validation policies for repositories associated with solution files in the specified path.
.DESCRIPTION
Retrieves and lists the build validation branch policies for repositories that correspond to solution files found in the specified path.
.PARAMETER Path
Specifies the path to search for solution files.
#>
[CmdletBinding()]
param(
@peteraritchie
peteraritchie / SKILL.md
Created August 20, 2026 17:28
Github Copilot generated skill to update a test project to use MsTest.Sdk
name migrating-to-mstest-sdk
description Migrates .NET test projects from the traditional MSTest setup (Microsoft.NET.Test.Sdk + MSTest.TestAdapter + MSTest.TestFramework) to MSTest.Sdk, the modern project SDK approach that bundles all testing infrastructure. Use when upgrading test projects, modernizing MSTest configuration, adopting MSTest Platform (MTP), or when users ask to "switch to MSTest.Sdk", "use latest MSTest", "migrate to MTP", or "update test project to MSTest SDK". Also relevant during .NET version upgrades when test projects are being modernized.
metadata
traits discovery
test|mstest|sdk|migration|dotnet
lazy

Migrating to MSTest.Sdk

@peteraritchie
peteraritchie / Add-XmlElement.ps1
Created August 14, 2026 15:55
A PowerShell script to add an XML element to a specified XPath in an XML file.
<#
.SYNOPSIS
Adds an XML element to a specified XPath in an XML file.
.DESCRIPTION
This script reads an XML file, adds a specified XML element to a given XPath within that file.
It can optionally overwrite existing elements if the -Force parameter is specified.
.PARAMETER Path
The path to the XML file.
@peteraritchie
peteraritchie / Add-JsonObject.ps1
Created August 14, 2026 15:20
A PowerShell script to add a JSON object to a specified path within a JSON file.
<#
.SYNOPSIS
Adds a JSON object to a specified path within a JSON file.
.DESCRIPTION
This script reads a JSON file, adds a specified JSON object to a given path within that file, and outputs the modified JSON.
.PARAMETER Path
The path to the JSON file.
@peteraritchie
peteraritchie / FakeFeatureManagement.cs
Created August 2, 2026 15:25
A very simple `IFeatureManagement` fake. #dotnet #csharp
using System.Collections;
using Microsoft.FeatureManagement;
namespace Pri.ProductivityUtilities;
public class FakeFeatureManager : IFeatureManager, IEnumerable<KeyValuePair<string, bool>>
{
Dictionary<string, bool> features = new();
@peteraritchie
peteraritchie / ValuesCollection.cs
Created July 31, 2026 16:37
A .NET collection that wraps another to provide value quality (value semantics) for use in records so that they may also provide value quality (value semantics)/
using System.Collections;
namespace Pri.ProductivityUtilities;
/// <summary>
/// Represents a collection of items that compares equality based on the values of its elements,
/// rather than reference equality. This collection is read-only and ensures that two instances
/// with the same content are considered equal.
/// </summary>
/// <typeparam name="T">