From 21c3ea290f336d2cf75cbc8d8ae3d4d6b78aab27 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Mon, 20 May 2024 19:18:33 +0100 Subject: [PATCH 1/6] Add Telemetry support. Bump to MSbuild 17+ --- Xamarin.Build.AsyncTask/AsyncTask.cs | 27 +++++++++++++++++++ .../Xamarin.Build.AsyncTask.csproj | 10 +++---- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/Xamarin.Build.AsyncTask/AsyncTask.cs b/Xamarin.Build.AsyncTask/AsyncTask.cs index 8c7a5b0..5d7b7f2 100644 --- a/Xamarin.Build.AsyncTask/AsyncTask.cs +++ b/Xamarin.Build.AsyncTask/AsyncTask.cs @@ -4,6 +4,7 @@ using Microsoft.Build.Framework; using System.Threading; using System.Collections; +using System.Collections.Generic; using System.Reflection; [assembly:AssemblyKeyFileAttribute ("product.snk")] @@ -21,10 +22,12 @@ public class AsyncTask : Task, ICancelableTask readonly Queue warningMessageQueue = new Queue(); readonly Queue errorMessageQueue = new Queue(); readonly Queue customMessageQueue = new Queue(); + readonly Queue telemetryMessageQueue = new Queue (); readonly ManualResetEvent logDataAvailable = new ManualResetEvent(false); readonly ManualResetEvent errorDataAvailable = new ManualResetEvent(false); readonly ManualResetEvent warningDataAvailable = new ManualResetEvent(false); readonly ManualResetEvent customDataAvailable = new ManualResetEvent(false); + readonly ManualResetEvent telemetryDataAvailable = new ManualResetEvent(false); readonly ManualResetEvent taskCancelled = new ManualResetEvent(false); readonly ManualResetEvent completed = new ManualResetEvent(false); bool isRunning = true; @@ -96,6 +99,23 @@ public void LogDebugTaskItems(string message, ITaskItem[] items) LogDebugMessage(" {0}", item.ItemSpec); } + public void LogTelemetry(string eventName, IDictionary properties) + { + if (uiThreadId == Thread.CurrentThread.ManagedThreadId) + { +#pragma warning disable 618 + Log.LogTelemetry(eventName, properties); + return; +#pragma warning restore 618 + } + + var data = new TelemetryEventArgs() { + EventName = eventName, + Properties = properties + }; + EnqueueMessage(telemetryMessageQueue, data, telemetryDataAvailable); + } + public void LogMessage(string message) => LogMessage(message, importance: MessageImportance.Normal); public void LogMessage(string message, params object[] messageArgs) => LogMessage(string.Format(message, messageArgs)); @@ -277,6 +297,7 @@ protected void WaitForCompletion() errorDataAvailable, warningDataAvailable, customDataAvailable, + telemetryDataAvailable, taskCancelled, completed, }; @@ -333,6 +354,11 @@ protected void WaitForCompletion() BuildEngine.LogCustomEvent(e); }, customDataAvailable); break; + case WaitHandleIndex.TelemetryDataAvailable: + LogInternal(telemetryMessageQueue, (e) => { + BuildEngine5.LogTelemetry(e.EventName, e.Properties); + }, telemetryDataAvailable); + break; case WaitHandleIndex.TaskCancelled: Cancel(); cts.Cancel(); @@ -357,6 +383,7 @@ private enum WaitHandleIndex ErrorDataAvailable, WarningDataAvailable, CustomDataAvailable, + TelemetryDataAvailable, TaskCancelled, Completed, } diff --git a/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj b/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj index 5b3fa85..2090b56 100644 --- a/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj +++ b/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj @@ -7,11 +7,11 @@ 1701;1702;1705;1591 Xamarin.Build.AsyncTask - 0.4.0 + 0.5.0 $(PackageId) $(PackageId) - Supports MSBuild 14+. + Supports MSBuild 17+. Microsoft microsoft xamarin $([System.IO.File]::ReadAllText('$(MSBuildThisFileDirectory)Readme.txt')) @@ -29,8 +29,8 @@ - - + + all @@ -47,7 +47,7 @@ - + From 4f22bdf23ad943163eecb58724408dfbf2ae933d Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Tue, 21 May 2024 12:04:24 +0100 Subject: [PATCH 2/6] Upgrade test and test Telemetry --- Xamarin.Build.AsyncTask/Test.targets | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Xamarin.Build.AsyncTask/Test.targets b/Xamarin.Build.AsyncTask/Test.targets index 2358f74..e56f4a9 100644 --- a/Xamarin.Build.AsyncTask/Test.targets +++ b/Xamarin.Build.AsyncTask/Test.targets @@ -9,15 +9,14 @@ - + - - - + + () {{"Property", "Value"}}); return base.Execute(); } From fff0a5de39f5216a589967e8a59d93d0d843dd5a Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Tue, 21 May 2024 12:06:03 +0100 Subject: [PATCH 3/6] Add Test on CI --- azure-pipelines.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index ed1cf4e..01a16e4 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -69,6 +69,10 @@ extends: & dotnet build Xamarin.Build.AsyncTask\Xamarin.Build.AsyncTask.csproj -c Release -bl:$(LogDirectory)\Release.binlog displayName: build libraries errorActionPreference: stop + - powershell: | + & dotnet build Xamarin.Build.AsyncTask\Xamarin.Build.AsyncTask.csproj -c Release -t:Test -bl:$(LogDirectory)\Test.binlog + displayName: test libraries + errorActionPreference: stop - powershell: | & dotnet pack Xamarin.Build.AsyncTask\Xamarin.Build.AsyncTask.csproj -c Release -bl:$(LogDirectory)\PackRelease.binlog displayName: pack NuGet From 6250d55d656c4a8fd8f14223cd9ba784f15a6d9f Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Tue, 4 Jun 2024 11:25:22 +0100 Subject: [PATCH 4/6] Bump to Version 0.6.0 --- Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj b/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj index 2090b56..bbc6ce2 100644 --- a/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj +++ b/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj @@ -7,7 +7,7 @@ 1701;1702;1705;1591 Xamarin.Build.AsyncTask - 0.5.0 + 0.6.0 $(PackageId) $(PackageId) From 63e6a1b851319e897e56ad2f148a32867b738263 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Tue, 4 Jun 2024 13:20:58 +0100 Subject: [PATCH 5/6] ff --- Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj b/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj index bbc6ce2..4c3cd3a 100644 --- a/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj +++ b/Xamarin.Build.AsyncTask/Xamarin.Build.AsyncTask.csproj @@ -7,7 +7,7 @@ 1701;1702;1705;1591 Xamarin.Build.AsyncTask - 0.6.0 + 0.4.0 $(PackageId) $(PackageId) From 5d57133ec9917b8779135c8986e20739a8127b5e Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Tue, 4 Jun 2024 13:23:54 +0100 Subject: [PATCH 6/6] Update README.md and Readme.txt --- README.md | 5 +++-- Xamarin.Build.AsyncTask/Readme.txt | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a7ebd27..ea16092 100644 --- a/README.md +++ b/README.md @@ -23,13 +23,14 @@ If you're creating an inline task that wants to inherit from AsyncTask, use the as a template: ```xml - + - + + + - + +