diff --git a/elixirkit/demo/rel/dotnet/Demo.csproj b/elixirkit/demo/rel/dotnet/Demo.csproj
index cff354182..36d9880c5 100644
--- a/elixirkit/demo/rel/dotnet/Demo.csproj
+++ b/elixirkit/demo/rel/dotnet/Demo.csproj
@@ -11,4 +11,10 @@
+
+
+
diff --git a/elixirkit/demo/rel/dotnet/run.sh b/elixirkit/demo/rel/dotnet/run.sh
index 641e8eecb..3654d266d 100755
--- a/elixirkit/demo/rel/dotnet/run.sh
+++ b/elixirkit/demo/rel/dotnet/run.sh
@@ -1,7 +1,4 @@
#!/bin/sh
set -euo pipefail
-dotnet build
-target_dir="$PWD/bin/Debug/net6.0"
-(cd ../.. && mix release --overwrite --path=${target_dir}/rel)
-dotnet run --no-build
+dotnet run
\ No newline at end of file
diff --git a/elixirkit/demo/rel/winforms/Demo.csproj b/elixirkit/demo/rel/winforms/Demo.csproj
index 35cc8f1dd..c5dacb1f2 100644
--- a/elixirkit/demo/rel/winforms/Demo.csproj
+++ b/elixirkit/demo/rel/winforms/Demo.csproj
@@ -14,4 +14,11 @@
+
+
+
+
diff --git a/elixirkit/demo/rel/winforms/Demo.sln b/elixirkit/demo/rel/winforms/Demo.sln
new file mode 100644
index 000000000..4171a9817
--- /dev/null
+++ b/elixirkit/demo/rel/winforms/Demo.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.7.34202.233
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo", "Demo.csproj", "{0798DC29-008F-4B16-A7C8-44BAF43B2E7A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElixirKit", "..\..\..\elixirkit_dotnet\ElixirKit.csproj", "{74A01265-5E49-48FC-91E9-182DE46B1B81}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {0798DC29-008F-4B16-A7C8-44BAF43B2E7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0798DC29-008F-4B16-A7C8-44BAF43B2E7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0798DC29-008F-4B16-A7C8-44BAF43B2E7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0798DC29-008F-4B16-A7C8-44BAF43B2E7A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {74A01265-5E49-48FC-91E9-182DE46B1B81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {74A01265-5E49-48FC-91E9-182DE46B1B81}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {74A01265-5E49-48FC-91E9-182DE46B1B81}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {74A01265-5E49-48FC-91E9-182DE46B1B81}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {BE840FB5-BDBF-4826-A778-5C6787E42BCE}
+ EndGlobalSection
+EndGlobal
diff --git a/elixirkit/demo/rel/winforms/run.sh b/elixirkit/demo/rel/winforms/run.sh
index 5cc938a51..0eb971002 100644
--- a/elixirkit/demo/rel/winforms/run.sh
+++ b/elixirkit/demo/rel/winforms/run.sh
@@ -1,7 +1,4 @@
-#!/bin/sh
+#!/bin/bash
set -euo pipefail
-dotnet build
-target_dir="$PWD/bin/Debug/net6.0-windows"
-(cd ../.. && mix release --overwrite --path=${target_dir}/rel)
-dotnet run --no-build
+dotnet run
\ No newline at end of file
diff --git a/rel/app/windows/Livebook.csproj b/rel/app/windows/Livebook.csproj
index e2a8cb3c5..60eb6ffc6 100644
--- a/rel/app/windows/Livebook.csproj
+++ b/rel/app/windows/Livebook.csproj
@@ -20,4 +20,10 @@
+
+
+
diff --git a/rel/app/windows/build.sh b/rel/app/windows/build.sh
deleted file mode 100644
index d8eff2bb3..000000000
--- a/rel/app/windows/build.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-set -euo pipefail
-
-. `dirname $0`/env.sh
-
-rm -rf $target_dir
-dotnet build Livebook.csproj $build_args
-
-(
- cd ../../..
- mix release app --overwrite --path=${target_dir}/rel
-)
diff --git a/rel/app/windows/build_installer.sh b/rel/app/windows/build_installer.sh
index 6c9c91143..e566cda92 100755
--- a/rel/app/windows/build_installer.sh
+++ b/rel/app/windows/build_installer.sh
@@ -1,15 +1,7 @@
-#!/bin/sh
+#!/bin/bash
set -euo pipefail
-. `dirname $0`/env.sh
-
-rm -rf $target_dir
-dotnet publish Livebook.csproj $build_args
-
-(
- cd ../../..
- mix release app --overwrite --path=${target_dir}/rel
-)
+dotnet publish
vc_redist_path="bin/vc_redist.x64.exe"
if [ ! -f $vc_redist_path ]; then
diff --git a/rel/app/windows/env.sh b/rel/app/windows/env.sh
deleted file mode 100644
index 8c35f1381..000000000
--- a/rel/app/windows/env.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-set -euo pipefail
-
-export MIX_ENV=prod
-export MIX_TARGET=app
-export ELIXIRKIT_APP_NAME=Livebook
-export ELIXIRKIT_PROJECT_DIR=$PWD/../../..
-export ELIXIRKIT_RELEASE_NAME=app
-
-configuration=${ELIXIRKIT_CONFIGURATION:-Debug}
-target_dir="$PWD/bin/${ELIXIRKIT_APP_NAME}-$configuration"
-build_args="--configuration $configuration"
diff --git a/rel/app/windows/run.sh b/rel/app/windows/run.sh
index 8981c4543..f32847dcb 100644
--- a/rel/app/windows/run.sh
+++ b/rel/app/windows/run.sh
@@ -1,7 +1,7 @@
#!/bin/sh
set -euo pipefail
-. `dirname $0`/build.sh
+dotnet build
# The installer (Installer.nsi) writes HKCR entries. Here we create HKCU entries which don't
# require admin priveleges.