Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
46ba7fb
Added sample and test files
LogishaSelvarajSF4525 Jul 10, 2025
1182adc
Added modified snapshot
LogishaSelvarajSF4525 Jul 11, 2025
2efcdfc
added snapshot
LogishaSelvarajSF4525 Jul 11, 2025
106ad35
added snapshots for mac
LogishaSelvarajSF4525 Jul 15, 2025
848b403
remove toolbarItem
LogishaSelvarajSF4525 Jul 17, 2025
17249e0
updated snapshot
LogishaSelvarajSF4525 Jul 21, 2025
e824ad5
remove toolbarItem
LogishaSelvarajSF4525 Jul 18, 2025
18d4760
updated
LogishaSelvarajSF4525 Jul 18, 2025
eae9b37
updated snapshot from CI
LogishaSelvarajSF4525 Jul 25, 2025
71c8c6a
modified test case
LogishaSelvarajSF4525 Jul 25, 2025
1840d48
[ci] Try force sign fonts
rmarinho Jul 29, 2025
6ee67bf
Updated Signing.props to add Microsoft400 for fonts
rmarinho Jul 30, 2025
97585e0
[main] [release/9.0.1xx-sr8] Fix signing of fonts with arcade infra (…
rmarinho Jul 30, 2025
837f0a5
[Testing] Feature matrix UITest Cases for Editor Control (#30574)
rmarinho Aug 1, 2025
cdfb373
[Testing] - Modified Feature matrix UITest Cases for Entry Control (#…
rmarinho Aug 1, 2025
c9d0abf
Fix: Null Reference Exception in ShellContentFragment.Destroy (#29713)
postalservice14 Aug 1, 2025
85c47e3
Remove .NET 8 specific code for templates (#30342)
jfversluis Jul 1, 2025
1df60b8
[Catalyst] Fix Scrollbar does not align with FlowDirection change in …
devanathan-vaithiyanathan Jul 1, 2025
fa58c97
[Android] Fix for OnSizeAllocated is not reported for Android AppShel…
BagavathiPerumal Jul 1, 2025
f87e5f3
Permissions (BT & WiFi): don't add AccessFineLocation to required per…
janusw Jul 1, 2025
f71da1d
Fixed the RealParent Warning shown issue (#30156)
Ahamed-Ali Jul 2, 2025
ee6c172
[iOS/MacCatalyst] Fix: Setting SelectedItem Programmatically and Then…
bhavanesh2001 Jul 2, 2025
fbf3af7
[Windows] Fixed StackLayout crashes on Windows with HeightRequest as …
Dhivya-SF4094 Jul 3, 2025
82f21a4
[Windows] Fixed CanvasDrawingSession Exception on Clipping Image (#30…
SubhikshaSf4851 Jul 3, 2025
61fe795
[Testing] Feature matrix UITest Cases for ScrollView Control (#30188)
NafeelaNazhir Jul 3, 2025
d056e02
[Testing] Feature Matrix UITest Cases for TimePicker Control (#30271)
TamilarasanSF4853 Jul 3, 2025
2b87456
[Catalyst] Adding and Removing ContextMenus currently does not work -…
kubaflo Jul 3, 2025
7228eca
Fix for TapGestureRecognizer ButtonMask always return 0 (#30372)
HarishwaranVijayakumar Jul 3, 2025
73d8966
fix extention typo (#30461)
SimonCropp Jul 10, 2025
838273e
fix some incorrect casting using `as` (#30459)
SimonCropp Jul 10, 2025
3c59cd2
[Testing] Feature Matrix UITest Cases for SearchBar Control (#30398)
TamilarasanSF4853 Jul 10, 2025
9bd6e4e
[Testing] Feature Matrix UITest Cases for DatePicker Control (#30159)
TamilarasanSF4853 Jul 10, 2025
b111dc7
[create-pull-request] automated change (#30591)
github-actions[bot] Jul 14, 2025
1c13fe9
[Testing] Add UITest for Issue30147 on iOS (#30506)
devanathan-vaithiyanathan Jul 17, 2025
18b161f
[Android] Fix for Search Handler visual and functional bug in subtabs…
BagavathiPerumal Jul 17, 2025
cc45d6f
[Windows] Fixed the Pasted Password Becomes Visible When IsPassword I…
Ahamed-Ali Jul 17, 2025
4004fdf
[Testing] Fixed Test case failure in PR 30696 - [07/21/2025] Candidat…
TamilarasanSF4853 Jul 20, 2025
828a4e8
[Testing] Fixed Test case LabelShouldSizeProperlyOnCollectionView fai…
TamilarasanSF4853 Jul 21, 2025
29833be
[Testing] Fixed Test case LabelShouldSizeProperlyOnCollectionView fai…
TamilarasanSF4853 Jul 24, 2025
96e9a51
[Testing] Fixed Test cases TimePickerFeatureTests failure in PR 30696…
TamilarasanSF4853 Jul 28, 2025
6c98e8b
Add CornerRadius parameter order notes (#30930)
jfversluis Aug 2, 2025
3ca9527
[Android] Set FillViewport to true to MauiHorizontalScrollView (#26904)
kubaflo Aug 3, 2025
b13ec4e
[ci] Clean up some ci files (#30983)
rmarinho Aug 4, 2025
8c654d0
[ci] Update baseline (#31008)
rmarinho Aug 4, 2025
97451bb
[Testing] Fix for flaky UITest VerifyEditorTextWhenTextColorSetCorrec…
Aug 4, 2025
b35e5be
Clean up duplicate path normalization code in HybridWebView (#30873)
jsuarezruiz Aug 4, 2025
99e0f14
July 21st, 2025 Candidate (#30696)
PureWeen Aug 4, 2025
f98f177
[create-pull-request] automated change (#30700)
github-actions[bot] Jul 18, 2025
df6583e
Fixed GraphicsView event handlers are triggered even when IsEnabled i…
Dhivya-SF4094 Jul 25, 2025
885da9d
[Testing] Feature matrix UITest Cases for HybridWebView Control (#30…
NafeelaNazhir Jul 25, 2025
8ef63ce
[create-pull-request] automated change (#30890)
github-actions[bot] Jul 29, 2025
e121cfc
Fix duplicate app icon resizing (#30920)
jeremy-visionaid Jul 31, 2025
b8aa857
[Testing] Feature matrix UITest Cases for GraphicsView Control (#30781)
nivetha-nagalingam Aug 1, 2025
3ea80cd
Fixed CollectionView does not update layout correctly when ItemsSourc…
Dhivya-SF4094 Aug 4, 2025
6fecaea
Add emulator process kill timeout with ADB restart and comprehensive …
Copilot Aug 5, 2025
2662929
[ci] Enable api scan on dnceng (#30984)
rmarinho Aug 5, 2025
6b42583
[android] Update gradle.properties (#30543)
rmarinho Aug 5, 2025
ac0addb
Added the GraphicsView base images for Windows and mac platforms (#31…
nivetha-nagalingam Aug 5, 2025
a292556
[ci] Allow to continue if error downloading packages (#31032)
rmarinho Aug 5, 2025
9509f44
[main] [release/10.0.1xx-preview7] [iOS] Fix extra bottom space in Sc…
github-actions[bot] Aug 6, 2025
a1d2571
[iOS] ScrollView content offset RTL - fix (#30724)
kubaflo Aug 6, 2025
f1df1a9
[iOS, Mac] Fix for Picker title is not displayed again when SelectedI…
HarishwaranVijayakumar Aug 6, 2025
7f99494
Update MauiRecyclerView.cs (#31050)
github-actions[bot] Aug 6, 2025
8c527ff
[ci] Update to more stable packages (#31070)
rmarinho Aug 7, 2025
47f3dd1
August 11th, inflight/candidate (#31014)
PureWeen Aug 8, 2025
76c311c
[ci] Some fixes to clear the _tool project (#31068)
rmarinho Aug 8, 2025
af302b6
Delete .github/workflows/dotnet-format-pr.yml (#31089)
PureWeen Aug 8, 2025
ca8e656
Better MSBuild log messages in DevOps (#30281)
mattleibow Aug 11, 2025
ede52c5
[create-pull-request] automated change (#31095)
github-actions[bot] Aug 11, 2025
3f0a7c6
[Windows]Fixed the PointerGestureRecognizer behaves incorrectly when …
Ahamed-Ali Aug 11, 2025
2faddc2
[Android] Improve Keyboard Accessibility: Support Spacebar for Androi…
kubaflo Aug 11, 2025
c3661fd
Revert "ToolbarItem behavior with ImageSource iOS - fix (#28833)" (#3…
PureWeen Aug 11, 2025
176633d
Update Versions.props SR11 Versioning (#31117)
PureWeen Aug 11, 2025
5e6175f
[create-pull-request] automated change (#31120)
github-actions[bot] Aug 12, 2025
dc5f50a
Changed Syncfusion toolkit version from 1.0.5 to 1.0.6 (#30960)
PaulAndersonS Aug 12, 2025
f4bf2fb
[Testing] Publish new snapshots and diffs to a specific artifacts fol…
jsuarezruiz Aug 12, 2025
8a6f3d4
[ci] Add more keys (#31130)
rmarinho Aug 12, 2025
b76f5b0
Update bug report template with net10p7
jfversluis Aug 13, 2025
6903dfa
Merge branch 'main' into net10_merge_main
PureWeen Aug 13, 2025
c979f2f
Fix Merge conflicts
PureWeen Aug 14, 2025
72d54fa
[net10.0, Testing] Fixed test failures on merge main net10.0 (#31168)
NafeelaNazhir Aug 14, 2025
94009dc
Fix RTL ScrollView issued and add delay for dismissing keyboard
PureWeen Aug 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
34 changes: 34 additions & 0 deletions .config/1espt/PipelineAutobaseliningConfig.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## DO NOT MODIFY THIS FILE MANUALLY. This is part of auto-baselining from 1ES Pipeline Templates. Go to [https://aka.ms/1espt-autobaselining] for more details.

pipelines:
1095:
retail:
source:
credscan:
lastModifiedDate: 2024-11-20
policheck:
lastModifiedDate: 2024-11-20
eslint:
lastModifiedDate: 2024-11-20
psscriptanalyzer:
lastModifiedDate: 2024-11-20
armory:
lastModifiedDate: 2024-11-20
binary:
credscan:
lastModifiedDate: 2024-11-20
binskim:
lastModifiedDate: 2025-02-18
1445:
retail:
source:
credscan:
lastModifiedDate: 2025-04-29
policheck:
lastModifiedDate: 2025-04-29
eslint:
lastModifiedDate: 2025-04-29
psscriptanalyzer:
lastModifiedDate: 2025-04-29
armory:
lastModifiedDate: 2025-04-29
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ body:
label: Version with bug
description: In what version do you see this issue? Run `dotnet workload list` to find your version.
options:
- 10.0.0-preview.7
- 10.0.0-preview.6
- 10.0.0-preview.5
- 10.0.0-preview.4
Expand Down Expand Up @@ -133,6 +134,7 @@ body:
- 10.0.0-preview.4
- 10.0.0-preview.5
- 10.0.0-preview.6
- 10.0.0-preview.7
validations:
required: true
- type: dropdown
Expand Down
14 changes: 11 additions & 3 deletions docs/DevelopmentTips.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,19 @@ To build and run Blazor Desktop samples, check out the [Blazor Desktop](https://

# Advanced Scenarios

### Compile using a local `bin\dotnet` via `dotnet-local.*`
### Compile using a local `.dotnet\dotnet` via `build.*` scripts on the root folder

This method will use the .NET and workload versions that are specific to the branch you are on. There may be occasions when your global installation of .NET is not compatible with a particular branch. In such cases, this method will create a local folder containing all the .NET versions specific to that branch.
This method uses the arcade build infraestructure. For more information you can look [here](https://github.com/dotnet/arcade/blob/main/Documentation/ArcadeSdk.md#build-scripts-and-extensibility-points)

```
./build.sh -restore -pack
```
or

```
./build.cmd -restore -pack
```

Use `dotnet-local.cmd` on Windows or `dotnet-local.sh` on Unix to ensure that `PATH` is set consistently.

#### Cake

Expand Down
10 changes: 0 additions & 10 deletions dotnet-local.cmd

This file was deleted.

12 changes: 0 additions & 12 deletions dotnet-local.sh

This file was deleted.

41 changes: 40 additions & 1 deletion eng/cake/dotnet.cake
Original file line number Diff line number Diff line change
Expand Up @@ -684,10 +684,15 @@ Dictionary<string, string> GetDotNetEnvironmentVariables()
void SetDotNetEnvironmentVariables(string dotnetDir = null)
{
var dotnet = dotnetDir ?? MakeAbsolute(Directory("./.dotnet/")).ToString();

var dotnetHostPath = IsRunningOnWindows() ? $"{dotnet}/dotnet.exe" : $"{dotnet}/dotnet";
SetEnvironmentVariable("VSDebugger_ValidateDotnetDebugLibSignatures", "0");
SetEnvironmentVariable("DOTNET_INSTALL_DIR", dotnet);
SetEnvironmentVariable("DOTNET_ROOT", dotnet);
if (IsRunningOnWindows())
{
//workaround for dev18
SetEnvironmentVariable("DOTNET_HOST_PATH", dotnetHostPath);
}
SetEnvironmentVariable("DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR", dotnet);
SetEnvironmentVariable("DOTNET_MULTILEVEL_LOOKUP", "0");
SetEnvironmentVariable("DOTNET_SYSTEM_NET_SECURITY_NOREVOCATIONCHECKBYDEFAULT", "true");
Expand Down Expand Up @@ -814,6 +819,12 @@ void RunMSBuildWithDotNet(
// .SetVerbosity(Verbosity.Diagnostic)
;

var loggerArg = GetMSBuildForwardingLoggerPath();
if (loggerArg != null)
{
msbuildSettings.WithArgumentCustomization(args => args.Append(loggerArg));
}

if (warningsAsError)
{
msbuildSettings.TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error);
Expand Down Expand Up @@ -902,6 +913,12 @@ void RunTestWithLocalDotNet(string csproj, string config, string pathDotnet = nu
// Verbosity = Cake.Common.Tools.DotNetCore.DotNetCoreVerbosity.Diagnostic,
ArgumentCustomization = args =>
{
var loggerArg = GetMSBuildForwardingLoggerPath();
if (loggerArg != null)
{
args.Append(loggerArg);
}

args.Append($"-bl:{binlog}");
if(maxCpuCount > 0)
{
Expand Down Expand Up @@ -1003,3 +1020,25 @@ void ProcessTFMSwitches()
DeleteFile("Directory.Build.Override.props");
}
}

string GetMSBuildForwardingLoggerPath()
{
if (!IsCIBuild())
return null;

// Download and extract MSBuild logger
var loggerUrl = "https://vstsagenttools.blob.core.windows.net/tools/msbuildlogger/3/msbuildlogger.zip";
var loggerDir = MakeAbsolute(Directory("./artifacts/msbuildlogger"));
EnsureDirectoryExists(loggerDir);
var loggerZip = loggerDir.CombineWithFilePath("msbuildlogger.zip");

if (!FileExists(loggerZip))
{
DownloadFile(loggerUrl, loggerZip.FullPath);
Unzip(loggerZip.FullPath, loggerDir.FullPath);
}

var loggerArg = $"-dl:CentralLogger,\"{loggerDir}/Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll\"*ForwardingLogger,\"{loggerDir}/Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll\"";

return loggerArg;
}
159 changes: 144 additions & 15 deletions eng/devices/android.cake
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ const int DefaultApiLevel = 30;

const int EmulatorStartProcessTimeoutSeconds = 1 * 60;
const int EmulatorBootTimeoutSeconds = 2 * 60;
const int EmulatorKillTimeoutSeconds = 1 * 60;
const int AdbCommandTimeoutSeconds = 30;

Information("Local Dotnet: {0}", localDotnet);

Expand Down Expand Up @@ -473,8 +475,51 @@ void CleanUpVirtualDevice(AndroidEmulatorProcess emulatorProcess, AndroidAvdMana

// kill the process if it has not already exited
Information("emulatorProcess.Kill()");
try { emulatorProcess.Kill(); }
catch { }
try
{
// Wrap Kill() operation with timeout to prevent indefinite hanging
var killTask = System.Threading.Tasks.Task.Run(() => emulatorProcess.Kill());
if (killTask.Wait(TimeSpan.FromSeconds(EmulatorKillTimeoutSeconds)))
{
Information("Emulator process kill signal sent successfully.");

// Now wait for the process to actually exit
var waitTask = System.Threading.Tasks.Task.Run(() => emulatorProcess.WaitForExit());
if (waitTask.Wait(TimeSpan.FromSeconds(EmulatorKillTimeoutSeconds)))
{
Information("Emulator process killed successfully.");
}
else
{
Warning("Emulator process did not exit within {0} seconds after kill signal.", EmulatorKillTimeoutSeconds);
}
}
else
{
Warning("Emulator process kill operation timed out after {0} seconds. Attempting to restart ADB server...", EmulatorKillTimeoutSeconds);

try
{
Information("Stopping ADB server...");
AdbKillServer(adbSettings);
System.Threading.Thread.Sleep(2000);

Information("Starting ADB server...");
AdbStartServer(adbSettings);
System.Threading.Thread.Sleep(2000);

Information("ADB server restart completed successfully.");
}
catch (Exception adbEx)
{
Error("Failed to restart ADB server after emulator kill timeout: {0}", adbEx.Message);
}
}
}
catch (Exception ex)
{
Warning("Failed to kill emulator process: {0}", ex.Message);
}

if (deviceCreate)
{
Expand Down Expand Up @@ -617,6 +662,44 @@ void GetDevices(string version, string toolPath)
DotNetTool("tool", settings);
}

IEnumerable<string> SafeAdbShell(string command, AdbToolSettings settings, int timeoutSeconds = AdbCommandTimeoutSeconds)
{
try
{
var shellTask = System.Threading.Tasks.Task.Run(() => AdbShell(command, settings));
if (shellTask.Wait(TimeSpan.FromSeconds(timeoutSeconds)))
{
return shellTask.Result;
}
else
{
Warning("ADB shell command '{0}' timed out after {1} seconds", command, timeoutSeconds);
return new string[0]; // Return empty array on timeout
}
}
catch (Exception ex)
{
Warning("ADB shell command '{0}' failed: {1}", command, ex.Message);
return new string[0]; // Return empty array on error
}
}

void SafeAdbLogcat(AdbLogcatOptions options, int timeoutSeconds = AdbCommandTimeoutSeconds)
{
try
{
var logcatTask = System.Threading.Tasks.Task.Run(() => AdbLogcat(options));
if (!logcatTask.Wait(TimeSpan.FromSeconds(timeoutSeconds)))
{
Warning("ADB logcat operation timed out after {0} seconds", timeoutSeconds);
}
}
catch (Exception ex)
{
Warning("ADB logcat operation failed: {0}", ex.Message);
}
}

void PrepareDevice(bool waitForBoot)
{
var settings = new AdbToolSettings { SdkRoot = androidSdkRoot };
Expand All @@ -632,7 +715,7 @@ void PrepareDevice(bool waitForBoot)
// Wait for the emulator to finish booting
var waited = 0;
var total = EmulatorBootTimeoutSeconds;
while (AdbShell("getprop sys.boot_completed", settings).FirstOrDefault() != "1")
while (SafeAdbShell("getprop sys.boot_completed", settings).FirstOrDefault() != "1")
{
System.Threading.Thread.Sleep(1000);

Expand All @@ -642,10 +725,40 @@ void PrepareDevice(bool waitForBoot)
throw new Exception("The emulator did not finish booting in time.");
}

if (waited % 60 == 0 && IsCIBuild())
// At 90 seconds, restart ADB server to recover from authorization issues
if (waited == 90 && IsCIBuild())
{
Information("Emulator boot taking longer than expected (90/{0} seconds). Restarting ADB server...", total);
try
{
Information("Stopping ADB server...");
AdbKillServer(settings);
System.Threading.Thread.Sleep(2000);

Information("Starting ADB server...");
AdbStartServer(settings);
System.Threading.Thread.Sleep(2000);

Information("ADB server restart completed. Continuing to wait for emulator boot...");
}
catch (Exception ex)
{
Warning("Failed to restart ADB server during boot wait: {0}", ex.Message);
// Continue without throwing - this is a recovery attempt
}
}
else if (waited % 60 == 0 && IsCIBuild())
{
// Ensure ADB keys are configured
EnsureAdbKeys(settings);
try
{
EnsureAdbKeys(settings);
}
catch (Exception ex)
{
Warning("Failed to ensure ADB keys during boot wait: {0}", ex.Message);
// Continue without throwing - this is a recovery attempt
}
}
}

Expand All @@ -656,22 +769,38 @@ void PrepareDevice(bool waitForBoot)
{
Information("Setting Logcat properties...");

AdbLogcat(new AdbLogcatOptions() { Clear = true });

AdbShell("logcat -G 16M", settings);

Information("Finished setting Logcat properties.");
try
{
SafeAdbLogcat(new AdbLogcatOptions() { Clear = true });

SafeAdbShell("logcat -G 16M", settings);

Information("Finished setting Logcat properties.");
}
catch (Exception ex)
{
Warning("Failed to set Logcat properties: {0}", ex.Message);
// Continue without throwing - logcat setup is not critical for device function
}
}

Information("Setting the ADB properties...");

var lines = AdbShell("setprop debug.mono.log default,mono_log_level=debug,mono_log_mask=all", settings);
Information("{0}", string.Join("\n", lines));
try
{
var lines = SafeAdbShell("setprop debug.mono.log default,mono_log_level=debug,mono_log_mask=all", settings);
Information("{0}", string.Join("\n", lines));

lines = AdbShell("getprop debug.mono.log", settings);
Information("{0}", string.Join("\n", lines));
lines = SafeAdbShell("getprop debug.mono.log", settings);
Information("{0}", string.Join("\n", lines));

Information("Finished setting ADB properties.");
Information("Finished setting ADB properties.");
}
catch (Exception ex)
{
Warning("Failed to set ADB properties: {0}", ex.Message);
// Continue without throwing - property setup failure should not stop the process
}
}

void EnsureAdbKeys(AdbToolSettings settings)
Expand Down
Loading
Loading