From de099bd3b50b8ea52b212b8d322626582c2648be Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Sun, 22 Apr 2018 13:35:22 +0300 Subject: Implemented new TangoIOC container & TangoMessenger. Got rid of MVVMLite libs ! Got rid of IShutdownRequestBlocker, IShutdownListener, IModuleRequestListener. Implemented IStudioViewModel & StudioViewModel. --- .../Tango.MachineStudio.Stubs.csproj | 14 +------------- .../Modules/Tango.MachineStudio.Stubs/ViewModelLocator.cs | 11 +++-------- .../Tango.MachineStudio.Stubs/ViewModels/MainViewVM.cs | 9 +++++++-- .../Tango.MachineStudio.Stubs/Views/MainView.xaml.cs | 3 +-- .../Modules/Tango.MachineStudio.Stubs/packages.config | 2 +- 5 files changed, 13 insertions(+), 26 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Tango.MachineStudio.Stubs.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Tango.MachineStudio.Stubs.csproj index 85928cb0c..a20f17b7a 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Tango.MachineStudio.Stubs.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Tango.MachineStudio.Stubs.csproj @@ -34,15 +34,6 @@ ..\..\..\packages\FontAwesome.WPF.4.7.0.9\lib\net40\FontAwesome.WPF.dll - - ..\..\..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.dll - - - ..\..\..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Extras.dll - - - ..\..\..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Platform.dll - ..\..\..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll @@ -55,16 +46,13 @@ ..\..\..\packages\MaterialDesignThemes.2.3.1.953\lib\net45\MaterialDesignThemes.Wpf.dll - - ..\..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll - ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll - ..\..\..\packages\MvvmLightLibs.5.3.0.0\lib\net45\System.Windows.Interactivity.dll + ..\..\..\packages\Expression.Blend.Sdk.1.0.2\lib\net45\System.Windows.Interactivity.dll diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModelLocator.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModelLocator.cs index 02ac1b8dd..5034a4d90 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModelLocator.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModelLocator.cs @@ -1,5 +1,4 @@ -using GalaSoft.MvvmLight.Ioc; -using Microsoft.Practices.ServiceLocation; +using Tango.Core.DI; using Tango.MachineStudio.Stubs.ViewModels; namespace Tango.MachineStudio.Stubs @@ -15,18 +14,14 @@ namespace Tango.MachineStudio.Stubs /// static ViewModelLocator() { - ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); - - //SimpleIoc.Default.Unregister(); - - SimpleIoc.Default.Register(); + TangoIOC.Default.Register(); } public static MainViewVM MainViewVM { get { - return ServiceLocator.Current.GetInstance(); + return TangoIOC.Default.GetInstance(); } } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModels/MainViewVM.cs index 6797b15e6..54aa0c22b 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/ViewModels/MainViewVM.cs @@ -9,6 +9,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows; using Tango.Core.Commands; +using Tango.MachineStudio.Common; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.Common.StudioApplication; using Tango.Scripting; @@ -24,7 +25,7 @@ namespace Tango.MachineStudio.Stubs.ViewModels /// Represents the script execution module main view model. /// /// - public class MainViewVM : ViewModel , IShutdownListener + public class MainViewVM : StudioViewModel { private UsbTransportAdapter _adapter; //Holds the USB transport adapter. private StubManager _stubManager; @@ -523,11 +524,15 @@ namespace Tango.MachineStudio.Stubs.ViewModels Status = "Completed"; } + #endregion + + #region Studio View Model + /// /// Called when [shutdown request]. /// /// - public void OnShuttingDown() + public override void OnShuttingDown() { SettingsManager.Default.MachineStudio.StubsModule.SelectedPort = SelectedPort; SettingsManager.Default.MachineStudio.StubsModule.LastTabs = CodeTabs.Select(x => x.File).ToList(); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Views/MainView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Views/MainView.xaml.cs index 16de196e1..2d099ef16 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Views/MainView.xaml.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Views/MainView.xaml.cs @@ -1,5 +1,4 @@ -using Microsoft.Practices.ServiceLocation; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/packages.config b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/packages.config index a29d1ec82..47f51fbae 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/packages.config +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/packages.config @@ -1,11 +1,11 @@  + - \ No newline at end of file -- cgit v1.3.1 From 8046598cb1439b66a8d6e556a61b715fc859a6b0 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 23 Apr 2018 19:56:48 +0300 Subject: Implemented TeamFoundationClient components !!! --- Software/DB/Tango.mdf | Bin 75497472 -> 75497472 bytes Software/DB/Tango_log.ldf | Bin 1572864 -> 1572864 bytes .../Tango.MachineStudio.Stubs.csproj | 4 +- .../Tango.MachineStudio.Stubs/packages.config | 2 +- .../Tango.MachineStudio.UsersAndRoles.csproj | 4 +- .../packages.config | 2 +- .../Helpers/OutlookHelper.cs | 13 + .../Tango.MachineStudio.Common.csproj | 30 ++ Software/Visual_Studio/Tango.BL/Tango.BL.csproj | 4 +- Software/Visual_Studio/Tango.BL/packages.config | 2 +- .../Visual_Studio/Tango.Core/Helpers/PathHelper.cs | 4 +- .../Visual_Studio/Tango.Core/Tango.Core.csproj | 4 +- Software/Visual_Studio/Tango.Core/packages.config | 2 +- .../Tango.Integration/Tango.Integration.csproj | 4 +- .../Tango.Integration/packages.config | 2 +- .../Tango.Serialization/Tango.Serialization.csproj | 4 +- .../Tango.Serialization/packages.config | 2 +- Software/Visual_Studio/Tango.TFS/Area.cs | 14 + Software/Visual_Studio/Tango.TFS/Attachment.cs | 16 + .../Tango.TFS/ITeamFoundationServiceClient.cs | 19 + Software/Visual_Studio/Tango.TFS/Iteration.cs | 14 + Software/Visual_Studio/Tango.TFS/Priority.cs | 16 + Software/Visual_Studio/Tango.TFS/Project.cs | 30 ++ .../Tango.TFS/Properties/AssemblyInfo.cs | 6 + .../Tango.TFS/Properties/Resources.Designer.cs | 62 +++ .../Tango.TFS/Properties/Resources.resx | 117 ++++++ .../Tango.TFS/Properties/Settings.Designer.cs | 30 ++ .../Tango.TFS/Properties/Settings.settings | 7 + Software/Visual_Studio/Tango.TFS/Severity.cs | 21 + Software/Visual_Studio/Tango.TFS/State.cs | 16 + Software/Visual_Studio/Tango.TFS/Tag.cs | 14 + Software/Visual_Studio/Tango.TFS/Tango.TFS.csproj | 256 +++++++++++++ .../Tango.TFS/TeamFoundationServiceClient.cs | 425 +++++++++++++++++++++ Software/Visual_Studio/Tango.TFS/TeamMember.cs | 23 ++ Software/Visual_Studio/Tango.TFS/WorkItem.cs | 41 ++ Software/Visual_Studio/Tango.TFS/WorkItemType.cs | 15 + Software/Visual_Studio/Tango.TFS/app.config | 11 + Software/Visual_Studio/Tango.TFS/packages.config | 15 + .../Visual_Studio/Tango.UnitTesting/App.config | 8 + .../Visual_Studio/Tango.UnitTesting/Outlook_TST.cs | 35 ++ .../Visual_Studio/Tango.UnitTesting/TFS_TST.cs | 94 +++++ .../Tango.UnitTesting/Tango.UnitTesting.csproj | 40 +- .../Tango.UnitTesting/packages.config | 2 +- Software/Visual_Studio/Tango.sln | 32 ++ .../Tango.Stubs.CLI/Tango.Stubs.CLI.csproj | 4 +- .../Utilities/Tango.Stubs.CLI/packages.config | 2 +- .../Utilities/Tango.Stubs.UI/Tango.Stubs.UI.csproj | 4 +- .../Utilities/Tango.Stubs.UI/packages.config | 2 +- 48 files changed, 1445 insertions(+), 29 deletions(-) create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Helpers/OutlookHelper.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Area.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Attachment.cs create mode 100644 Software/Visual_Studio/Tango.TFS/ITeamFoundationServiceClient.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Iteration.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Priority.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Project.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Properties/AssemblyInfo.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Properties/Resources.Designer.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Properties/Resources.resx create mode 100644 Software/Visual_Studio/Tango.TFS/Properties/Settings.Designer.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Properties/Settings.settings create mode 100644 Software/Visual_Studio/Tango.TFS/Severity.cs create mode 100644 Software/Visual_Studio/Tango.TFS/State.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Tag.cs create mode 100644 Software/Visual_Studio/Tango.TFS/Tango.TFS.csproj create mode 100644 Software/Visual_Studio/Tango.TFS/TeamFoundationServiceClient.cs create mode 100644 Software/Visual_Studio/Tango.TFS/TeamMember.cs create mode 100644 Software/Visual_Studio/Tango.TFS/WorkItem.cs create mode 100644 Software/Visual_Studio/Tango.TFS/WorkItemType.cs create mode 100644 Software/Visual_Studio/Tango.TFS/app.config create mode 100644 Software/Visual_Studio/Tango.TFS/packages.config create mode 100644 Software/Visual_Studio/Tango.UnitTesting/Outlook_TST.cs create mode 100644 Software/Visual_Studio/Tango.UnitTesting/TFS_TST.cs (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs') diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf index df4e51fa5..3e52613c4 100644 Binary files a/Software/DB/Tango.mdf and b/Software/DB/Tango.mdf differ diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf index aac7c56f1..ba2a23609 100644 Binary files a/Software/DB/Tango_log.ldf and b/Software/DB/Tango_log.ldf differ diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Tango.MachineStudio.Stubs.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Tango.MachineStudio.Stubs.csproj index a20f17b7a..eb2248f61 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Tango.MachineStudio.Stubs.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/Tango.MachineStudio.Stubs.csproj @@ -46,8 +46,8 @@ ..\..\..\packages\MaterialDesignThemes.2.3.1.953\lib\net45\MaterialDesignThemes.Wpf.dll - - ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/packages.config b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/packages.config index 47f51fbae..06fdfec56 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/packages.config +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/packages.config @@ -7,5 +7,5 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Tango.MachineStudio.UsersAndRoles.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Tango.MachineStudio.UsersAndRoles.csproj index fc858ad30..a27bb5715 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Tango.MachineStudio.UsersAndRoles.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Tango.MachineStudio.UsersAndRoles.csproj @@ -46,8 +46,8 @@ ..\..\..\packages\MaterialDesignThemes.2.3.1.953\lib\net45\MaterialDesignThemes.Wpf.dll - - ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/packages.config b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/packages.config index ef38b21fd..b02667d27 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/packages.config +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/packages.config @@ -6,5 +6,5 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Helpers/OutlookHelper.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Helpers/OutlookHelper.cs new file mode 100644 index 000000000..58138b625 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Helpers/OutlookHelper.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.MachineStudio.Common.Helpers +{ + public static class OutlookHelper + { + + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj index 4723c7c8b..e4a2720b9 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj @@ -96,6 +96,7 @@ + @@ -257,5 +258,34 @@ + + + {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} + 2 + 8 + 0 + primary + False + True + + + {00062FFF-0000-0000-C000-000000000046} + 9 + 6 + 0 + primary + False + True + + + {00020430-0000-0000-C000-000000000046} + 2 + 0 + 0 + primary + False + True + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj index bdcb8a91d..f9b55d97e 100644 --- a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj +++ b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj @@ -42,8 +42,8 @@ ..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll - - ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll ..\packages\SimpleValidator.0.6.1.0\lib\net40\SimpleValidator.dll diff --git a/Software/Visual_Studio/Tango.BL/packages.config b/Software/Visual_Studio/Tango.BL/packages.config index ed5d800c9..a2c8f52a9 100644 --- a/Software/Visual_Studio/Tango.BL/packages.config +++ b/Software/Visual_Studio/Tango.BL/packages.config @@ -2,7 +2,7 @@ - + diff --git a/Software/Visual_Studio/Tango.Core/Helpers/PathHelper.cs b/Software/Visual_Studio/Tango.Core/Helpers/PathHelper.cs index c04fc1a60..8b4338164 100644 --- a/Software/Visual_Studio/Tango.Core/Helpers/PathHelper.cs +++ b/Software/Visual_Studio/Tango.Core/Helpers/PathHelper.cs @@ -24,12 +24,12 @@ namespace Tango.Core.Helpers } /// - /// Creates a temporary folder and file in %temp%\Twine\{Temporary Recordings}\{RandomFile} and returns the path to that file. + /// Creates a temporary folder and file in %temp%\Twine\{RandomFile} and returns the path to that file. /// /// public static String GetTempFilePath() { - String tempDirectory = Path.Combine(Path.GetTempPath(), "Twine", "Temporary Recordings"); + String tempDirectory = Path.Combine(Path.GetTempPath(), "Twine"); Directory.CreateDirectory(tempDirectory); return Path.Combine(tempDirectory, Path.GetRandomFileName()); } diff --git a/Software/Visual_Studio/Tango.Core/Tango.Core.csproj b/Software/Visual_Studio/Tango.Core/Tango.Core.csproj index ff15274d7..e7172cc21 100644 --- a/Software/Visual_Studio/Tango.Core/Tango.Core.csproj +++ b/Software/Visual_Studio/Tango.Core/Tango.Core.csproj @@ -34,8 +34,8 @@ ..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll - - ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Software/Visual_Studio/Tango.Core/packages.config b/Software/Visual_Studio/Tango.Core/packages.config index 77e93188f..a9ac483b5 100644 --- a/Software/Visual_Studio/Tango.Core/packages.config +++ b/Software/Visual_Studio/Tango.Core/packages.config @@ -2,6 +2,6 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj index 0f6da30af..29f5a8b5e 100644 --- a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj +++ b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj @@ -39,8 +39,8 @@ ..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll - - ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Software/Visual_Studio/Tango.Integration/packages.config b/Software/Visual_Studio/Tango.Integration/packages.config index c2f72c92d..826cafd8b 100644 --- a/Software/Visual_Studio/Tango.Integration/packages.config +++ b/Software/Visual_Studio/Tango.Integration/packages.config @@ -2,7 +2,7 @@ - + diff --git a/Software/Visual_Studio/Tango.Serialization/Tango.Serialization.csproj b/Software/Visual_Studio/Tango.Serialization/Tango.Serialization.csproj index d81543f87..63cc65639 100644 --- a/Software/Visual_Studio/Tango.Serialization/Tango.Serialization.csproj +++ b/Software/Visual_Studio/Tango.Serialization/Tango.Serialization.csproj @@ -33,8 +33,8 @@ ..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll - - ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Software/Visual_Studio/Tango.Serialization/packages.config b/Software/Visual_Studio/Tango.Serialization/packages.config index 4f345323a..f147efb72 100644 --- a/Software/Visual_Studio/Tango.Serialization/packages.config +++ b/Software/Visual_Studio/Tango.Serialization/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.TFS/Area.cs b/Software/Visual_Studio/Tango.TFS/Area.cs new file mode 100644 index 000000000..a79f9c0f1 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Area.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public class Area + { + public String Name { get; set; } + public String Path { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.TFS/Attachment.cs b/Software/Visual_Studio/Tango.TFS/Attachment.cs new file mode 100644 index 000000000..a32074d9d --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Attachment.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public class Attachment + { + public String FilePath { get; set; } + public String Name { get; set; } + public String Description { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.TFS/ITeamFoundationServiceClient.cs b/Software/Visual_Studio/Tango.TFS/ITeamFoundationServiceClient.cs new file mode 100644 index 000000000..0f8ae5e82 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/ITeamFoundationServiceClient.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public interface ITeamFoundationServiceClient + { + Task GetProject(String name); + + Task UploadWorkItem(Project project, WorkItem workItem); + + Task GetWorkItem(Project project, int id); + + Task DeleteWorkItem(Project project, int id); + } +} diff --git a/Software/Visual_Studio/Tango.TFS/Iteration.cs b/Software/Visual_Studio/Tango.TFS/Iteration.cs new file mode 100644 index 000000000..f51f981bd --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Iteration.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public class Iteration + { + public String Name { get; set; } + public String Path { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.TFS/Priority.cs b/Software/Visual_Studio/Tango.TFS/Priority.cs new file mode 100644 index 000000000..88e2a0ca5 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Priority.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public enum Priority + { + Priority1 = 1, + Priority2 = 2, + Priority3 = 3, + Priority4 = 4, + } +} diff --git a/Software/Visual_Studio/Tango.TFS/Project.cs b/Software/Visual_Studio/Tango.TFS/Project.cs new file mode 100644 index 000000000..b3584ca23 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Project.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public class Project + { + public Guid ID { get; set; } + public String Name { get; set; } + public String Description { get; set; } + public String URL { get; set; } + public List Areas { get; set; } + public List Iterations { get; set; } + public List UserStories { get; set; } + public List Members { get; set; } + public List Tags { get; set; } + + public Project() + { + Areas = new List(); + Iterations = new List(); + UserStories = new List(); + Members = new List(); + Tags = new List(); + } + } +} diff --git a/Software/Visual_Studio/Tango.TFS/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Tango.TFS/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..0b9dc84f7 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Properties/AssemblyInfo.cs @@ -0,0 +1,6 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("Tango - VSTS API Library")] +[assembly: ComVisible(false)] \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.TFS/Properties/Resources.Designer.cs b/Software/Visual_Studio/Tango.TFS/Properties/Resources.Designer.cs new file mode 100644 index 000000000..5d8827cf6 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Properties/Resources.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Tango.TFS.Properties { + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if ((resourceMan == null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tango.TFS.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Software/Visual_Studio/Tango.TFS/Properties/Resources.resx b/Software/Visual_Studio/Tango.TFS/Properties/Resources.resx new file mode 100644 index 000000000..af7dbebba --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.TFS/Properties/Settings.Designer.cs b/Software/Visual_Studio/Tango.TFS/Properties/Settings.Designer.cs new file mode 100644 index 000000000..c3089365e --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Tango.TFS.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Software/Visual_Studio/Tango.TFS/Properties/Settings.settings b/Software/Visual_Studio/Tango.TFS/Properties/Settings.settings new file mode 100644 index 000000000..033d7a5e9 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.TFS/Severity.cs b/Software/Visual_Studio/Tango.TFS/Severity.cs new file mode 100644 index 000000000..c57214d64 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Severity.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public enum Severity + { + [Description("1 - Critical")] + Critical, + [Description("2 - High")] + High, + [Description("3 - Medium")] + Medium, + [Description("4 - Low")] + Low, + } +} diff --git a/Software/Visual_Studio/Tango.TFS/State.cs b/Software/Visual_Studio/Tango.TFS/State.cs new file mode 100644 index 000000000..dfa905846 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/State.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public enum State + { + New, + Active, + Resolved, + Closed + } +} diff --git a/Software/Visual_Studio/Tango.TFS/Tag.cs b/Software/Visual_Studio/Tango.TFS/Tag.cs new file mode 100644 index 000000000..008c8d8eb --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Tag.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public class Tag + { + public Guid ID { get; set; } + public String Name { get; set; } + } +} diff --git a/Software/Visual_Studio/Tango.TFS/Tango.TFS.csproj b/Software/Visual_Studio/Tango.TFS/Tango.TFS.csproj new file mode 100644 index 000000000..00c9171c3 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/Tango.TFS.csproj @@ -0,0 +1,256 @@ + + + + + Debug + AnyCPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32} + library + Tango.TFS + Tango.TFS + v4.6 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + + + + + true + full + false + ..\Build\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Build\Release\ + TRACE + prompt + 4 + + + + ..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.3.13.5\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll + + + ..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.3.13.5\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll + + + ..\packages\WindowsAzure.ServiceBus.3.3.2\lib\net45-full\Microsoft.ServiceBus.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Build.Client.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Build.Common.dll + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.Build2.WebApi.dll + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.Chat.WebApi.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Client.dll + + + ..\packages\Microsoft.VisualStudio.Services.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.Common.dll + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.Core.WebApi.dll + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.Dashboards.WebApi.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.DeleteTeamProject.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Diff.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Discussion.Client.dll + + + ..\packages\Microsoft.TeamFoundation.DistributedTask.Common.15.112.1\lib\net45\Microsoft.TeamFoundation.DistributedTask.Common.Contracts.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Git.Client.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Lab.Client.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Lab.Common.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Lab.TestIntegration.Client.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.Lab.WorkflowIntegration.Client.dll + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.Policy.WebApi.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.ProjectManagement.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.SharePointReporting.Integration.dll + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.SourceControl.WebApi.dll + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.Test.WebApi.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.TestImpact.Client.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.TestManagement.Client.dll + True + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.TestManagement.Common.dll + True + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.TestManagement.WebApi.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.VersionControl.Client.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.VersionControl.Common.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.VersionControl.Common.Integration.dll + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.Work.WebApi.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.WorkItemTracking.Client.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.WorkItemTracking.Common.dll + + + ..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\net45\Microsoft.TeamFoundation.WorkItemTracking.Proxy.dll + + + ..\packages\Microsoft.TeamFoundationServer.Client.15.112.1\lib\net45\Microsoft.TeamFoundation.WorkItemTracking.WebApi.dll + + + ..\packages\Microsoft.VisualStudio.Services.InteractiveClient.15.112.1\lib\net45\Microsoft.VisualStudio.Services.Client.Interactive.dll + + + ..\packages\Microsoft.VisualStudio.Services.Client.15.112.1\lib\net45\Microsoft.VisualStudio.Services.Common.dll + + + ..\packages\Microsoft.VisualStudio.Services.Client.15.112.1\lib\net45\Microsoft.VisualStudio.Services.WebApi.dll + + + ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll + False + + + + + ..\packages\System.IdentityModel.Tokens.Jwt.4.0.2.206221351\lib\net45\System.IdentityModel.Tokens.Jwt.dll + + + ..\packages\Microsoft.AspNet.WebApi.Client.5.2.2\lib\net45\System.Net.Http.Formatting.dll + + + + + ..\packages\Microsoft.Tpl.Dataflow.4.5.24\lib\portable-net45+win8+wpa81\System.Threading.Tasks.Dataflow.dll + True + + + ..\packages\Microsoft.AspNet.WebApi.Core.5.2.2\lib\net45\System.Web.Http.dll + + + + + + + + + 4.0 + + + + + + + + GlobalVersionInfo.cs + + + + + + + + + + + + + + + + + + + + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + {a34ee0f0-649d-41c8-8489-b6f1cc6924ee} + Tango.Core + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.TFS/TeamFoundationServiceClient.cs b/Software/Visual_Studio/Tango.TFS/TeamFoundationServiceClient.cs new file mode 100644 index 000000000..6bcea336e --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/TeamFoundationServiceClient.cs @@ -0,0 +1,425 @@ +using Microsoft.TeamFoundation.Client; +using Microsoft.TeamFoundation.Core.WebApi; +using Microsoft.TeamFoundation.WorkItemTracking.Client; +using Microsoft.TeamFoundation.WorkItemTracking.WebApi; +using Microsoft.VisualStudio.Services.Common; +using Microsoft.VisualStudio.Services.WebApi; +using Microsoft.VisualStudio.Services.WebApi.Patch; +using Microsoft.VisualStudio.Services.WebApi.Patch.Json; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public class TeamFoundationServiceClient : ITeamFoundationServiceClient + { + private class ExtensionFields + { + public const String FOUND_IN_BUILD = "Microsoft.VSTS.Build.FoundIn"; + public const String SEVERITY = "Microsoft.VSTS.Common.Severity"; + public const String PRIORITY = "Microsoft.VSTS.Common.Priority"; + public const String STEPS_TO_REP = "Microsoft.VSTS.TCM.ReproSteps"; + public const String SYSTEM_INFO = "Microsoft.VSTS.TCM.SystemInfo"; + } + + public String CollectionURL { get; private set; } + + public String PersonalToken { get; private set; } + + public String UserName { get; private set; } + + public TeamFoundationServiceClient(String collectionURL, String userName, String personalToken) + { + CollectionURL = collectionURL; + UserName = userName; + PersonalToken = personalToken; + } + + public Task GetProject(string name) + { + return Task.Factory.StartNew(() => + { + Project p = new Project(); + + VssConnection connection = CreateConnection(); + + ProjectHttpClient projectClient = connection.GetClient(); + TeamProjectReference project = projectClient.GetProjects(null).Result.FirstOrDefault(x => x.Name == name); + + if (project == null) + { + throw new ArgumentException(String.Format("Project '{0}' could not be found.", name)); + } + + p.Name = project.Name; + p.ID = project.Id; + p.URL = project.Url; + p.Description = project.Description; + + TeamHttpClient teamClient = connection.GetClient(); + var team = teamClient.GetTeamsAsync(project.Id.ToString()).Result.FirstOrDefault(); + + IEnumerable teamMembers = teamClient.GetTeamMembersAsync(project.Id.ToString(), team.Id.ToString()).Result; + + foreach (var member in teamMembers) + { + TeamMember teamMember = new TeamMember(); + teamMember.ID = member.Id; + teamMember.DisplayName = member.DisplayName; + teamMember.ImageURL = member.ImageUrl; + teamMember.UniqueName = member.UniqueName; + teamMember.URL = member.Url; + + p.Members.Add(teamMember); + } + + TaggingHttpClient taggingClient = connection.GetClient(); + WebApiTagDefinitionList tags = taggingClient.GetTagsAsync(project.Id).Result; + + foreach (var tag in tags) + { + p.Tags.Add(new Tag() + { + ID = tag.Id, + Name = tag.Name, + }); + } + + var projCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(CollectionURL)); + var store = projCollection.GetService(); + + WorkItemCollection queryResults = store.Query("Select [State], [Title] " + "From WorkItems " + "Where [Work Item Type] = 'User Story'"); + + var userStories = queryResults.OfType().Where(x => x.Project.Name == project.Name).ToList(); + + foreach (var userStory in userStories) + { + WorkItem story = new WorkItem(); + + story.Type = WorkItemType.UserStory; + story.Title = userStory.Title; + story.ID = userStory.Id; + story.URL = userStory.Uri.ToString(); + story.Description = userStory.Description; + + if (userStory.Fields[CoreField.AssignedTo].Value != null) + { + story.AssignedTo = p.Members.SingleOrDefault(x => x.AssignName == userStory.Fields[CoreField.AssignedTo].Value.ToString()); + } + + story.Area = new Area() { Name = userStory.AreaPath }; + story.Iteration = new Iteration() { Name = userStory.IterationPath }; + + p.UserStories.Add(story); + } + + p.Areas.Add(new Area() { Name = project.Name, Path = project.Name }); + + foreach (var area in store.Projects[project.Name].AreaRootNodes.OfType()) + { + p.Areas.Add(new Area() + { + Name = area.Name, + Path = area.Path, + }); + } + + foreach (var iteration in store.Projects[project.Name].IterationRootNodes.OfType()) + { + p.Iterations.Add(new Iteration() + { + Name = iteration.Name, + Path = iteration.Path, + }); + } + + return p; + }); + } + + public Task UploadWorkItem(Project project, WorkItem workItem) + { + return Task.Factory.StartNew(() => + { + var connection = CreateConnection(); + + //var projCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(CollectionURL)); + //WorkItemStore s = new WorkItemStore(projCollection, WorkItemStoreFlags.BypassRules); + + WorkItemTrackingHttpClient witClient = connection.GetClient(); + + var patchDocument = new JsonPatchDocument(); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.Title), + Value = workItem.Title, + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.Description), + Value = workItem.Description, + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.IterationPath), + Value = workItem.Iteration.Path, + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.AreaPath), + Value = workItem.Area.Path, + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.AssignedTo), + Value = workItem.AssignedTo.AssignName, + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.CreatedBy), + Value = workItem.CreatedBy.AssignName, + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.ChangedBy), + Value = workItem.ChangedBy.AssignName, + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.AuthorizedAs), + Value = workItem.AuthorizedAs.AssignName, + }); + + if (workItem.UserStory != null) + { + patchDocument.Add( + new JsonPatchOperation() + { + Operation = Operation.Add, + Path = "/relations/-", + Value = new + { + rel = "System.LinkTypes.Hierarchy-Reverse", + url = workItem.UserStory.URL, + } + } + ); + } + + foreach (var attachment in workItem.Attachments) + { + Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.AttachmentReference attachmentReference = witClient.CreateAttachmentAsync(attachment.FilePath).Result; + + patchDocument.Add( + new JsonPatchOperation() + { + Operation = Operation.Add, + Path = "/relations/-", + Value = new + { + rel = "AttachedFile", + url = attachmentReference.Url, + attributes = new { comment = attachment.Description, name = attachment.Name } + } + } + ); + } + + if (workItem.Tags.Count > 0) + { + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.Tags), + Value = String.Join("; ", workItem.Tags.Select(x => x.Name)), + }); + } + + if (!String.IsNullOrWhiteSpace(workItem.StepsToReproduce)) + { + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetExtensionFieldNameForPut(ExtensionFields.STEPS_TO_REP), + Value = workItem.StepsToReproduce, + }); + } + + if (!String.IsNullOrWhiteSpace(workItem.FoundInBuild)) + { + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetExtensionFieldNameForPut(ExtensionFields.FOUND_IN_BUILD), + Value = workItem.FoundInBuild, + }); + } + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetFieldNameForPut(CoreField.State), + Value = workItem.State.ToString(), + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetExtensionFieldNameForPut(ExtensionFields.SEVERITY), + Value = workItem.Severity.ToDescription(), + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetExtensionFieldNameForPut(ExtensionFields.PRIORITY), + Value = (int)workItem.Priority, + }); + + patchDocument.Add(new JsonPatchOperation + { + Operation = Operation.Add, + Path = GetExtensionFieldNameForPut(ExtensionFields.SYSTEM_INFO), + Value = workItem.SystemInformation, + }); + + var resultWorkItem = witClient.CreateWorkItemAsync(patchDocument, project.Name, workItem.Type.ToString(), bypassRules: true).Result; + + workItem.ID = resultWorkItem.Id.Value; + workItem.URL = resultWorkItem.Url; + + return workItem; + }); + } + + private VssConnection CreateConnection() + { + VssConnection connection = new VssConnection(new Uri(CollectionURL), new VssBasicCredential(UserName, PersonalToken)); + return connection; + } + + private String GetFieldName(CoreField field) + { + return "System." + field.ToString(); + } + + private String GetFieldNameForPut(CoreField field) + { + return "/fields/System." + field.ToString(); + } + + private String GetExtensionFieldNameForPut(String extensionFieldName) + { + return "/fields/" + extensionFieldName; + } + + public Task GetWorkItem(Project project, int id) + { + return Task.Factory.StartNew(() => + { + WorkItem workItem = new WorkItem(); + + var connection = CreateConnection(); + + WorkItemTrackingHttpClient witClient = connection.GetClient(); + + var item = witClient.GetWorkItemAsync(id, expand: Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.WorkItemExpand.All).Result; + + workItem.ID = item.Id.Value; + workItem.Title = item.Fields[GetFieldName(CoreField.Title)].ToString(); + workItem.Description = TryGetField(item.Fields, GetFieldName(CoreField.Description)); + workItem.Area = new Area() + { + Path = item.Fields[GetFieldName(CoreField.AreaPath)].ToString(), + Name = Path.GetFileName(item.Fields[GetFieldName(CoreField.AreaPath)].ToString()), + }; + workItem.Iteration = new Iteration() + { + Path = item.Fields[GetFieldName(CoreField.IterationPath)].ToString(), + Name = Path.GetFileName(item.Fields[GetFieldName(CoreField.IterationPath)].ToString()), + }; + + workItem.AssignedTo = project.Members.SingleOrDefault(x => x.AssignName == TryGetField(item.Fields, GetFieldName(CoreField.AssignedTo))); + workItem.CreatedBy = project.Members.SingleOrDefault(x => x.AssignName == TryGetField(item.Fields, GetFieldName(CoreField.CreatedBy))); + workItem.ChangedBy = project.Members.SingleOrDefault(x => x.AssignName == TryGetField(item.Fields, GetFieldName(CoreField.ChangedBy))); + workItem.AuthorizedAs = project.Members.SingleOrDefault(x => x.AssignName == TryGetField(item.Fields, GetFieldName(CoreField.AuthorizedAs))); + + workItem.Type = (WorkItemType)Enum.Parse(typeof(WorkItemType), item.Fields[GetFieldName(CoreField.WorkItemType)].ToString()); + workItem.URL = item.Url; + + if (item.Fields.ContainsKey(GetFieldName(CoreField.Tags))) + { + List tags = item.Fields[GetFieldName(CoreField.Tags)].ToString().Split(';').Select(x => x.Trim()).ToList(); + workItem.Tags = tags.Select(x => new Tag() { Name = x }).ToList(); + } + + workItem.FoundInBuild = item.Fields[ExtensionFields.FOUND_IN_BUILD].ToString(); + + workItem.State = (State)Enum.Parse(typeof(State), item.Fields[GetFieldName(CoreField.State)].ToString()); + + workItem.Severity = ParseEnumByDescription(item.Fields[ExtensionFields.SEVERITY].ToString()); + + workItem.Priority = (Priority)int.Parse(item.Fields[ExtensionFields.PRIORITY].ToString()); + + workItem.StepsToReproduce = item.Fields[ExtensionFields.STEPS_TO_REP].ToString(); + + workItem.SystemInformation = item.Fields[ExtensionFields.SYSTEM_INFO].ToString(); + + return workItem; + }); + } + + public Task DeleteWorkItem(Project project, int id) + { + return Task.Factory.StartNew(() => + { + var connection = CreateConnection(); + + WorkItemTrackingHttpClient witClient = connection.GetClient(); + var result = witClient.DeleteWorkItemAsync(id, true).Result; + }); + } + + private String TryGetField(IDictionary fields, String key) + { + if (fields.ContainsKey(key)) + { + return fields[key].ToString(); + } + + return String.Empty; + } + + private T ParseEnumByDescription(String description) + { + Dictionary values = new Dictionary(); + + foreach (var item in Enum.GetValues(typeof(T))) + { + values.Add(((Enum)item).ToDescription(), (T)item); + } + + return values[description]; + } + } +} diff --git a/Software/Visual_Studio/Tango.TFS/TeamMember.cs b/Software/Visual_Studio/Tango.TFS/TeamMember.cs new file mode 100644 index 000000000..0d8d402f8 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/TeamMember.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public class TeamMember + { + public String ID { get; set; } + public String UniqueName { get; set; } + public String DisplayName { get; set; } + public String URL { get; set; } + public String ImageURL { get; set; } + + public String AssignName + { + get { return String.Format("{0} <{1}>", DisplayName, UniqueName); } + } + + } +} diff --git a/Software/Visual_Studio/Tango.TFS/WorkItem.cs b/Software/Visual_Studio/Tango.TFS/WorkItem.cs new file mode 100644 index 000000000..305f7d864 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/WorkItem.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public class WorkItem + { + public int ID { get; set; } + public String URL { get; set; } + public WorkItemType Type { get; set; } + public Area Area { get; set; } + public Iteration Iteration { get; set; } + public String Title { get; set; } + public String Description { get; set; } + public State State { get; set; } + public Severity Severity { get; set; } + public Priority Priority { get; set; } + public String StepsToReproduce { get; set; } + public String SystemInformation { get; set; } + public TeamMember AssignedTo { get; set; } + public TeamMember CreatedBy { get; set; } + public TeamMember ChangedBy { get; set; } + public TeamMember AuthorizedAs { get; set; } + public List Attachments { get; set; } + public List Tags { get; set; } + public WorkItem UserStory { get; set; } + public String FoundInBuild { get; set; } + + public WorkItem() + { + Attachments = new List(); + Tags = new List(); + Severity = Severity.Medium; + Priority = Priority.Priority3; + } + } +} diff --git a/Software/Visual_Studio/Tango.TFS/WorkItemType.cs b/Software/Visual_Studio/Tango.TFS/WorkItemType.cs new file mode 100644 index 000000000..31807ccb8 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/WorkItemType.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.TFS +{ + public enum WorkItemType + { + Task, + Bug, + UserStory, + } +} diff --git a/Software/Visual_Studio/Tango.TFS/app.config b/Software/Visual_Studio/Tango.TFS/app.config new file mode 100644 index 000000000..de5386a47 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.TFS/packages.config b/Software/Visual_Studio/Tango.TFS/packages.config new file mode 100644 index 000000000..c39c44fe7 --- /dev/null +++ b/Software/Visual_Studio/Tango.TFS/packages.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.UnitTesting/App.config b/Software/Visual_Studio/Tango.UnitTesting/App.config index 516b46de6..346a716a3 100644 --- a/Software/Visual_Studio/Tango.UnitTesting/App.config +++ b/Software/Visual_Studio/Tango.UnitTesting/App.config @@ -63,6 +63,14 @@ + + + + + + + + \ No newline at end of file diff --git a/Software/Visual_Studio/Tango.UnitTesting/Outlook_TST.cs b/Software/Visual_Studio/Tango.UnitTesting/Outlook_TST.cs new file mode 100644 index 000000000..b34db8578 --- /dev/null +++ b/Software/Visual_Studio/Tango.UnitTesting/Outlook_TST.cs @@ -0,0 +1,35 @@ +using Microsoft.Office.Interop.Outlook; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Outlook = Microsoft.Office.Interop.Outlook; + +namespace Tango.UnitTesting +{ + [TestClass] + [TestCategory("Outlook")] + public class Outlook_TST + { + [TestMethod] + public void Send_Email_With_Logs() + { + Application app = new Application(); + MailItem email = (MailItem)app.CreateItem(OlItemType.olMailItem); + email.Subject = "Machine Studio Test"; + email.To = "roy@twine-s.com"; + email.Body = "Some body"; + + email.Attachments.Add( + "D:\\C#.txt", + OlAttachmentType.olByValue, + 1, + "CSharp Code"); + + email.Importance = OlImportance.olImportanceNormal; + email.Send(); + } + } +} diff --git a/Software/Visual_Studio/Tango.UnitTesting/TFS_TST.cs b/Software/Visual_Studio/Tango.UnitTesting/TFS_TST.cs new file mode 100644 index 000000000..2727ad00e --- /dev/null +++ b/Software/Visual_Studio/Tango.UnitTesting/TFS_TST.cs @@ -0,0 +1,94 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Core.Helpers; +using Tango.TFS; + +namespace Tango.UnitTesting +{ + [TestClass] + [TestCategory("Team Foundation Service")] + public class TFS_TST + { + private ITeamFoundationServiceClient CreateClient() + { + ITeamFoundationServiceClient client = new TeamFoundationServiceClient( + + "https://twinetfs.visualstudio.com/DefaultCollection", + "Roy", + "szzfokrceo4rhd4eqi5qpmxn3pa5iwl3q7tlqd36l2m7smz2ynoa"); + return client; + } + + [TestMethod] + public void Get_Tango_Project() + { + ITeamFoundationServiceClient client = CreateClient(); + + var project = client.GetProject("Tango").Result; + + Assert.IsNotNull(project); + } + + [TestMethod] + public void Get_Work_Item() + { + ITeamFoundationServiceClient client = CreateClient(); + + var project = client.GetProject("Tango").Result; + + Assert.IsNotNull(project); + + var workItem = client.GetWorkItem(project, 153).Result; + + Assert.IsNotNull(workItem); + } + + [TestMethod] + public void Upload_Work_Item() + { + ITeamFoundationServiceClient client = CreateClient(); + + var project = client.GetProject("Tango").Result; + + Assert.IsNotNull(project); + + WorkItem item = new WorkItem(); + item.Area = project.Areas.First(); + item.AssignedTo = project.Members.Single(x => x.DisplayName.Contains("Roy")); + item.CreatedBy = project.Members.Single(x => x.DisplayName.Contains("Shlomo")); + item.ChangedBy = project.Members.Single(x => x.DisplayName.Contains("Shlomo")); + item.AuthorizedAs = project.Members.Single(x => x.DisplayName.Contains("Shlomo")); + + String tempFile = PathHelper.GetTempFilePath(); + File.AppendAllText(tempFile, "This is a test text file..."); + + item.Attachments.Add(new Attachment() + { + Description = "Test Attachment", + FilePath = tempFile, + Name = "TestDocument.txt" + }); + + item.Description = "This is a test description"; + item.FoundInBuild = "1.0.0.9"; + item.Iteration = project.Iterations.First(); + item.Priority = Priority.Priority3; + item.Severity = Severity.Medium; + item.State = State.New; + item.StepsToReproduce = "Step 1" + Environment.NewLine + "Step 2"; + item.SystemInformation = "This is the system information"; + item.Tags.Add(project.Tags.First()); + item.Title = "Test Bug"; + item.Type = WorkItemType.Bug; + + var workItem = client.UploadWorkItem(project, item).Result; + + Assert.IsNotNull(workItem); + } + } +} diff --git a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj index 9a4e25264..fd7de86c4 100644 --- a/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj +++ b/Software/Visual_Studio/Tango.UnitTesting/Tango.UnitTesting.csproj @@ -53,14 +53,15 @@ ..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll + ..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll ..\packages\MSTest.TestFramework.1.1.11\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll - - ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll @@ -88,6 +89,8 @@ + + @@ -159,11 +162,44 @@ {7ada4e86-cad7-4968-a210-3a8a9e5153ab} Tango.Synchronization + + {998f8471-dc1b-41b6-9d96-354e1b4e7a32} + Tango.TFS + {ebb7cb9f-6af2-456b-a5dd-1b136b605d90} Tango.DBObservablesGenerator.CLI + + + {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52} + 2 + 8 + 0 + primary + False + True + + + {00062FFF-0000-0000-C000-000000000046} + 9 + 6 + 0 + primary + False + True + + + {00020430-0000-0000-C000-000000000046} + 2 + 0 + 0 + primary + False + True + + diff --git a/Software/Visual_Studio/Tango.UnitTesting/packages.config b/Software/Visual_Studio/Tango.UnitTesting/packages.config index 7df5dedbd..16e993ae8 100644 --- a/Software/Visual_Studio/Tango.UnitTesting/packages.config +++ b/Software/Visual_Studio/Tango.UnitTesting/packages.config @@ -5,7 +5,7 @@ - + diff --git a/Software/Visual_Studio/Tango.sln b/Software/Visual_Studio/Tango.sln index 602d41f92..d845eb0ab 100644 --- a/Software/Visual_Studio/Tango.sln +++ b/Software/Visual_Studio/Tango.sln @@ -165,6 +165,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PortsListGenerator", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.Documents", "Tango.Documents\Tango.Documents.csproj", "{CA87A608-7B17-4C98-88F2-42ABEE10F4C1}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.TFS", "Tango.TFS\Tango.TFS.csproj", "{998F8471-DC1B-41B6-9D96-354E1B4E7A32}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -2194,6 +2196,36 @@ Global {CA87A608-7B17-4C98-88F2-42ABEE10F4C1}.Release|x64.Build.0 = Release|Any CPU {CA87A608-7B17-4C98-88F2-42ABEE10F4C1}.Release|x86.ActiveCfg = Release|Any CPU {CA87A608-7B17-4C98-88F2-42ABEE10F4C1}.Release|x86.Build.0 = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|Any CPU.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|ARM.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|ARM.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|ARM64.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|x64.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|x64.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|x86.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Debug|x86.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|Any CPU.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|Any CPU.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|ARM.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|ARM.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|ARM64.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|ARM64.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|x64.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|x64.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|x86.ActiveCfg = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.DefaultBuild|x86.Build.0 = Debug|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|Any CPU.ActiveCfg = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|Any CPU.Build.0 = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|ARM.ActiveCfg = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|ARM.Build.0 = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|ARM64.ActiveCfg = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|ARM64.Build.0 = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|x64.ActiveCfg = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|x64.Build.0 = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|x86.ActiveCfg = Release|Any CPU + {998F8471-DC1B-41B6-9D96-354E1B4E7A32}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/Tango.Stubs.CLI.csproj b/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/Tango.Stubs.CLI.csproj index c9fffe6dd..78bc4f44e 100644 --- a/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/Tango.Stubs.CLI.csproj +++ b/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/Tango.Stubs.CLI.csproj @@ -41,8 +41,8 @@ ..\..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll - - ..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/packages.config b/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/packages.config index 07d257330..2ec46e138 100644 --- a/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/packages.config +++ b/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/packages.config @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Tango.Stubs.UI.csproj b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Tango.Stubs.UI.csproj index ea3f338ec..a4e434eb8 100644 --- a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Tango.Stubs.UI.csproj +++ b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Tango.Stubs.UI.csproj @@ -52,8 +52,8 @@ ..\..\packages\MahApps.Metro.1.5.0\lib\net45\MahApps.Metro.dll - - ..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + ..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/packages.config b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/packages.config index 9aed4e8d0..7725c864a 100644 --- a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/packages.config +++ b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/packages.config @@ -5,5 +5,5 @@ - + \ No newline at end of file -- cgit v1.3.1