From ae1ebc540a5e5f1bef6f3f094d5430d417f92387 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Mon, 12 Aug 2019 10:24:30 -0400 Subject: [PATCH 01/13] Isolated JSON settings to library (instead of affecting hosting app-wide settings) --- AmplitudeSharp/AmplitudeService.cs | 33 +++++++++++++++++------------- AmplitudeSharp/Api/AmplitudeApi.cs | 25 ++++++++++++---------- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/AmplitudeSharp/AmplitudeService.cs b/AmplitudeSharp/AmplitudeService.cs index 87c2207..7ed7743 100644 --- a/AmplitudeSharp/AmplitudeService.cs +++ b/AmplitudeSharp/AmplitudeService.cs @@ -32,6 +32,17 @@ public static AmplitudeService Instance private AmplitudeIdentify identification; private SemaphoreSlim eventsReady; private long sessionId; + private readonly JsonSerializerSettings apiJsonSerializerSettings = new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore, + Formatting = Formatting.None, + }; + private readonly JsonSerializerSettings persistenceJsonSerializerSettings = new JsonSerializerSettings + { + TypeNameHandling = TypeNameHandling.Objects, + NullValueHandling = NullValueHandling.Ignore, + Formatting = Formatting.None, + }; /// /// Sets Offline mode, which means the events are never sent to actual amplitude service @@ -52,32 +63,26 @@ public bool OfflineMode /// /// Additional properties to send with every event /// - public Dictionary ExtraEventProperties { get; private set; } = new Dictionary(); + public Dictionary ExtraEventProperties { get; } = new Dictionary(); private AmplitudeService(string apiKey) { lockObject = new object(); - api = new AmplitudeApi(apiKey); + api = new AmplitudeApi(apiKey, apiJsonSerializerSettings); eventQueue = new List(); cancellationToken = new CancellationTokenSource(); eventsReady = new SemaphoreSlim(0); - - JsonConvert.DefaultSettings = () => new JsonSerializerSettings() - { - NullValueHandling = NullValueHandling.Ignore, - Formatting = Formatting.None - }; } public void Dispose() - { + { Uninitialize(); s_instance = null; } /// /// Initialize AmplitudeSharp - /// Takes an API key for the project and, optionally, + /// Takes an API key for the project and, optionally, /// a stream where offline/past events are stored /// /// api key for the project to stream data to @@ -233,7 +238,7 @@ private void SaveEvents(Stream persistenceStore) { try { - string persistedData = JsonConvert.SerializeObject(eventQueue, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Objects }); + string persistedData = JsonConvert.SerializeObject(eventQueue, persistenceJsonSerializerSettings); using (var writer = new StreamWriter(persistenceStore)) { writer.Write(persistedData); @@ -241,7 +246,7 @@ private void SaveEvents(Stream persistenceStore) } catch (Exception e) { - AmplitudeService.s_logger(LogLevel.Error, $"Failed to persist events: {e.ToString()}"); + AmplitudeService.s_logger(LogLevel.Error, $"Failed to persist events: {e}"); } } } @@ -253,7 +258,7 @@ private void LoadPastEvents(Stream persistenceStore) using (var reader = new StreamReader(persistenceStore)) { string persistedData = reader.ReadLine(); - var data = JsonConvert.DeserializeObject>(persistedData, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Objects }); + var data = JsonConvert.DeserializeObject>(persistedData, persistenceJsonSerializerSettings); eventQueue.InsertRange(0, data); eventsReady.Release(); @@ -261,7 +266,7 @@ private void LoadPastEvents(Stream persistenceStore) } catch (Exception e) { - AmplitudeService.s_logger(LogLevel.Error, $"Failed to load persisted events: {e.ToString()}"); + AmplitudeService.s_logger(LogLevel.Error, $"Failed to load persisted events: {e}"); } } diff --git a/AmplitudeSharp/Api/AmplitudeApi.cs b/AmplitudeSharp/Api/AmplitudeApi.cs index ae5a6ff..6ae4109 100644 --- a/AmplitudeSharp/Api/AmplitudeApi.cs +++ b/AmplitudeSharp/Api/AmplitudeApi.cs @@ -4,6 +4,7 @@ using System.Net.Http; using System.Text; using System.Threading.Tasks; +using Newtonsoft.Json; namespace AmplitudeSharp.Api { @@ -29,16 +30,18 @@ class AmplitudeApi : IAmplitudeApi private string apiKey; private HttpClient httpClient; private HttpClientHandler httpHandler; + private readonly JsonSerializerSettings jsonSerializerSettings; - public AmplitudeApi(string apiKey) + public AmplitudeApi(string apiKey, JsonSerializerSettings jsonSerializerSettings) { this.apiKey = apiKey; + this.jsonSerializerSettings = jsonSerializerSettings; - httpHandler = new HttpClientHandler(); - httpHandler.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; - httpHandler.Proxy = WebRequest.GetSystemWebProxy(); - httpHandler.UseProxy = true; - + httpHandler = new HttpClientHandler { + AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip, + Proxy = WebRequest.GetSystemWebProxy(), + UseProxy = true, + }; httpClient = new HttpClient(httpHandler); } @@ -49,21 +52,21 @@ public void ConfigureProxy(string proxyUserName, string proxyPassword) httpHandler.Proxy = WebRequest.GetSystemWebProxy(); } else - { + { httpHandler.Proxy.Credentials = new NetworkCredential(proxyUserName, proxyPassword); - } + } } public override Task Identify(AmplitudeIdentify identification) { - string data = Newtonsoft.Json.JsonConvert.SerializeObject(identification); + string data = JsonConvert.SerializeObject(identification, jsonSerializerSettings); return DoApiCall("identify", "identification", data); } public override Task SendEvents(List events) { - string data = Newtonsoft.Json.JsonConvert.SerializeObject(events); + string data = JsonConvert.SerializeObject(events, jsonSerializerSettings); return DoApiCall("httpapi", "event", data); } @@ -117,7 +120,7 @@ private async Task DoApiCall(string endPoint, string paramName, stri catch (Exception e) { result = SendResult.ServerError; - AmplitudeService.s_logger(LogLevel.Warning, $"Failed to get device make/model: {e.ToString()}"); + AmplitudeService.s_logger(LogLevel.Warning, $"Failed to get device make/model: {e}"); } } From 52f54b41010671ddd860c70098ba67bdcf206fd0 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Tue, 13 Aug 2019 13:41:49 -0400 Subject: [PATCH 02/13] BIT: Set default Amplitude instance to be session-less (ie: use Amplitude 'sessionId' of -1) --- AmplitudeSharp/AmplitudeService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AmplitudeSharp/AmplitudeService.cs b/AmplitudeSharp/AmplitudeService.cs index 7ed7743..d99a7f9 100644 --- a/AmplitudeSharp/AmplitudeService.cs +++ b/AmplitudeSharp/AmplitudeService.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; @@ -31,7 +31,7 @@ public static AmplitudeService Instance private AmplitudeApi api; private AmplitudeIdentify identification; private SemaphoreSlim eventsReady; - private long sessionId; + private long sessionId = -1; private readonly JsonSerializerSettings apiJsonSerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, From a3c0ce0b47f853a1e83e54f2137e5a2d9b8d1b30 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Tue, 13 Aug 2019 09:25:44 -0400 Subject: [PATCH 03/13] Migrated to .NET Standard 2.0 NOTE: Device information got amputated (should revisit once .NET Core 3.0 is released) --- AmplitudeSharp/AmplitudeService.cs | 60 ++++++----------- AmplitudeSharp/AmplitudeSharp.csproj | 82 ++++------------------- AmplitudeSharp/DeviceHelper.cs | 33 ++++----- AmplitudeSharp/DeviceProperties.cs | 3 +- AmplitudeSharp/NetFxHelper.cs | 38 ++++++----- AmplitudeSharp/Properties/AssemblyInfo.cs | 36 ---------- 6 files changed, 73 insertions(+), 179 deletions(-) delete mode 100644 AmplitudeSharp/Properties/AssemblyInfo.cs diff --git a/AmplitudeSharp/AmplitudeService.cs b/AmplitudeSharp/AmplitudeService.cs index d99a7f9..6735990 100644 --- a/AmplitudeSharp/AmplitudeService.cs +++ b/AmplitudeSharp/AmplitudeService.cs @@ -13,24 +13,18 @@ namespace AmplitudeSharp { public class AmplitudeService : IDisposable { - public static AmplitudeService s_instance; + private static AmplitudeService s_instance; internal static Action s_logger; - public static AmplitudeService Instance - { - get - { - return s_instance; - } - } + public static AmplitudeService Instance => s_instance; - private object lockObject; - private List eventQueue; - private CancellationTokenSource cancellationToken; + private readonly object lockObject; + private readonly List eventQueue; + private readonly CancellationTokenSource cancellationToken; private Thread sendThread; - private AmplitudeApi api; + private readonly AmplitudeApi api; private AmplitudeIdentify identification; - private SemaphoreSlim eventsReady; + private readonly SemaphoreSlim eventsReady; private long sessionId = -1; private readonly JsonSerializerSettings apiJsonSerializerSettings = new JsonSerializerSettings { @@ -50,14 +44,8 @@ public static AmplitudeService Instance /// public bool OfflineMode { - get - { - return api.OfflineMode; - } - set - { - api.OfflineMode = value; - } + get => api.OfflineMode; + set => api.OfflineMode = value; } /// @@ -86,7 +74,7 @@ public void Dispose() /// a stream where offline/past events are stored /// /// api key for the project to stream data to - /// optinal, stream with saved event data + /// optional, stream with saved event data /// Action delegate for logging purposes, if none is specified is used /// public static AmplitudeService Initialize(string apiKey, Action logger = null, Stream persistenceStream = null) @@ -184,21 +172,13 @@ public void NewSession() sessionId = DateTime.UtcNow.ToUnixEpoch(); } - /// - /// Log an event without any parameters - /// - /// the name of the event - public void Track(string eventName) - { - Track(eventName, null); - } /// /// Log an event with parameters /// /// the name of the event /// parameters for the event (this can just be a dynamic class) - public void Track(string eventName, object properties) + public void Track(string eventName, object properties = null ) { var identification = this.identification; @@ -206,11 +186,11 @@ public void Track(string eventName, object properties) { AmplitudeEvent e = new AmplitudeEvent(eventName, properties, ExtraEventProperties) { - SessionId = sessionId + SessionId = sessionId, + UserId = identification.UserId, + DeviceId = identification.DeviceId, }; - e.UserId = identification.UserId; - e.DeviceId = identification.DeviceId; QueueEvent(e); } else @@ -266,7 +246,7 @@ private void LoadPastEvents(Stream persistenceStore) } catch (Exception e) { - AmplitudeService.s_logger(LogLevel.Error, $"Failed to load persisted events: {e}"); + s_logger(LogLevel.Error, $"Failed to load persisted events: {e}"); } } @@ -275,9 +255,11 @@ private void LoadPastEvents(Stream persistenceStore) /// private void StartSendThread() { - sendThread = new Thread(UploadThread); - sendThread.Name = $"{nameof(AmplitudeSharp)} Upload Thread"; - sendThread.Priority = ThreadPriority.BelowNormal; + sendThread = new Thread(UploadThread) + { + Name = $"{nameof(AmplitudeSharp)} Upload Thread", + Priority = ThreadPriority.BelowNormal, + }; sendThread.Start(); } @@ -362,7 +344,7 @@ private async void UploadThread() catch (Exception e) { // No matter what exception happens, we just quit - s_logger(LogLevel.Error, "Upload thread terminated with: " + e.ToString()); + s_logger(LogLevel.Error, "Upload thread terminated with: " + e); } } } diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index b0b6180..8236f40 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -1,70 +1,12 @@ - - - - - Debug - AnyCPU - {D8A6ABA8-3B25-4D8E-9B29-D6BA8BF83DAB} - Library - Properties - AmplitudeSharp - AmplitudeSharp - v4.5 - 512 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + net472;netstandard2.0 + + + + + + + + diff --git a/AmplitudeSharp/DeviceHelper.cs b/AmplitudeSharp/DeviceHelper.cs index 6be26a3..c883c66 100644 --- a/AmplitudeSharp/DeviceHelper.cs +++ b/AmplitudeSharp/DeviceHelper.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; -using System.Management; +// TODO(revive): Revive this once .NET Core 3.0 is released +//using System.Management; using AmplitudeSharp.Utils; namespace AmplitudeSharp @@ -29,13 +30,14 @@ internal DeviceHelper() { try { - var mc = new ManagementClass("Win32_ComputerSystem"); - foreach (ManagementObject mo in mc.GetInstances()) - { - Manufacturer = mo["Manufacturer"].ToString(); - Model = mo["Model"].ToString(); - break; - } + // TODO(revive): Revive this once .NET Core 3.0 is released +// var mc = new ManagementClass("Win32_ComputerSystem"); +// foreach (ManagementObject mo in mc.GetInstances()) +// { +// Manufacturer = mo["Manufacturer"].ToString(); +// Model = mo["Model"].ToString(); +// break; +// } } catch (Exception ex) { @@ -44,12 +46,13 @@ internal DeviceHelper() try { - var mc = new ManagementClass("Win32_OperatingSystem"); - foreach (ManagementObject mo in mc.GetInstances()) - { - OSVersion = mo["Version"].ToString(); - break; - } + // TODO(revive): Revive this once .NET Core 3.0 is released +// var mc = new ManagementClass("Win32_OperatingSystem"); +// foreach (ManagementObject mo in mc.GetInstances()) +// { +// OSVersion = mo["Version"].ToString(); +// break; +// } } catch (Exception ex) { @@ -71,7 +74,7 @@ internal DeviceHelper() } catch (Exception ex) { - AmplitudeService.s_logger(LogLevel.Warning, $"Failed to get device RAM size: {ex.ToString()}"); + AmplitudeService.s_logger(LogLevel.Warning, $"Failed to get device RAM size: {ex}"); } Is64BitDevice = Environment.Is64BitOperatingSystem; diff --git a/AmplitudeSharp/DeviceProperties.cs b/AmplitudeSharp/DeviceProperties.cs index dbf3ac0..e7cf287 100644 --- a/AmplitudeSharp/DeviceProperties.cs +++ b/AmplitudeSharp/DeviceProperties.cs @@ -79,7 +79,8 @@ public DeviceProperties() OSVersion = deviceHelper.OSVersion; DeviceModel = deviceHelper.Model; DeviceManufacturer = deviceHelper.Manufacturer; - NetFrameworkVersion = NetFxHelper.GetNetFxVersion().ToString(); + // TODO(revive): Revive this once .NET Core 3.0 is released +// NetFrameworkVersion = NetFxHelper.GetNetFxVersion().ToString(); RamMbs = deviceHelper.RamMbs; Is64BitDevice = deviceHelper.Is64BitDevice; Language = Thread.CurrentThread.CurrentUICulture.EnglishName; diff --git a/AmplitudeSharp/NetFxHelper.cs b/AmplitudeSharp/NetFxHelper.cs index 1f50f29..48076df 100644 --- a/AmplitudeSharp/NetFxHelper.cs +++ b/AmplitudeSharp/NetFxHelper.cs @@ -1,31 +1,33 @@ using System; -using Microsoft.Win32; +// TODO(revive): Revive this once .NET Core 3.0 is released +//using Microsoft.Win32; namespace AmplitudeSharp { class NetFxHelper { + // TODO(revive): Revive this once .NET Core 3.0 is released /// /// Get the installed .net version as recommended here: /// https://msdn.microsoft.com/en-us/library/hh925568%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 /// - public static Version GetNetFxVersion() - { - const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"; - - using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)) - { - if (ndpKey != null && ndpKey.GetValue("Release") != null) - { - Version installedVersion = GetNet45Version((int)ndpKey.GetValue("Release")); - - return installedVersion; - } - } - - // If we hit this we have .NET framework version < 4.5, return 4.0 for now - return new Version("4.0"); - } +// public static Version GetNetFxVersion() +// { +// const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"; +// +// using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)) +// { +// if (ndpKey != null && ndpKey.GetValue("Release") != null) +// { +// Version installedVersion = GetNet45Version((int)ndpKey.GetValue("Release")); +// +// return installedVersion; +// } +// } +// +// // If we hit this we have .NET framework version < 4.5, return 4.0 for now +// return new Version("4.0"); +// } // Checking the version using >= will enable forward compatibility. private static Version GetNet45Version(int releaseKey) diff --git a/AmplitudeSharp/Properties/AssemblyInfo.cs b/AmplitudeSharp/Properties/AssemblyInfo.cs deleted file mode 100644 index a18ce02..0000000 --- a/AmplitudeSharp/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Amplitude")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Amplitude")] -[assembly: AssemblyCopyright("Copyright © 2018")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("d8a6aba8-3b25-4d8e-9b29-d6ba8bf83dab")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// 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.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] From b746ac329406a8675fd90b2da5a672c18e6e3095 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Thu, 5 Sep 2019 13:15:08 -0700 Subject: [PATCH 04/13] Upgraded libs - Newtonsoft.JSON (11.0.2 --> 12.0.2) --- AmplitudeSharp/AmplitudeSharp.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index 8236f40..e469c7d 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -1,11 +1,11 @@ - net472;netstandard2.0 + netstandard2.0 - + From aa6a295b415e709f681f38be93dc2ce3ca18d9d9 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Wed, 19 Feb 2020 17:15:51 -0500 Subject: [PATCH 05/13] Updated libs - Newtonsoft.JSON (12.0.2 --> 12.0.3) --- AmplitudeSharp/AmplitudeSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index e469c7d..c7c9941 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -5,7 +5,7 @@ - + From 4a727c11ad0254892677f355fdcadc22f41b7221 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Sun, 21 Mar 2021 17:23:39 -0400 Subject: [PATCH 06/13] .NET 5 upgrade --- AmplitudeSharp/AmplitudeSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index c7c9941..6fe8502 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -1,7 +1,7 @@ - netstandard2.0 + net5.0 From 38b3e0e7a04cb2740afbec9d32a55206cbf6b049 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Tue, 9 Nov 2021 12:16:51 +0200 Subject: [PATCH 07/13] Updated libs - Newtonsoft.JSON (12.0.3 --> 13.0.1) --- AmplitudeSharp/AmplitudeSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index 6fe8502..9a80f0e 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -5,7 +5,7 @@ - + From 1bfd281a260f906438c66ea46f5d5dd0c783ff5a Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Mon, 4 Oct 2021 21:35:02 -0400 Subject: [PATCH 08/13] .NET 6 upgrade --- AmplitudeSharp/AmplitudeSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index 9a80f0e..3da83fd 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 From b3de97a0a25bdd4c089d672b3576d5de7020abfa Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Wed, 9 Nov 2022 11:24:11 -0500 Subject: [PATCH 09/13] .NET 7 upgrade --- AmplitudeSharp/AmplitudeSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index 3da83fd..9ebec22 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -1,7 +1,7 @@ - net6.0 + net7.0 From 0f3a723580d5732267b0ca61e777429d9f665ef5 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Sat, 17 Dec 2022 15:47:39 -0500 Subject: [PATCH 10/13] LIB: Updated libs - Newtowsoft.Json (13.0.1 --> 13.0.2) --- AmplitudeSharp/AmplitudeSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index 9ebec22..63660ec 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -5,7 +5,7 @@ - + From 9c8306ac6fcbb00375f645812635c7f8404e36f6 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Tue, 23 May 2023 18:09:13 -0400 Subject: [PATCH 11/13] LIB: Updated libs - Newtonsoft.JSON (13.0.2 --> 13.0.3) --- AmplitudeSharp/AmplitudeSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index 63660ec..903aba1 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -5,7 +5,7 @@ - + From c2ca6b8a37232cd63d52e62fdabc03756c9c8b1e Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Mon, 23 Oct 2023 14:10:29 -0400 Subject: [PATCH 12/13] .NET 8 upgradea --- AmplitudeSharp/AmplitudeSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index 903aba1..d2ab797 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -1,7 +1,7 @@ - net7.0 + net8.0 From e0a4d7459148904e9b8becd5dfdb2fe656c08174 Mon Sep 17 00:00:00 2001 From: Marcel Bradea Date: Sun, 23 Feb 2025 16:32:46 -0500 Subject: [PATCH 13/13] .NET 9 upgrade --- AmplitudeSharp/AmplitudeSharp.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AmplitudeSharp/AmplitudeSharp.csproj b/AmplitudeSharp/AmplitudeSharp.csproj index d2ab797..205a4cc 100644 --- a/AmplitudeSharp/AmplitudeSharp.csproj +++ b/AmplitudeSharp/AmplitudeSharp.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0