I have found a way to build Windows container images without Docker - It doesn't use a Dockerfile though.
The way I got this to work is using crane from Google (https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md) which lets you append image layers to a base image. You can build Windows images on either Linux or Windows or inside of a container (Linux/Windows) - however, you'll need to build any artefacts (e.g. EXE, DLLs) on a Windows machine since this approach is using Crane to assemble a Windows container image on a Linux host (container).
Here is a quick PoC I did to prove it works (using Docker Desktop with Windows Container mode on my laptop):
dotnet --version
# 7.0.102