Skip to content

Instantly share code, notes, and snippets.

View jaredpar's full-sized avatar

Jared Parsons jaredpar

View GitHub Profile
@jaredpar
jaredpar / build-server-shutdown.md
Created January 14, 2025 01:46
Suggestion for how to better implement build-server shutdown

Shutting down our build servers

Motivation

The .NET build contains a number of long lived server processes: msbuild nodes, razor and roslyn. A requirement of the .NET SDK is for customers to be able to reliably shut down all servers created during any build. This is important for shutting down a build operation and ensuring that no files remain locked on disk.

This challenging because there is no easy answer to discovering which processes are build servers:

  • These are primarily .NET SDK process which means they all share the same process name: dotnet
  • These processes do not have a strict parent / child relationship with build commands. Several, like roslyn, live past the msbuild nodes that created them.
@jaredpar
jaredpar / line-reader.cs
Created January 9, 2025 01:25
Read a file line by line without allocating too muuch
public ref struct LineEnumerator(string filePath) : IDisposable
{
private static SearchValues<char> NewLines = SearchValues.Create('\r', '\n');
private StreamReader _reader = new StreamReader(filePath);
private char[] _array = ArrayPool<char>.Shared.Rent(1024);
// This represents the data read from the file that hasn't been processed yet. This will
// be a subset of _array
private Span<char> _buffer = Span<char>.Empty;
C:\Users\jaredpar\code\PublicBugs\CscAnal>REM passing Newtonsoft.Json.dll 13.0.0.0 works fine and results in the expected:
C:\Users\jaredpar\code\PublicBugs\CscAnal>REM arning CS8785: Generator 'Generator' failed to generate source. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'ArgumentNullException' with message 'Value cannot be null.
C:\Users\jaredpar\code\PublicBugs\CscAnal>REM Parameter name: source'
C:\Users\jaredpar\code\PublicBugs\CscAnal>REM
C:\Users\jaredpar\code\PublicBugs\CscAnal>REM Loaded modules:
using System.Reflection.Metadata;
using System.Reflection.PortableExecutable;
Console.WriteLine(IsNullableEnabledAtBuild(@"C:\Users\jaredpar\temp\console\bin\Debug\net7.0\console.dll", out var reason));
Console.WriteLine(reason);
static bool IsNullableEnabledAtBuild(string assemblyFilePath, out string? reason)
{
MetadataReaderProvider? pdbReaderProvider = null;
try
& 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.Build.Tasks.Console.exe' 'Recursive=True;CleanupAssetsForUnsupportedProjects=True;DisableParallel=False;Force=False;ForceEvaluate=False;HideWarningsAndErrors=False;IgnoreFailedSources=False;Interactive=False;NoCache=False;RestorePackagesConfig=False" "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\MSBuild.exe" "C:\Users\jaredpar\code\roslyn\Roslyn.sln" "ContinuousIntegrationBuild=False;TreatWarningsAsErrors=False;Configuration=Debug;RepoRoot=C:\Users\jaredpar\code\roslyn\;Rebuild=False;OfficialBuildId=;RunAnalyzersDuringBuild=False;BootstrapBuildPath=;EnableNgenOptimization=False;IbcOptimizationDataDir=C:\Users\jaredpar\code\roslyn\.o%5c;RestoreUseStaticGraphEvaluation=True;VisualStudioIbcDrop=;VisualStudioDropAccessToken=;IsNpmPackable=True;DeployExtension=false;VersionsPropsPath=C:\Users\jaredpar\code\roslyn\eng\Versions.props;VCTargetsPath=C:\Program Files\Microsoft V
This is gonna be complicated.
1. I assume you are using an hp desktop? I think thats what the company gets ppl nowadays
2. As sam says, you must disable bitlocker before mucking around
with that out of the way you need to ensure you check all these boxes
1. you have a TPU installed on your machine and its enabled:
- Turn on the computer and press the f10 key to start to the BIOS setup menu.
- On the Security tab, check whether your TPM Device status is Hidden.
using System.Security.Claims;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddAuthentication(o =>
{
o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Running;
var summary = BenchmarkRunner.Run(typeof(DelegateInvocationBenchmark).Assembly);
[SimpleJob(RuntimeMoniker.Net70)]
[SimpleJob(RuntimeMoniker.Net472)]
public class DelegateInvocationBenchmark
{
Imports System
Module Program
Sub Main()
Dim e = ConversionKind.DelegateRelaxationLevelNone
Console.WriteLine(e.ToString())
End Sub
End Module
<Flags()>