diff --git a/.github/scripts/build_windows_executables.bat b/.github/scripts/build_windows_executables.bat
index 70257fcb69..3d4efe2846 100644
--- a/.github/scripts/build_windows_executables.bat
+++ b/.github/scripts/build_windows_executables.bat
@@ -28,6 +28,7 @@ devenv vs-build/MoorDyn/MoorDynDriver.sln /Build "Release|x64"
devenv vs-build/MoorDyn_c_binding/MoorDyn_c_binding.sln /Build "Release|x64"
devenv vs-build/FAST/FAST.sln /Build "Release|x64"
devenv vs-build/SeaState/SeaStateDriver.sln /Build "Release|x64"
+devenv vs-build/SeaState_c_binding/SeaState_c_binding.sln /Build "Release|x64"
devenv vs-build/SimpleElastoDyn/SimpleElastoDyn_Driver.sln /Build "Release|x64"
devenv vs-build/SubDyn/SubDyn.sln /Build "Release|x64"
devenv vs-build/TurbSim/TurbSim.vfproj /Build "Release|x64"
diff --git a/.github/scripts/windows_devenv_test.bat b/.github/scripts/windows_devenv_test.bat
new file mode 100644
index 0000000000..494a6edfbe
--- /dev/null
+++ b/.github/scripts/windows_devenv_test.bat
@@ -0,0 +1,13 @@
+@REM Check if devenv actually works
+for /f "usebackq tokens=1* delims=: " %%i in (`"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest`) do (
+ if /i "%%i"=="productPath" set devenv=%%j
+)
+
+@REM above command finds devenv.exe, but that opens the VS instance. We need the devenv.com version
+set devenv=%devenv:devenv.exe=devenv.com%
+
+echo Using Visual Studio: %devenv%
+
+"%devenv%" /?
+
+exit /b %ERRORLEVEL%
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index adf3513704..a7819ab029 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -145,6 +145,10 @@ jobs:
submodules: true
fetch-depth: 0
+ - name: Test devenv actually works
+ shell: cmd
+ run: .github/scripts/windows_devenv_test.bat
+
- name: Install Intel oneAPI BaseKit (Windows)
shell: cmd
env:
diff --git a/vs-build/HydroDyn/HydroDynDriver.vfproj b/vs-build/HydroDyn/HydroDynDriver.vfproj
index 3b057f9d10..6b4bd4fe78 100644
--- a/vs-build/HydroDyn/HydroDynDriver.vfproj
+++ b/vs-build/HydroDyn/HydroDynDriver.vfproj
@@ -437,7 +437,8 @@
-
+
+
@@ -454,8 +455,7 @@
-
-
+
@@ -472,7 +472,9 @@
-
+
+
+
@@ -488,8 +490,7 @@
-
-
+
@@ -506,8 +507,7 @@
-
-
+
diff --git a/vs-build/HydroDyn_c_binding/HydroDyn_c_binding.vfproj b/vs-build/HydroDyn_c_binding/HydroDyn_c_binding.vfproj
index efe02d92b2..34780120da 100644
--- a/vs-build/HydroDyn_c_binding/HydroDyn_c_binding.vfproj
+++ b/vs-build/HydroDyn_c_binding/HydroDyn_c_binding.vfproj
@@ -214,7 +214,6 @@
-
@@ -263,11 +262,12 @@
-
-
+
+
+
@@ -382,5 +382,6 @@
+
diff --git a/vs-build/MoorDyn/MoorDynDriver.vfproj b/vs-build/MoorDyn/MoorDynDriver.vfproj
index 7dba18e7fa..9f7ac9fdfc 100644
--- a/vs-build/MoorDyn/MoorDynDriver.vfproj
+++ b/vs-build/MoorDyn/MoorDynDriver.vfproj
@@ -85,7 +85,6 @@
-
@@ -251,5 +250,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vs-build/MoorDyn_c_binding/MoorDyn_c_binding.vfproj b/vs-build/MoorDyn_c_binding/MoorDyn_c_binding.vfproj
index b70d760c32..f74ba72b6b 100644
--- a/vs-build/MoorDyn_c_binding/MoorDyn_c_binding.vfproj
+++ b/vs-build/MoorDyn_c_binding/MoorDyn_c_binding.vfproj
@@ -105,7 +105,6 @@
-
@@ -273,5 +272,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vs-build/SeaState/SeaStateDriver.vfproj b/vs-build/SeaState/SeaStateDriver.vfproj
index 483c4ab25a..f0f29c7847 100644
--- a/vs-build/SeaState/SeaStateDriver.vfproj
+++ b/vs-build/SeaState/SeaStateDriver.vfproj
@@ -199,7 +199,8 @@
-
+
+
@@ -212,8 +213,7 @@
-
-
+
@@ -226,7 +226,9 @@
-
+
+
+
@@ -239,8 +241,6 @@
-
-
diff --git a/vs-build/SeaState_c_binding/SeaState_c_binding.sln b/vs-build/SeaState_c_binding/SeaState_c_binding.sln
new file mode 100644
index 0000000000..16bae50940
--- /dev/null
+++ b/vs-build/SeaState_c_binding/SeaState_c_binding.sln
@@ -0,0 +1,64 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.902
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8A7732CE-4ADA-4074-973E-8E797747D444}") = "SeaState_c_binding", "SeaState_c_binding.vfproj", "{84782F71-FD4C-4427-AD62-B33EF3C9FFE2}"
+ ProjectSection(ProjectDependencies) = postProject
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16} = {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FAST_Registry", "..\Registry\FAST_Registry.vcxproj", "{DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug_Double|Win32 = Debug_Double|Win32
+ Debug_Double|x64 = Debug_Double|x64
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release_Double|Win32 = Release_Double|Win32
+ Release_Double|x64 = Release_Double|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Debug_Double|Win32.ActiveCfg = Debug_Double|Win32
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Debug_Double|Win32.Build.0 = Debug_Double|Win32
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Debug_Double|x64.ActiveCfg = Debug_Double|x64
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Debug_Double|x64.Build.0 = Debug_Double|x64
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Debug|Win32.Build.0 = Debug|Win32
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Debug|x64.ActiveCfg = Debug|x64
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Debug|x64.Build.0 = Debug|x64
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Release_Double|Win32.ActiveCfg = Release_Double|Win32
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Release_Double|Win32.Build.0 = Release_Double|Win32
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Release_Double|x64.ActiveCfg = Release_Double|x64
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Release_Double|x64.Build.0 = Release_Double|x64
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Release|Win32.ActiveCfg = Release|Win32
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Release|Win32.Build.0 = Release|Win32
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Release|x64.ActiveCfg = Release|x64
+ {84782F71-FD4C-4427-AD62-B33EF3C9FFE2}.Release|x64.Build.0 = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Debug_Double|Win32.ActiveCfg = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Debug_Double|Win32.Build.0 = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Debug_Double|x64.ActiveCfg = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Debug_Double|x64.Build.0 = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Debug|Win32.ActiveCfg = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Debug|Win32.Build.0 = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Debug|x64.ActiveCfg = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Debug|x64.Build.0 = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Release_Double|Win32.ActiveCfg = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Release_Double|Win32.Build.0 = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Release_Double|x64.ActiveCfg = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Release_Double|x64.Build.0 = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Release|Win32.ActiveCfg = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Release|Win32.Build.0 = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Release|x64.ActiveCfg = Release|x64
+ {DA16A3A6-3297-4628-9E46-C6FA0E3C4D16}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {49DA4583-1BAB-4459-8F53-EB898075680D}
+ EndGlobalSection
+EndGlobal
diff --git a/vs-build/SeaState_c_binding/SeaState_c_binding.vfproj b/vs-build/SeaState_c_binding/SeaState_c_binding.vfproj
new file mode 100644
index 0000000000..7ea7b9851b
--- /dev/null
+++ b/vs-build/SeaState_c_binding/SeaState_c_binding.vfproj
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+