diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000000000000000000000000000000000000..767f4c4f9f65b4342f703065f4b44d57cee0439f
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,47 @@
+version: 1.0.{build}
+
+skip_branch_with_pr: true
+
+os:
+  - Visual Studio 2015
+  - Visual Studio 2017
+
+platform:
+  - x86
+
+before_build:
+- del "C:\Program Files (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets"
+- ps: |
+    $env:CUSTOM_BUILD_NAME = ("{0}_{1}_{2}" -f $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH, $env:APPVEYOR_BUILD_NUMBER, $env:APPVEYOR_BUILD_WORKER_IMAGE -replace " ","-" )
+    if ($env:APPVEYOR_BUILD_WORKER_IMAGE -eq "Visual Studio 2015")
+    {
+      Write-Host "This build will push the shared notes"
+      $env:DO_PUSH_NOTES = "TRUE"
+    } else {
+    Write-Host "This build will only pushed the CMake cache"
+      $env:DO_PUSH_NOTES = "FALSE"
+    }
+- ctest.exe -VV -S ../adios2/scripts\appveyor\av_default.cmake
+    -Ddashboard_full=OFF
+    -Ddashboard_do_update=true
+    -DCTEST_BUILD_NAME=%CUSTOM_BUILD_NAME%
+    -DADIOS_CTEST_SUBMIT_NOTES=%DO_PUSH_NOTES%
+
+build_script:
+- ctest.exe -VV -S ../adios2/scripts\appveyor\av_default.cmake
+    -Ddashboard_full=OFF
+    -Ddashboard_do_configure=true
+    -DCTEST_BUILD_NAME=%CUSTOM_BUILD_NAME%
+    -DADIOS_CTEST_SUBMIT_NOTES=true
+- ctest.exe -VV -S ../adios2/scripts\appveyor\av_default.cmake
+    -Ddashboard_full=OFF
+    -Ddashboard_do_build=true
+    -DCTEST_BUILD_NAME=%CUSTOM_BUILD_NAME%
+    -DADIOS_CTEST_SUBMIT_NOTES=%DO_PUSH_NOTES%
+
+test_script:
+- ctest.exe -VV -S ../adios2/scripts\appveyor\av_default.cmake
+    -Ddashboard_full=OFF
+    -Ddashboard_do_test=true
+    -DCTEST_BUILD_NAME=%CUSTOM_BUILD_NAME%
+    -DADIOS_CTEST_SUBMIT_NOTES=%DO_PUSH_NOTES%
diff --git a/scripts/appveyor/av_default.cmake b/scripts/appveyor/av_default.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..717d6bbe1fede8ff4910712e8b93ff493174d404
--- /dev/null
+++ b/scripts/appveyor/av_default.cmake
@@ -0,0 +1,31 @@
+# Client maintainer: chuck.atkins@kitware.com
+set(CTEST_SITE "AppVeyor")
+set(CTEST_BUILD_CONFIGURATION Release)
+set(CTEST_CMAKE_GENERATOR "Visual Studio 14 2015 Win64")
+# set(CTEST_BUILD_FLAGS "-k -j4")
+set(CTEST_TEST_ARGS PARALLEL_LEVEL 4)
+
+message("av_default.cmake, CTEST_BUILD_NAME=${CTEST_BUILD_NAME}, push build notes is ADIOS_CTEST_SUBMIT_NOTES=${ADIOS_CTEST_SUBMIT_NOTES}")
+
+set(dashboard_model Experimental)
+set(dashboard_binary_name "build_visual-studio")
+set(dashboard_track "Continuous Integration")
+
+set(CTEST_GIT_COMMAND "git.exe")
+set(CTEST_UPDATE_VERSION_ONLY TRUE)
+set(CTEST_SOURCE_DIRECTORY "$ENV{APPVEYOR_BUILD_FOLDER}")
+set(CTEST_DASHBOARD_ROOT "C:/projects/adios2build")
+
+set(dashboard_cache "
+ADIOS2_USE_ADIOS1:STRING=OFF
+ADIOS2_USE_BZip2:STRING=OFF
+ADIOS2_USE_DataMan:STRING=OFF
+ADIOS2_USE_Fortran:STRING=OFF
+ADIOS2_USE_HDF5:STRING=OFF
+ADIOS2_USE_MPI:STRING=OFF
+ADIOS2_USE_Python:STRING=OFF
+ADIOS2_USE_ZFP:STRING=OFF
+ADIOS2_USE_ZeroMQ:STRING=OFF
+")
+
+include(${CMAKE_CURRENT_LIST_DIR}/../dashboard/adios_common.cmake)
diff --git a/scripts/dashboard/adios_common.cmake b/scripts/dashboard/adios_common.cmake
index 55ae300478d5176cca7c46a7e27a13c4f43c8554..4cd0b3ab8a085fdf63f2795ebdbf6de13ce88728 100644
--- a/scripts/dashboard/adios_common.cmake
+++ b/scripts/dashboard/adios_common.cmake
@@ -66,6 +66,9 @@ set(CTEST_PROJECT_NAME "ADIOS2")
 set(CTEST_DROP_SITE "open.cdash.org")
 set(dashboard_git_url "https://github.com/ornladios/ADIOS2.git")
 
+if(NOT ADIOS_CTEST_SUBMIT_NOTES)
+  set(ADIOS_CTEST_SUBMIT_NOTES TRUE)
+endif()
 if(NOT dashboard_root_name)
   set(dashboard_root_name "Builds/My Tests")
 endif()
diff --git a/scripts/dashboard/common.cmake b/scripts/dashboard/common.cmake
index 11b691153089ee7334b704b68ddbbe9d0d24683c..ac88d93726957d9728a67b9e0b1d6f81f42a3d2a 100644
--- a/scripts/dashboard/common.cmake
+++ b/scripts/dashboard/common.cmake
@@ -283,12 +283,6 @@ endif()
 
 #-----------------------------------------------------------------------------
 
-# Send the main script as a note.
-list(APPEND CTEST_NOTES_FILES
-  "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}"
-  "${CMAKE_CURRENT_LIST_FILE}"
-  )
-
 # Check for required variables.
 foreach(req
     CTEST_CMAKE_GENERATOR
@@ -387,7 +381,19 @@ if(dashboard_do_update)
   ctest_update(RETURN_VALUE count)
   set(CTEST_CHECKOUT_COMMAND) # checkout on first iteration only
   message("Found ${count} changed files")
-  ctest_submit(PARTS Update)
+
+  if(ADIOS_CTEST_SUBMIT_NOTES)
+    message("Submitting dashboard scripts as Notes")
+    # Send the main script as a note while submitting the Update part
+    set(CTEST_NOTES_FILES
+      "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}"
+      "${CMAKE_CURRENT_LIST_FILE}"
+    )
+    ctest_submit(PARTS Update Notes)
+  else()
+    message("Skipping notes submission for Update step")
+    ctest_submit(PARTS Update)
+  endif()
 endif()
 
 if(dashboard_do_configure)
@@ -396,7 +402,14 @@ if(dashboard_do_configure)
   endif()
   message("Calling ctest_configure")
   ctest_configure(${dashboard_configure_args})
-  ctest_submit(PARTS Configure)
+  if(ADIOS_CTEST_SUBMIT_NOTES)
+    message("Submitting CMakeCache.txt as Notes")
+    set(CTEST_NOTES_FILES "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt")
+    ctest_submit(PARTS Configure Notes)
+  else()
+    message("Skipping notes submission for Configure step")
+    ctest_submit(PARTS Configure)
+  endif()
 endif()
 
 ctest_read_custom_files(${CTEST_BINARY_DIRECTORY})
diff --git a/thirdparty/KWSys/CMakeLists.txt b/thirdparty/KWSys/CMakeLists.txt
index 600c5c9b4b33e07316486b5f2aaba8ac85d00fe8..a801248a1766bc96b887d866a2a924007ffaf8eb 100644
--- a/thirdparty/KWSys/CMakeLists.txt
+++ b/thirdparty/KWSys/CMakeLists.txt
@@ -2,8 +2,14 @@ set(KWSYS_NAMESPACE adios2sys)
 set(KWSYS_USE_DynamicLoader ON)
 set(KWSYS_USE_RegularExpression ON)
 set(KWSYS_USE_SystemTools ON)
-set(KWSYS_BUILD_SHARED ${ADIOS2_BUILD_SHARED_LIBS})
-set(KWSYS_SPLIT_OBJECTS_FROM_INTERFACE ON)
+set(KWSYS_BUILD_SHARED ${BUILD_SHARED_LIBS})
+
+if(WIN32)
+  set(KWSYS_SPLIT_OBJECTS_FROM_INTERFACE OFF)
+else()
+  set(KWSYS_SPLIT_OBJECTS_FROM_INTERFACE ON)
+endif()
+
 set(KWSYS_INSTALL_EXPORT_NAME adios2Exports)
 set(KWSYS_INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR})