From 650d75a0f1d61b43abf6805d8b09f6229accf696 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Wed, 18 Jul 2018 01:40:07 -0500 Subject: [PATCH 01/18] Updated version number of alt builds --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d176060..83ef60c 100644 --- a/README.md +++ b/README.md @@ -8,12 +8,12 @@ You can find the latest and older versions [here](https://github.com/Ryochan7/DS UdpServer builds for using Gyro motion controls in Cemu. -http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.121_UdpServer_x64.zip -http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.121_ViGEm_UdpServer_x64.zip +http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.123_UdpServer_x64.zip +http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.123_ViGEm_UdpServer_x64.zip ViGEm build. -http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.121_ViGEm_x64.zip +http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.123_ViGEm_x64.zip This project is a fork of the work of Jays2Kings. You can find the old project website at [ds4windows.com](http://ds4windows.com). From e99e0afe17f5a6bde67d6a71739c6ab679497dbc Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Fri, 20 Jul 2018 04:52:45 -0500 Subject: [PATCH 02/18] Use unsafe for accessing gyro and accel arrays --- DS4Windows/DS4Library/DS4Device.cs | 2 +- DS4Windows/DS4Library/DS4Sixaxis.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DS4Windows/DS4Library/DS4Device.cs b/DS4Windows/DS4Library/DS4Device.cs index b52444b..023df85 100644 --- a/DS4Windows/DS4Library/DS4Device.cs +++ b/DS4Windows/DS4Library/DS4Device.cs @@ -983,7 +983,7 @@ namespace DS4Windows } } - sixAxis.handleSixaxis(gyro, accel, cState, elapsedDeltaTime); + fixed (byte* pGyro = gyro, pAccel = accel) sixAxis.handleSixaxis(pGyro, pAccel, cState, elapsedDeltaTime); /* Debug output of incoming HID data: if (cState.L2 == 0xff && cState.R2 == 0xff) diff --git a/DS4Windows/DS4Library/DS4Sixaxis.cs b/DS4Windows/DS4Library/DS4Sixaxis.cs index 62353b5..8da297e 100644 --- a/DS4Windows/DS4Library/DS4Sixaxis.cs +++ b/DS4Windows/DS4Library/DS4Sixaxis.cs @@ -220,7 +220,7 @@ namespace DS4Windows accelZ = temInt = (int)(temInt * (current.sensNumer / (float)current.sensDenom)); } - public void handleSixaxis(byte[] gyro, byte[] accel, DS4State state, + public unsafe void handleSixaxis(byte* gyro, byte* accel, DS4State state, double elapsedDelta) { int currentYaw = (short)((ushort)(gyro[3] << 8) | gyro[2]); From f906178b5b364be2a802859078f0c3a50cf49f0a Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Fri, 20 Jul 2018 05:05:20 -0500 Subject: [PATCH 03/18] Removed extra fixed block. Moved method call --- DS4Windows/DS4Library/DS4Device.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DS4Windows/DS4Library/DS4Device.cs b/DS4Windows/DS4Library/DS4Device.cs index 023df85..368de7c 100644 --- a/DS4Windows/DS4Library/DS4Device.cs +++ b/DS4Windows/DS4Library/DS4Device.cs @@ -981,9 +981,9 @@ namespace DS4Windows { pbAccel[i-6] = pbInput[i]; } - } - fixed (byte* pGyro = gyro, pAccel = accel) sixAxis.handleSixaxis(pGyro, pAccel, cState, elapsedDeltaTime); + sixAxis.handleSixaxis(pbGyro, pbAccel, cState, elapsedDeltaTime); + } /* Debug output of incoming HID data: if (cState.L2 == 0xff && cState.R2 == 0xff) From 1b687a03eaba9742167fd35065bcb60f5fb628fc Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Fri, 20 Jul 2018 15:59:58 -0500 Subject: [PATCH 04/18] Added rajkosto to contributors --- contributors.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/contributors.txt b/contributors.txt index ec5e9e3..6a4f4f4 100644 --- a/contributors.txt +++ b/contributors.txt @@ -1,5 +1,6 @@ Travis Nickles (Ryochan7) Korney Czukowski (czukowski) jdfeng +Rajko Stojadinovic (rajkosto) Yuki-nyan From 11c7f03244bf9265b4a1c7716b590cd4b41bac46 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sat, 21 Jul 2018 00:55:16 -0500 Subject: [PATCH 05/18] Lower latency buffer to 10 items --- DS4Windows/DS4Library/DS4Device.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DS4Windows/DS4Library/DS4Device.cs b/DS4Windows/DS4Library/DS4Device.cs index 368de7c..7054218 100644 --- a/DS4Windows/DS4Library/DS4Device.cs +++ b/DS4Windows/DS4Library/DS4Device.cs @@ -717,7 +717,7 @@ namespace DS4Windows { firstActive = DateTime.UtcNow; NativeMethods.HidD_SetNumInputBuffers(hDevice.safeReadHandle.DangerousGetHandle(), 2); - Queue latencyQueue = new Queue(21); // Set capacity at max + 1 to avoid any resizing + Queue latencyQueue = new Queue(11); // Set capacity at max + 1 to avoid any resizing int tempLatencyCount = 0; long oldtime = 0; string currerror = string.Empty; @@ -746,7 +746,7 @@ namespace DS4Windows oldCharging = charging; currerror = string.Empty; - if (tempLatencyCount >= 20) + if (tempLatencyCount >= 10) { latencyQueue.Dequeue(); tempLatencyCount--; From be6f938e10316232ef0b68563c2947999acff583 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sat, 21 Jul 2018 14:39:11 -0500 Subject: [PATCH 06/18] Placeholder settings class --- DS4Windows/Settings.cs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 DS4Windows/Settings.cs diff --git a/DS4Windows/Settings.cs b/DS4Windows/Settings.cs new file mode 100644 index 0000000..ac0570e --- /dev/null +++ b/DS4Windows/Settings.cs @@ -0,0 +1,28 @@ +namespace DS4Windows.Properties { + + + // This class allows you to handle specific events on the settings class: + // The SettingChanging event is raised before a setting's value is changed. + // The PropertyChanged event is raised after a setting's value is changed. + // The SettingsLoaded event is raised after the setting values are loaded. + // The SettingsSaving event is raised before the setting values are saved. + internal sealed partial class Settings { + + public Settings() { + // // To add event handlers for saving and changing settings, uncomment the lines below: + // + // this.SettingChanging += this.SettingChangingEventHandler; + // + // this.SettingsSaving += this.SettingsSavingEventHandler; + // + } + + private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { + // Add code to handle the SettingChangingEvent event here. + } + + private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { + // Add code to handle the SettingsSaving event here. + } + } +} From b9af99295be70cf6ae9492ba3bfa3768fb4731f9 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sat, 21 Jul 2018 15:26:37 -0500 Subject: [PATCH 07/18] Fix minimize to taskbar option --- DS4Windows/DS4Forms/DS4Form.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/DS4Windows/DS4Forms/DS4Form.cs b/DS4Windows/DS4Forms/DS4Form.cs index f01d2c8..c3cbf0d 100644 --- a/DS4Windows/DS4Forms/DS4Form.cs +++ b/DS4Windows/DS4Forms/DS4Form.cs @@ -898,16 +898,14 @@ Properties.Resources.DS4Update, MessageBoxButtons.YesNo, MessageBoxIcon.Question protected void Form_Resize(object sender, EventArgs e) { - if (FormWindowState.Minimized == WindowState && !MinToTaskbar) + if (FormWindowState.Minimized == WindowState && MinToTaskbar) { Hide(); ShowInTaskbar = false; FormBorderStyle = FormBorderStyle.None; } - - else if (FormWindowState.Normal == WindowState && !MinToTaskbar) + else if (FormWindowState.Normal == WindowState && MinToTaskbar) { - //mAllowVisible = true; Show(); ShowInTaskbar = true; FormBorderStyle = FormBorderStyle.Sizable; From ffa3eb08ab86a8d61ad2ee9152f7f84a6f788ca4 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 01:21:23 -0500 Subject: [PATCH 08/18] Revert "Fix minimize to taskbar option" This reverts commit b9af99295be70cf6ae9492ba3bfa3768fb4731f9. --- DS4Windows/DS4Forms/DS4Form.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/DS4Windows/DS4Forms/DS4Form.cs b/DS4Windows/DS4Forms/DS4Form.cs index c3cbf0d..f01d2c8 100644 --- a/DS4Windows/DS4Forms/DS4Form.cs +++ b/DS4Windows/DS4Forms/DS4Form.cs @@ -898,14 +898,16 @@ Properties.Resources.DS4Update, MessageBoxButtons.YesNo, MessageBoxIcon.Question protected void Form_Resize(object sender, EventArgs e) { - if (FormWindowState.Minimized == WindowState && MinToTaskbar) + if (FormWindowState.Minimized == WindowState && !MinToTaskbar) { Hide(); ShowInTaskbar = false; FormBorderStyle = FormBorderStyle.None; } - else if (FormWindowState.Normal == WindowState && MinToTaskbar) + + else if (FormWindowState.Normal == WindowState && !MinToTaskbar) { + //mAllowVisible = true; Show(); ShowInTaskbar = true; FormBorderStyle = FormBorderStyle.Sizable; From e04799db1aedbe56af4ceed122c4dd3671e5ae36 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 01:21:49 -0500 Subject: [PATCH 09/18] Revert "Placeholder settings class" This reverts commit be6f938e10316232ef0b68563c2947999acff583. --- DS4Windows/Settings.cs | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 DS4Windows/Settings.cs diff --git a/DS4Windows/Settings.cs b/DS4Windows/Settings.cs deleted file mode 100644 index ac0570e..0000000 --- a/DS4Windows/Settings.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace DS4Windows.Properties { - - - // This class allows you to handle specific events on the settings class: - // The SettingChanging event is raised before a setting's value is changed. - // The PropertyChanged event is raised after a setting's value is changed. - // The SettingsLoaded event is raised after the setting values are loaded. - // The SettingsSaving event is raised before the setting values are saved. - internal sealed partial class Settings { - - public Settings() { - // // To add event handlers for saving and changing settings, uncomment the lines below: - // - // this.SettingChanging += this.SettingChangingEventHandler; - // - // this.SettingsSaving += this.SettingsSavingEventHandler; - // - } - - private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { - // Add code to handle the SettingChangingEvent event here. - } - - private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { - // Add code to handle the SettingsSaving event here. - } - } -} From 5c9aec9bd12989f0c5fe9fad2ca7be07196cdff5 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 01:22:13 -0500 Subject: [PATCH 10/18] Revert "Lower latency buffer to 10 items" This reverts commit 11c7f03244bf9265b4a1c7716b590cd4b41bac46. --- DS4Windows/DS4Library/DS4Device.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DS4Windows/DS4Library/DS4Device.cs b/DS4Windows/DS4Library/DS4Device.cs index 7054218..368de7c 100644 --- a/DS4Windows/DS4Library/DS4Device.cs +++ b/DS4Windows/DS4Library/DS4Device.cs @@ -717,7 +717,7 @@ namespace DS4Windows { firstActive = DateTime.UtcNow; NativeMethods.HidD_SetNumInputBuffers(hDevice.safeReadHandle.DangerousGetHandle(), 2); - Queue latencyQueue = new Queue(11); // Set capacity at max + 1 to avoid any resizing + Queue latencyQueue = new Queue(21); // Set capacity at max + 1 to avoid any resizing int tempLatencyCount = 0; long oldtime = 0; string currerror = string.Empty; @@ -746,7 +746,7 @@ namespace DS4Windows oldCharging = charging; currerror = string.Empty; - if (tempLatencyCount >= 10) + if (tempLatencyCount >= 20) { latencyQueue.Dequeue(); tempLatencyCount--; From bd3d5315d530d2bb8152e92df1ba91352bca26d4 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 01:22:29 -0500 Subject: [PATCH 11/18] Revert "Added rajkosto to contributors" This reverts commit 1b687a03eaba9742167fd35065bcb60f5fb628fc. --- contributors.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/contributors.txt b/contributors.txt index 6a4f4f4..ec5e9e3 100644 --- a/contributors.txt +++ b/contributors.txt @@ -1,6 +1,5 @@ Travis Nickles (Ryochan7) Korney Czukowski (czukowski) jdfeng -Rajko Stojadinovic (rajkosto) Yuki-nyan From e6ac109616dbd02c9849e44e8eeb70ed8b507376 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 01:22:42 -0500 Subject: [PATCH 12/18] Revert "Removed extra fixed block. Moved method call" This reverts commit f906178b5b364be2a802859078f0c3a50cf49f0a. --- DS4Windows/DS4Library/DS4Device.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DS4Windows/DS4Library/DS4Device.cs b/DS4Windows/DS4Library/DS4Device.cs index 368de7c..023df85 100644 --- a/DS4Windows/DS4Library/DS4Device.cs +++ b/DS4Windows/DS4Library/DS4Device.cs @@ -981,10 +981,10 @@ namespace DS4Windows { pbAccel[i-6] = pbInput[i]; } - - sixAxis.handleSixaxis(pbGyro, pbAccel, cState, elapsedDeltaTime); } + fixed (byte* pGyro = gyro, pAccel = accel) sixAxis.handleSixaxis(pGyro, pAccel, cState, elapsedDeltaTime); + /* Debug output of incoming HID data: if (cState.L2 == 0xff && cState.R2 == 0xff) { From d1f124870fd27299ab1b15d6291760db973ca603 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 01:23:16 -0500 Subject: [PATCH 13/18] Revert "Use unsafe for accessing gyro and accel arrays" This reverts commit e99e0afe17f5a6bde67d6a71739c6ab679497dbc. --- DS4Windows/DS4Library/DS4Device.cs | 2 +- DS4Windows/DS4Library/DS4Sixaxis.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DS4Windows/DS4Library/DS4Device.cs b/DS4Windows/DS4Library/DS4Device.cs index 023df85..b52444b 100644 --- a/DS4Windows/DS4Library/DS4Device.cs +++ b/DS4Windows/DS4Library/DS4Device.cs @@ -983,7 +983,7 @@ namespace DS4Windows } } - fixed (byte* pGyro = gyro, pAccel = accel) sixAxis.handleSixaxis(pGyro, pAccel, cState, elapsedDeltaTime); + sixAxis.handleSixaxis(gyro, accel, cState, elapsedDeltaTime); /* Debug output of incoming HID data: if (cState.L2 == 0xff && cState.R2 == 0xff) diff --git a/DS4Windows/DS4Library/DS4Sixaxis.cs b/DS4Windows/DS4Library/DS4Sixaxis.cs index 8da297e..62353b5 100644 --- a/DS4Windows/DS4Library/DS4Sixaxis.cs +++ b/DS4Windows/DS4Library/DS4Sixaxis.cs @@ -220,7 +220,7 @@ namespace DS4Windows accelZ = temInt = (int)(temInt * (current.sensNumer / (float)current.sensDenom)); } - public unsafe void handleSixaxis(byte* gyro, byte* accel, DS4State state, + public void handleSixaxis(byte[] gyro, byte[] accel, DS4State state, double elapsedDelta) { int currentYaw = (short)((ushort)(gyro[3] << 8) | gyro[2]); From 3fa9d2f2b57cc6c7841f657d02de7d9cdf3ce89b Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 01:51:58 -0500 Subject: [PATCH 14/18] Added alt min to taskbar fix --- DS4Windows/DS4Control/ScpUtil.cs | 5 +++++ DS4Windows/DS4Forms/DS4Form.cs | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/DS4Windows/DS4Control/ScpUtil.cs b/DS4Windows/DS4Control/ScpUtil.cs index 91d917e..1e34cfd 100644 --- a/DS4Windows/DS4Control/ScpUtil.cs +++ b/DS4Windows/DS4Control/ScpUtil.cs @@ -506,6 +506,11 @@ namespace DS4Windows get { return m_Config.minToTaskbar; } } + public static bool GetMinToTaskbar() + { + return m_Config.minToTaskbar; + } + public static int FormWidth { set { m_Config.formWidth = value; } diff --git a/DS4Windows/DS4Forms/DS4Form.cs b/DS4Windows/DS4Forms/DS4Form.cs index f01d2c8..1b4f60e 100644 --- a/DS4Windows/DS4Forms/DS4Form.cs +++ b/DS4Windows/DS4Forms/DS4Form.cs @@ -898,14 +898,15 @@ Properties.Resources.DS4Update, MessageBoxButtons.YesNo, MessageBoxIcon.Question protected void Form_Resize(object sender, EventArgs e) { - if (FormWindowState.Minimized == WindowState && !MinToTaskbar) + bool minToTask = GetMinToTaskbar(); + if (FormWindowState.Minimized == WindowState && minToTask) { Hide(); ShowInTaskbar = false; FormBorderStyle = FormBorderStyle.None; } - else if (FormWindowState.Normal == WindowState && !MinToTaskbar) + else if (FormWindowState.Normal == WindowState && minToTask) { //mAllowVisible = true; Show(); From 1c76de4ba1ca4a5b2ed2810b774a575ea0bf0c41 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 01:56:22 -0500 Subject: [PATCH 15/18] Added rajkosto back into contributors file --- contributors.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/contributors.txt b/contributors.txt index ec5e9e3..6a4f4f4 100644 --- a/contributors.txt +++ b/contributors.txt @@ -1,5 +1,6 @@ Travis Nickles (Ryochan7) Korney Czukowski (czukowski) jdfeng +Rajko Stojadinovic (rajkosto) Yuki-nyan From a6e6b5279c87ed4d8bb5693d23673db2ea19b3d8 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 02:52:42 -0500 Subject: [PATCH 16/18] Added unsafe back to sixaxis method --- DS4Windows/DS4Library/DS4Device.cs | 4 ++-- DS4Windows/DS4Library/DS4Sixaxis.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DS4Windows/DS4Library/DS4Device.cs b/DS4Windows/DS4Library/DS4Device.cs index b52444b..368de7c 100644 --- a/DS4Windows/DS4Library/DS4Device.cs +++ b/DS4Windows/DS4Library/DS4Device.cs @@ -981,9 +981,9 @@ namespace DS4Windows { pbAccel[i-6] = pbInput[i]; } - } - sixAxis.handleSixaxis(gyro, accel, cState, elapsedDeltaTime); + sixAxis.handleSixaxis(pbGyro, pbAccel, cState, elapsedDeltaTime); + } /* Debug output of incoming HID data: if (cState.L2 == 0xff && cState.R2 == 0xff) diff --git a/DS4Windows/DS4Library/DS4Sixaxis.cs b/DS4Windows/DS4Library/DS4Sixaxis.cs index 62353b5..8da297e 100644 --- a/DS4Windows/DS4Library/DS4Sixaxis.cs +++ b/DS4Windows/DS4Library/DS4Sixaxis.cs @@ -220,7 +220,7 @@ namespace DS4Windows accelZ = temInt = (int)(temInt * (current.sensNumer / (float)current.sensDenom)); } - public void handleSixaxis(byte[] gyro, byte[] accel, DS4State state, + public unsafe void handleSixaxis(byte* gyro, byte* accel, DS4State state, double elapsedDelta) { int currentYaw = (short)((ushort)(gyro[3] << 8) | gyro[2]); From 01ccc74cdd90c15fd2a8618ee535713eff685579 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 03:15:24 -0500 Subject: [PATCH 17/18] Added SuppressUnmanagedCodeSecurity attribute to ScpDevice class Leads to a decent speedup --- DS4Windows/DS4Control/ScpDevice.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DS4Windows/DS4Control/ScpDevice.cs b/DS4Windows/DS4Control/ScpDevice.cs index 8055616..267f10d 100644 --- a/DS4Windows/DS4Control/ScpDevice.cs +++ b/DS4Windows/DS4Control/ScpDevice.cs @@ -3,10 +3,12 @@ using System.Collections.Generic; using System.ComponentModel; using System.Runtime.InteropServices; +using System.Security; using Microsoft.Win32.SafeHandles; namespace DS4Windows { + [SuppressUnmanagedCodeSecurity] public partial class ScpDevice : Component { public virtual Boolean IsActive From 890db93fe8ff4cbf331c72b0d6421e1bcfd605bd Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Sun, 22 Jul 2018 21:58:48 -0500 Subject: [PATCH 18/18] Version 1.5.0 --- DS4Windows/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DS4Windows/Properties/AssemblyInfo.cs b/DS4Windows/Properties/AssemblyInfo.cs index 628a800..a269105 100644 --- a/DS4Windows/Properties/AssemblyInfo.cs +++ b/DS4Windows/Properties/AssemblyInfo.cs @@ -33,7 +33,7 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.4.123")] -[assembly: AssemblyFileVersion("1.4.123")] +[assembly: AssemblyVersion("1.5.0")] +[assembly: AssemblyFileVersion("1.5.0")] [assembly: NeutralResourcesLanguage("en")]