mirror of
https://github.com/microsoft/PowerToys
synced 2025-08-22 01:58:04 +00:00
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request Base on https://github.com/microsoft/PowerToys/pull/40486 we can easily use lab package. So all blocker has been resolved. 1. Replace CommunityToolkit.WinUI.UI.Controls.Markdown with CommunityToolkit.Labs.WinUI.Controls.MarkdownTextBlock 2. Add default markdown style config to align some configuration with the original one. (but still have some gap) 3. Add new configuration in pipeline to control the AOT enable/disable. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [x] **Closes:** #38279 - [x] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Tests:** Added/updated and all pass - [x] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed --------- Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com> Co-authored-by: Mike Griese <migrie@microsoft.com>
95 lines
4.8 KiB
PowerShell
95 lines
4.8 KiB
PowerShell
[CmdletBinding()]
|
|
Param(
|
|
[Parameter(Mandatory = $True, Position = 1)]
|
|
[string]$targetDir
|
|
)
|
|
|
|
# This script will check every deps.json file in the target directory to see if for each dll mentioned,
|
|
#all the deps.json files that mention it will mention the same version.
|
|
# The main goal is to catch when different versions for the same module might be copied to the same directory
|
|
#at build time and might create flaky builds that get the wrong version of the dll sometimes.
|
|
|
|
# A dictionary of dictionaries of lists to save which files reference each version of each dll.
|
|
# Logic is DllName > fileVersion > list with deps.json files that reference it.
|
|
# If for a specific dll there's more than one referenced file version, we have build collisions.
|
|
$referencedFileVersionsPerDll = @{}
|
|
$totalFailures = 0
|
|
|
|
Get-ChildItem $targetDir -Recurse -Filter *.deps.json -Exclude *UITest*,MouseJump.Common.UnitTests*,*.FuzzTests* | ForEach-Object {
|
|
# Temporarily exclude All UI-Test, Fuzzer-Test projects because of Appium.WebDriver dependencies
|
|
$depsJsonFullFileName = $_.FullName
|
|
|
|
if ($depsJsonFullFileName -like "*CmdPal*" -or $depsJsonFullFileName -like "*CommandPalette*") {
|
|
return
|
|
}
|
|
|
|
$depsJsonFileName = $_.Name
|
|
$depsJson = Get-Content $depsJsonFullFileName | ConvertFrom-Json
|
|
|
|
# We're doing a breadth first search to look for every runtime object.
|
|
$iterateThroughEveryField = New-Object System.Collections.Generic.Queue[System.Object]
|
|
$iterateThroughEveryField.Enqueue($depsJson)
|
|
|
|
while($iterateThroughEveryField.Count -gt 0)
|
|
{
|
|
$currentObject = $iterateThroughEveryField.Dequeue();
|
|
$currentObject.PSObject.Properties | ForEach-Object {
|
|
if($_.Name -ne 'SyncRoot') {
|
|
# Skip SyncRoot to avoid looping in array objects.
|
|
# Care only about objects, not value types.
|
|
$iterateThroughEveryField.Enqueue($_.Value)
|
|
if($_.Name -eq 'runtime')
|
|
{
|
|
# Cycle through each dll.
|
|
$_.Value.PSObject.Properties | ForEach-Object {
|
|
if($_.Name.EndsWith('.dll')) {
|
|
$dllName = Split-Path $_.Name -leaf
|
|
if([bool]($_.Value.PSObject.Properties.name -match 'fileVersion')) {
|
|
$dllFileVersion = $_.Value.fileVersion
|
|
if (([string]::IsNullOrEmpty($dllFileVersion) -or ($dllFileVersion -eq '0.0.0.0')) -and $dllName.StartsWith('PowerToys.'))` {
|
|
# After VS 17.11 update some of PowerToys dlls have no fileVersion in deps.json even though the
|
|
# version is correctly set. This is a workaround to skip our dlls as we are confident that all of
|
|
# our dlls share the same version across the dependencies.
|
|
# After VS 17.13 these error versions started appearing as 0.0.0.0 so we've added that case to the condition as well.
|
|
continue
|
|
}
|
|
|
|
# Add the entry to the dictionary of dictionary of lists
|
|
if(-Not $referencedFileVersionsPerDll.ContainsKey($dllName)) {
|
|
$referencedFileVersionsPerDll[$dllName] = @{ $dllFileVersion = New-Object System.Collections.Generic.List[System.String] }
|
|
} elseif(-Not $referencedFileVersionsPerDll[$dllName].ContainsKey($dllFileVersion)) {
|
|
$referencedFileVersionsPerDll[$dllName][$dllFileVersion] = New-Object System.Collections.Generic.List[System.String]
|
|
}
|
|
$referencedFileVersionsPerDll[$dllName][$dllFileVersion].Add($depsJsonFileName)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Report on the files that are referenced for more than one version.
|
|
$referencedFileVersionsPerDll.keys | ForEach-Object {
|
|
if($referencedFileVersionsPerDll[$_].Count -gt 1) {
|
|
$dllName = $_
|
|
Write-Host $dllName
|
|
$referencedFileVersionsPerDll[$dllName].keys | ForEach-Object {
|
|
Write-Host "`t" $_
|
|
$referencedFileVersionsPerDll[$dllName][$_] | ForEach-Object {
|
|
Write-Host "`t`t" $_
|
|
}
|
|
}
|
|
$totalFailures++;
|
|
}
|
|
}
|
|
|
|
if ($totalFailures -gt 0) {
|
|
Write-Host -ForegroundColor Red "Detected " $totalFailures " libraries that are mentioned with different version across the dependencies.`r`n"
|
|
exit 1
|
|
}
|
|
|
|
Write-Host -ForegroundColor Green "All " $referencedFileVersionsPerDll.keys.Count " libraries are mentioned with the same version across the dependencies.`r`n"
|
|
exit 0
|