Creating Dual Use Windows GUI and Console Applications

Building a tool that provides both a rich Windows GUI and a functional CLI from a single executable presents unique challenges due to how Windows handles subsystem types. This post explores three approaches for dual-mode apps: attaching to consoles from a GUI, launching UIs from a console app, and creating separate specialized EXEs. I’ll share the "clean as possible" workarounds for console jank and window flashing used in my own production tools.

Alvin Ashcraft's Morning Dew

A daily link blog for developers, focused on .NET, Windows, and modern web development.

Alvin Ashcraft's Morning Dew

Dev Leader's Nick Cosentino (@devleader) writes up a great guide to Entity Framework Core optimization for .NET 10 in a structured fashion. From simple-to-implement read performance enhancements, to deep dives that include bulk operations, connection pooling, caching, parameterized queries, logging using Serilog, and many others.

"EF Core Performance Best Practices in .NET 10"

https://www.devleader.ca/2026/06/23/ef-core-performance-best-practices-in-net-10

#dotnet #csharp #efcore #orm #databases #sql #programming #optimization

I left my pet #Csharp #dotnet #ActivityPub project running overnight to see how it would handle HEAD requests overnight from UpTimeRobot (it did great).

I check the logs this morning and discover OMG what are all these IP addresses just hitting all the endpoints and static pages? cool, its a crawler! zOMG someone is interested in my thing!

<lookup the IP>

Its #Anthropic.

Are you into APIs and SDKs?

Are you in an expert in C# and Rust? Do you have a Git commit history to prove it?

@Interledger is looking to fund adding Rust support in Kiota—the OpenAPI-based SDK generator used by Microsoft and GitHub.

(Boosts welcomed!)

https://interledger.org/grant/open-payments-sdk?ref=activitypub

#Kiota #CSharp #Rust #RustLang #FOSSFunding #OpenAPI

Open Payments SDK grant program

The Open Payments SDK Grant Program offers $5,000–$50,000 in funding for projects that improve the developer experience of integrating Open Payments into applications and e-commerce platforms. Focused on SDK generation from the OpenAPI specification using tools like Kiota, this program supports scalable, consistent API integrations that reduce technical complexity and accelerate adoption of open payments technology.

Interledger Foundation

So, I took a C# application that syncs accounts from our database over to Salesforce and turned it into a SQL Job. Went from taking over an hour to run, to now less than 30 minutes to complete.

I guess that’s a win!

#csharp #sql #salesforce

Azure SDK Release (May 2026)

Azure SDK releases every month. In this post, you'll find this month's highlights and release notes.

Azure SDK Blog
Alvin Ashcraft's Morning Dew

A daily link blog for developers, focused on .NET, Windows, and modern web development.

Alvin Ashcraft's Morning Dew
Installing .NET 10.0 on Ubuntu proot-distro with Termux on Android

.NET 10.0 is a new version of the modern .NET framework that brings several improvements across different areas of the software development kit, including runtime improvements (JIT inlining improve…

Aptivi

Installing .NET 10.0 on Ubuntu proot-distro with Termux on Android

.NET 10.0 is a new version of the modern .NET framework that brings several improvements across different areas of the software development kit, including runtime improvements (JIT inlining improvements, method devirtualization, and so on), new APIs in .NET libraries (new JSON deserialization options, post-quantum cryptography support, and so on), and many more improvements.

Normally, any .NET applications that are built for a specific platform can be run normally, such as Android applications made with MAUI. However, what if you’ve planned to run a CLI .NET application on Android? Or an application for computers? Termux can provide you with a solution.

Recent improvements to Termux involved changing how proot-distro downloads the distribution containers so that it utilizes Docker Hub to download the necessary assets and configure them to be usable. Follow the below steps to install .NET 10.0 with Ubuntu proot-distro.

  • Install Termux from F-Droid.
    • For Samsung devices, you might want to turn off the Auto Blocker feature so that you can install it. You can also use the Play Store version, but we haven’t tested it yet, and your mileage may vary.
  • Open Termux, and let it configure itself. After that, upgrade all packages using pkg upgrade.
    • If you’re prompted to choose whether to keep your own changes or to install the package-supplied version, just press ENTER on your phone’s keyboard.
  • Once all necessary upgrades are complete, you can now install the proot-distro program using pkg install proot-distro.
  • Afterwards, install the Ubuntu 26.04 Docker container with proot-distro install ubuntu:26.04.
    • It might take a while, depending on your internet connection.
  • Now, you can login to the container with proot-distro login ubuntu.
  • Before installing any packages in the Ubuntu proot environment, you’ll have to check to see if there are any package updates with apt update.
    • If there are any, run apt dist-upgrade to upgrade all packages.
  • Install .NET SDK 10.0 or .NET Runtime 10.0, depending on your use case.
    • If you want to build .NET applications, install the SDK using apt install dotnet-sdk-10.0.
    • If you want to just run .NET applications, install the runtime using apt install dotnet-runtime-10.0.
  • If you’ve installed the SDK, verify that the application actually builds.
    • Create a new directory, such as test (mkdir test), and change the current directory to it (cd test)
    • Create a new .NET console project with dotnet new console --use-program-main.
    • Verify that it actually builds using dotnet run.
  • However, as of now, you may be running into an issue where the building stage of any application may fail with error messages that are similar to this:

    GC heap initialization failed with error 0x8007000E Failed to create CoreCLR, HRESULT: 0x8007000E

    In this case, you’ll have to add an environment variable that changes the GC heap hard limit value to an acceptable value so that you can build and run applications on Android devices. In order to do this temporarily, append the environment variable before the command, such as this:

    $ DOTNET_GCHeapHardLimit=1C0000000 dotnet build

    If this works, you can add a line that exports this environment variable to your ~/.profile like this:

    $ echo "DOTNET_GCHeapHardLimit=1C0000000" >> ~/.profile $ . ~/.profile

    Once done, exit and re-enter your proot environment, and you should be able to build and run .NET applications.

    #NET #2604 #2604LTS #Android #C #csharp #dotnet #news #oneUi #Proot #ProotDistro #Samsung #smartphone #Tech #Technology #Termux #Ubuntu #Ubuntu2604 #Ubuntu2604LTS #Ubuntu2604LTSResolute #Ubuntu2604LTSResoluteRaccoon #Ubuntu2604Resolute #Ubuntu2604ResoluteRaccoon #ubuntuProot #update