diff --git a/.gitignore b/.gitignore
index 85901e8..4d369e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,11 +47,10 @@ Makefile.in
/m4/ltsugar.m4
/m4/ltversion.m4
-/msvc/Debug/
-/msvc/Release/
+/msvc/x64/
+/msvc/x86/
/msvc/*.ncb
/msvc/*.suo
-/msvc/*.vcproj.*.user
/src/libdivecomputer.exp
/src/libdivecomputer.la
diff --git a/Makefile.am b/Makefile.am
index c3ae858..9ae4414 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,4 +16,5 @@ pkgconfig_DATA = libdivecomputer.pc
EXTRA_DIST = \
libdivecomputer.pc.in \
- msvc/libdivecomputer.vcproj
+ msvc/libdivecomputer.vcxproj \
+ msvc/libdivecomputer.vcxproj.filters
diff --git a/msvc/libdivecomputer.vcproj b/msvc/libdivecomputer.vcproj
deleted file mode 100644
index 3482457..0000000
--- a/msvc/libdivecomputer.vcproj
+++ /dev/null
@@ -1,959 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/msvc/libdivecomputer.vcxproj b/msvc/libdivecomputer.vcxproj
new file mode 100644
index 0000000..2f99a43
--- /dev/null
+++ b/msvc/libdivecomputer.vcxproj
@@ -0,0 +1,374 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {CEA7215A-D6B5-4840-8086-3C854F371997}
+ libdivecomputer
+ Win32Proj
+
+
+
+ DynamicLibrary
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ DynamicLibrary
+ true
+ $(DefaultPlatformToolset)
+ Unicode
+
+
+ DynamicLibrary
+ false
+ $(DefaultPlatformToolset)
+ Unicode
+ true
+
+
+ DynamicLibrary
+ false
+ $(DefaultPlatformToolset)
+ Unicode
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)$(PlatformTarget)\$(Configuration)\bin\
+ $(PlatformTarget)\$(Configuration)\obj\
+
+
+ true
+ $(SolutionDir)$(PlatformTarget)\$(Configuration)\bin\
+ $(PlatformTarget)\$(Configuration)\obj\
+
+
+ false
+ $(SolutionDir)$(PlatformTarget)\$(Configuration)\bin\
+ $(PlatformTarget)\$(Configuration)\obj\
+
+
+ false
+ $(SolutionDir)$(PlatformTarget)\$(Configuration)\bin\
+ $(PlatformTarget)\$(Configuration)\obj\
+
+
+
+ Disabled
+ ..\include;%(AdditionalIncludeDirectories)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;%(PreprocessorDefinitions)
+
+ Level3
+ true
+
+
+ ws2_32.lib;%(AdditionalDependencies)
+ $(OutDir)libdivecomputer.def
+ true
+ Windows
+
+
+
+
+ Disabled
+ ..\include;%(AdditionalIncludeDirectories)
+ _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;%(PreprocessorDefinitions)
+
+
+ Level3
+ true
+
+
+ ws2_32.lib;%(AdditionalDependencies)
+ $(OutDir)libdivecomputer.def
+ true
+ Windows
+
+
+
+
+ MaxSpeed
+ true
+ ..\include;%(AdditionalIncludeDirectories)
+ _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;%(PreprocessorDefinitions)
+ true
+
+ Level3
+ true
+
+
+ ws2_32.lib;%(AdditionalDependencies)
+ $(OutDir)libdivecomputer.def
+ true
+ Windows
+ true
+ true
+
+
+
+
+ MaxSpeed
+ true
+ ..\include;%(AdditionalIncludeDirectories)
+ _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBDIVECOMPUTER_EXPORTS;ENABLE_LOGGING;HAVE_AF_IRDA_H;HAVE_WS2BTH_H;%(PreprocessorDefinitions)
+ true
+
+
+ Level3
+ true
+
+
+ ws2_32.lib;%(AdditionalDependencies)
+ $(OutDir)libdivecomputer.def
+ true
+ Windows
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ echo EXPORTS > "$(OutDir)libdivecomputer.def" && type "%(FullPath)" >> "$(OutDir)libdivecomputer.def"
+ echo EXPORTS > "$(OutDir)libdivecomputer.def" && type "%(FullPath)" >> "$(OutDir)libdivecomputer.def"
+ $(OutDir)libdivecomputer.def;%(Outputs)
+ $(OutDir)libdivecomputer.def;%(Outputs)
+ echo EXPORTS > "$(OutDir)libdivecomputer.def" && type "%(FullPath)" >> "$(OutDir)libdivecomputer.def"
+ echo EXPORTS > "$(OutDir)libdivecomputer.def" && type "%(FullPath)" >> "$(OutDir)libdivecomputer.def"
+ $(OutDir)libdivecomputer.def;%(Outputs)
+ $(OutDir)libdivecomputer.def;%(Outputs)
+
+
+
+
+
+
diff --git a/msvc/libdivecomputer.vcxproj.filters b/msvc/libdivecomputer.vcxproj.filters
new file mode 100644
index 0000000..e5cb0c5
--- /dev/null
+++ b/msvc/libdivecomputer.vcxproj.filters
@@ -0,0 +1,17 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+