Skip to content

Instantly share code, notes, and snippets.

View RickStrahl's full-sized avatar

Rick Strahl RickStrahl

View GitHub Profile
@RickStrahl
RickStrahl / RunVsCodeFromDotnet.cs
Last active October 11, 2021 02:15
Demonstrates different ways to launch VS Code from C# code on Windows
void Main()
{
string file = @"C:\temp\test.md";
OpenFileInTextEditorRegistry(file);
//OpenEditorWithShellExecute(file);
//OpenWithProcessStartFailed(file);
}
@RickStrahl
RickStrahl / BitmapSourceToBitmap.cs
Last active October 11, 2021 02:21
BitmapSource To Bitmap Conversion
/// <summary>
/// Converts a bitmap source to a bitmap
/// Make sure to dispose the bitmap
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static Bitmap BitmapSourceToBitmap(BitmapSource source)
{
if (source == null)
return null;
@RickStrahl
RickStrahl / ColorConsole.cs
Last active March 30, 2024 16:00
Color Console - a simple class to add color to .NET Console commands more easily.
using System;
using System.Text;
using System.Text.RegularExpressions;
namespace MainColorConsole
{
class Program
{
static void Main(string[] args)
{
@RickStrahl
RickStrahl / Bash-ShellExecute.cs
Last active May 19, 2020 21:48
Trying to run `bash -c ""` command with Process.Start/ShellExecute
// works in LinqPad
void Main()
{
ExecuteCommandLine("wt"); // works - this is resolved
ExecuteCommandLine("bash"); // The system cannot find the file specified
// actual command line I'm trying to fire
ExecuteCommandLine("bash -c \"cd /mnt/c/projects/Test/jekyll/help; bundle exec jekyll serve\"");
}
@RickStrahl
RickStrahl / SimpleWebSocketServer-Usage.cs
Last active November 27, 2023 13:18
Simple Notification Only C# WebSocket Server
if (WebSocketServer == null)
{
WebSocketServer = new MarkdownMonster.WebSockets.WebSocketServer();
WebSocketServer.StartServer();
WebSocketServer.OnBinaryMessage = (bytes) =>
{
App.CommandArgs = new[] {"untitled.base64," + Convert.ToBase64String(bytes)};
mmApp.Model.Window.Dispatcher.InvokeAsync(() => mmApp.Model.Window.OpenFilesFromCommandLine());
};
}
@RickStrahl
RickStrahl / StatusDisplay.js
Last active November 27, 2023 13:18
Drop in JavaScript `status()` function that can be used from code to display debug status message on the bottom of the viewport for scenarios where console.log() is not available.
var statusTimeout = null;
var statusDefaultTimeout = 10000;
/*
* Generic Status Message for the bottom of the screen. Can be used to render debug output
* into the editor. Double click status bar to clear for appended output.
* status('Started');
* status('updated',true, 5000);
*/
function status(msg, append, timeout) {
@RickStrahl
RickStrahl / LegacyHostEnvironment.md
Last active February 25, 2020 07:27
Masking IWebHostEnvironment in .NET Core 2.x for operation like 3.x

IWebHostingEnvironment is not available in .NET Core 2.x, but in 3.x it's the recommended way to access the host environment with threat of IHostingEnvironment being removed in the future. This can be a problem in libraries that need to run both on 2.x and 3.x.

The following tries to mask the differences in a multi-targeted .NET Core project by creating a custom IWebHostEnvironment implementations that picks up values from IHostingEnvironment in 2.x.

#if NETCORE2
using Microsoft.Extensions.FileProviders;

namespace Microsoft.AspNetCore.Hosting
{
@RickStrahl
RickStrahl / AbsoluteUriUrlEncoding.cs
Last active November 27, 2023 13:02
UrlEncoding on local Urls producing double encoded Uri.AbsoluteUri values
void Main()
{
var part1 = new Uri("C:\\temp\\"); // double encodes when combining parts
var part2 = "assets/Image%20File.jpg";
var uri = new Uri(part1, part2);
uri.Dump();
uri.ToString().Dump(); // still encoded and shouldn't be

You can do simple date formatting with a library by using the Intl.DateTimeFormat JavaScript class.

MDN for DateTimeFormat

alert( formatDate(new Date()));
// Apr 11, 2019, 1:10:40 PM

function formatDate(date, locale) {
@RickStrahl
RickStrahl / GitHubRespositoryGraphQl.cs
Last active February 23, 2019 02:41
Recursively parse a Github Repository with GraphQL
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Octokit.GraphQL;
using Octokit.GraphQL.Model;
namespace GithubGraphQl
{