diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 985376662..c318c9a54 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "uno.check": { - "version": "1.10.0", + "version": "1.16.1", "commands": [ "uno-check" ] diff --git a/.editorconfig b/.editorconfig index 21a441619..154e0c867 100644 --- a/.editorconfig +++ b/.editorconfig @@ -355,7 +355,6 @@ dotnet_diagnostic.CA2200.severity = warning dotnet_diagnostic.CA2202.severity = warning dotnet_diagnostic.CA2207.severity = warning dotnet_diagnostic.CA2212.severity = warning -dotnet_diagnostic.CA2213.severity = warning dotnet_diagnostic.CA2214.severity = warning dotnet_diagnostic.CA2216.severity = warning dotnet_diagnostic.CA2220.severity = warning @@ -433,5 +432,8 @@ csharp_style_prefer_extended_property_pattern = true:suggestion # Require file header dotnet_diagnostic.IDE0073.severity = warning -# Uno platform exposes IDisposable on Storyboard publicly when it should be internal. Ignore this. -dotnet_code_quality.CA1001.excluded_type_names_with_derived_types = T:Windows.UI.Xaml.Media.Animation.Storyboard +# Member owns disposable field +# Todo: Clean up suppression of CA1063 and implement IDisposable correctly +# https://github.com/CommunityToolkit/Labs-Windows/issues/443 +dotnet_diagnostic.CA2213.severity = none +dotnet_diagnostic.CA1001.severity = none diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ca1cb7bca..b9dce6108 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,18 +14,22 @@ on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: + merge_group: env: - DOTNET_VERSION: ${{ '7.0.x' }} + DOTNET_VERSION: ${{ '7.0.100' }} ENABLE_DIAGNOSTICS: false #COREHOST_TRACE: 1 + MSBUILD_VERBOSITY: normal COREHOST_TRACEFILE: corehosttrace.log + IS_MAIN: ${{ github.ref == 'refs/heads/main' }} + IS_PR: ${{ startsWith(github.ref, 'refs/pull/') }} # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "Xaml-Style-Check" Xaml-Style-Check: - runs-on: windows-latest + runs-on: windows-latest-large # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -61,8 +65,9 @@ jobs: env: MULTI_TARGET_DIRECTORY: tooling/MultiTarget # faux-ternary expression to select which platforms to build for each platform vs. duplicating step below. - TARGET_PLATFORMS: ${{ matrix.platform != 'WinUI3' && 'all' || 'all-uwp' }} + TARGET_PLATFORMS: ${{ matrix.platform != 'WinUI3' && 'all-wasdk' || 'all-uwp' }} TEST_PLATFORM: ${{ matrix.platform != 'WinUI3' && 'UWP' || 'WinAppSdk' }} + VERSION_PROPERTY: ${{ github.ref == 'refs/heads/main' && format('build.{0}', github.run_number) || format('pull-{0}.{1}', github.event.number, github.run_number) }} # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -72,16 +77,15 @@ jobs: minimum-size: 32GB maximum-size: 32GB disk-root: "C:" - - - name: Configure User-Mode crash dump type - if: ${{ env.ENABLE_DIAGNOSTICS == 'true' || env.COREHOST_TRACE != '' }} - run: | - reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpType /t REG_DWORD /d 2 /f - - - name: Configure User-Mode crash dump folder + + - name: Enable User-Mode Dumps collecting if: ${{ env.ENABLE_DIAGNOSTICS == 'true' || env.COREHOST_TRACE != '' }} + shell: powershell run: | - reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpFolder /t REG_EXPAND_SZ /d C:\CrashDumps\ /f + New-Item '${{ github.workspace }}\CrashDumps' -Type Directory + Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps' -Name 'DumpFolder' -Type ExpandString -Value '${{ github.workspace }}\CrashDumps' + Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps' -Name 'DumpCount' -Type DWord -Value '10' + Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps' -Name 'DumpType' -Type DWord -Value '2' - name: Install .NET SDK v${{ env.DOTNET_VERSION }} uses: actions/setup-dotnet@v3 @@ -103,7 +107,15 @@ jobs: run: dotnet tool restore - name: Run Uno Check to Install Dependencies - run: dotnet tool run uno-check --ci --fix --non-interactive --skip wsl --skip androidemulator --verbose + run: > + dotnet tool run uno-check + --ci + --fix + --non-interactive + --skip wsl + --skip androidemulator + --skip vswinworkloads + --verbose - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.3.1 @@ -117,13 +129,23 @@ jobs: run: powershell -version 5.1 -command "./tooling/GenerateAllSolution.ps1 -IncludeHeads ${{ env.TEST_PLATFORM }}${{ env.ENABLE_DIAGNOSTICS == 'true' && ' -UseDiagnostics' || '' }}" -ErrorAction Stop - name: Enable Uno.WinUI (in WinUI3 matrix only) + if: ${{ matrix.platform == 'WinUI3' }} working-directory: ./${{ env.MULTI_TARGET_DIRECTORY }} run: powershell -version 5.1 -command "./UseUnoWinUI.ps1 3" -ErrorAction Stop - if: ${{ matrix.platform == 'WinUI3' }} + + - name: Format Date/Time of Commit for Package Version + run: | + echo "VERSION_DATE=$(git log -1 --format=%cd --date=format:%y%m%d)" >> $env:GITHUB_ENV - name: MSBuild (With diagnostics) if: ${{ env.ENABLE_DIAGNOSTICS == 'true' }} - run: msbuild.exe CommunityToolkit.AllComponents.sln /restore /nowarn:MSB4011 -p:Configuration=Release /bl -v:diag + run: > + msbuild.exe /restore /nowarn:MSB4011 + /p:Configuration=Release + /m + ${{ env.ENABLE_DIAGNOSTICS == 'true' && '/bl' || '' }} + /v:${{ env.MSBUILD_VERBOSITY }} + CommunityToolkit.AllComponents.sln - name: MSBuild if: ${{ env.ENABLE_DIAGNOSTICS == 'false' }} @@ -132,12 +154,16 @@ jobs: # Build All Packages - name: pack experiments working-directory: ./tooling/Scripts/ - run: ./PackEachExperiment.ps1 all - - # Push Packages to our DevOps Artifacts Feed - - name: Add source - if: ${{ github.ref == 'refs/heads/main' }} - run: dotnet nuget update source LabsFeed --username dummy --password ${{ secrets.DEVOPS_PACKAGE_PUSH_TOKEN }} + run: ./PackEachExperiment.ps1 -date ${{ env.VERSION_DATE }}${{ env.VERSION_PROPERTY != '' && format(' -postfix {0}', env.VERSION_PROPERTY) || '' }} + + # Push Pull Request Packages to our DevOps Artifacts Feed (see nuget.config) + - name: Push Pull Request Packages (if not fork) + if: ${{ env.IS_PR == 'true' && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' }} + run: | + dotnet nuget add source https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-PullRequests/nuget/v3/index.json ` + --name PullRequests ` + --username dummy --password ${{ secrets.DEVOPS_PACKAGE_PUSH_TOKEN }} + dotnet nuget push "**/*.nupkg" --api-key dummy --source PullRequests --skip-duplicate - name: Push packages if: ${{ github.ref == 'refs/heads/main' }} @@ -154,7 +180,7 @@ jobs: - name: Run experiment tests against ${{ env.TEST_PLATFORM }} id: test-platform - run: vstest.console.exe ./tooling/**/CommunityToolkit.Tests.${{ env.TEST_PLATFORM }}.build.appxrecipe /Framework:FrameworkUap10 /logger:"trx;LogFileName=${{ env.TEST_PLATFORM }}.trx" + run: vstest.console.exe ./tooling/**/CommunityToolkit.Tests.${{ env.TEST_PLATFORM }}.build.appxrecipe /Framework:FrameworkUap10 /logger:"trx;LogFileName=${{ env.TEST_PLATFORM }}.trx" /Blame - name: Create test reports run: | @@ -174,13 +200,28 @@ jobs: with: name: ilc-repro path: ./*.zip - + + # https://github.com/dorny/paths-filter#custom-processing-of-changed-files + - name: Detect If any Dump Files + uses: dorny/paths-filter@v2.11.1 + id: filter + with: + list-files: shell + filters: | + dump: + - added: '${{ github.workspace }}/CrashDumps/*.dmp' - name: Artifact - WER crash dumps - uses: actions/upload-artifact@v2 - if: ${{ (env.ENABLE_DIAGNOSTICS == 'true' || env.COREHOST_TRACE != '') && always() }} + uses: actions/upload-artifact@v3 + if: ${{ steps.filter.outputs.dump == 'true' && (env.ENABLE_DIAGNOSTICS == 'true' || env.COREHOST_TRACE != '') && always() }} with: - name: Crash Dumps - path: C:\CrashDumps\* + name: CrashDumps-${{ matrix.platform }} + path: '${{ github.workspace }}/CrashDumps' + + - name: Analyze Dump + if: ${{ steps.filter.outputs.dump == 'true' && (env.ENABLE_DIAGNOSTICS == 'true' || env.COREHOST_TRACE != '') && always() }} + run: | + dotnet tool install --global dotnet-dump + dotnet-dump analyze ${{ steps.filter.outputs.dump_files }} -c "clrstack" -c "pe -lines" -c "exit" wasm-linux: runs-on: ubuntu-latest diff --git a/.vscode/settings.json b/.vscode/settings.json index ebc930a73..45b1618df 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,6 +7,6 @@ "csharp.suppressDotnetInstallWarning": true, "csharp.suppressDotnetRestoreNotification": true, "csharp.semanticHighlighting.enabled": true, - "omnisharp.enableImportCompletion": true, - "omnisharp.enableMsBuildLoadProjectsOnDemand": true + "omnisharp.enableMsBuildLoadProjectsOnDemand": true, + "dotnet.completion.showCompletionItemsFromUnimportedNamespaces": true } \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index 7be5feeb2..766daa63d 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,6 +12,7 @@ true true + $(NoWarn);Uno0001 diff --git a/components/AppServices/src/AppServiceHost.cs b/components/AppServices/src/AppServiceHost.cs index f5f7bde28..a3558338d 100644 --- a/components/AppServices/src/AppServiceHost.cs +++ b/components/AppServices/src/AppServiceHost.cs @@ -40,8 +40,10 @@ public abstract class AppServiceHost /// The name of the app service. /// private readonly string _appServiceName; + #pragma warning disable CA1001 private readonly SemaphoreSlim _semaphoreConnection = new(0, 1); private readonly SemaphoreSlim _lockConnection = new(1, 1); + #pragma warning restore CA1001 /// /// diff --git a/components/CanvasLayout/samples/CanvasLayout.Samples.csproj b/components/CanvasLayout/samples/CanvasLayout.Samples.csproj index bd4335bc9..36a4a73f0 100644 --- a/components/CanvasLayout/samples/CanvasLayout.Samples.csproj +++ b/components/CanvasLayout/samples/CanvasLayout.Samples.csproj @@ -5,4 +5,12 @@ + + + + + + PreserveNewest + + diff --git a/components/CanvasView/samples/CanvasView.Samples.csproj b/components/CanvasView/samples/CanvasView.Samples.csproj index 457377ea6..01a2ab517 100644 --- a/components/CanvasView/samples/CanvasView.Samples.csproj +++ b/components/CanvasView/samples/CanvasView.Samples.csproj @@ -5,4 +5,12 @@ + + + + + + PreserveNewest + + diff --git a/components/CanvasView/src/CanvasView.cs b/components/CanvasView/src/CanvasView.cs index 01c4c581a..72f13bd36 100644 --- a/components/CanvasView/src/CanvasView.cs +++ b/components/CanvasView/src/CanvasView.cs @@ -45,7 +45,7 @@ protected override void PrepareContainerForItemOverride(DependencyObject element cp.ManipulationDelta += ContentPresenter_ManipulationDelta; } - /// TODO: Do we want to support something else in a custom template?? else if (item is FrameworkElement fe && fe.FindDescendant/GetContentControl?) + // TODO: Do we want to support something else in a custom template?? else if (item is FrameworkElement fe && fe.FindDescendant/GetContentControl?) } protected override void ClearContainerForItemOverride(DependencyObject element, object item) diff --git a/components/DataTable/samples/DataTable.Samples.csproj b/components/DataTable/samples/DataTable.Samples.csproj index 18398261f..e1f67072c 100644 --- a/components/DataTable/samples/DataTable.Samples.csproj +++ b/components/DataTable/samples/DataTable.Samples.csproj @@ -5,4 +5,12 @@ + + + + + + PreserveNewest + + diff --git a/components/MarqueeText/samples/MarqueeText.Samples.csproj b/components/MarqueeText/samples/MarqueeText.Samples.csproj index 5d3e7495a..2c28eea29 100644 --- a/components/MarqueeText/samples/MarqueeText.Samples.csproj +++ b/components/MarqueeText/samples/MarqueeText.Samples.csproj @@ -13,4 +13,12 @@ + + + + + + PreserveNewest + + diff --git a/components/RivePlayer/samples/RivePlayer.Samples.csproj b/components/RivePlayer/samples/RivePlayer.Samples.csproj index 5abca8041..f099e85f7 100644 --- a/components/RivePlayer/samples/RivePlayer.Samples.csproj +++ b/components/RivePlayer/samples/RivePlayer.Samples.csproj @@ -11,4 +11,12 @@ + + + + + + PreserveNewest + + diff --git a/components/RivePlayer/src/Dependencies.props b/components/RivePlayer/src/Dependencies.props index 1740b9bef..6c847f517 100644 --- a/components/RivePlayer/src/Dependencies.props +++ b/components/RivePlayer/src/Dependencies.props @@ -17,24 +17,24 @@ - + - + - + - + diff --git a/components/Shimmer/samples/Shimmer.Samples.csproj b/components/Shimmer/samples/Shimmer.Samples.csproj index 79388122e..325f18a23 100644 --- a/components/Shimmer/samples/Shimmer.Samples.csproj +++ b/components/Shimmer/samples/Shimmer.Samples.csproj @@ -7,10 +7,14 @@ + PreserveNewest + + PreserveNewest + \ No newline at end of file diff --git a/components/TokenView/samples/TokenView.Samples.csproj b/components/TokenView/samples/TokenView.Samples.csproj index c7073b3a2..efbf3b1a3 100644 --- a/components/TokenView/samples/TokenView.Samples.csproj +++ b/components/TokenView/samples/TokenView.Samples.csproj @@ -21,4 +21,12 @@ + + + + + + PreserveNewest + + diff --git a/components/TokenView/src/TokenItem/TokenItemRemovingEventArgs.cs b/components/TokenView/src/TokenItem/TokenItemRemovingEventArgs.cs index f8d0aefa0..8e4f5cbf4 100644 --- a/components/TokenView/src/TokenItem/TokenItemRemovingEventArgs.cs +++ b/components/TokenView/src/TokenItem/TokenItemRemovingEventArgs.cs @@ -10,11 +10,11 @@ public class TokenItemRemovingEventArgs : EventArgs /// Initializes a new instance of the class. /// /// Item being removed. - /// container being closed. - public TokenItemRemovingEventArgs(object item, TokenItem tokenITem) + /// container being closed. + public TokenItemRemovingEventArgs(object item, TokenItem tokenItem) { Item = item; - TokenItem = tokenITem; + TokenItem = tokenItem; } /// diff --git a/components/TransitionHelper/samples/TransitionHelper.Samples.csproj b/components/TransitionHelper/samples/TransitionHelper.Samples.csproj index 8c74130f0..703710bb6 100644 --- a/components/TransitionHelper/samples/TransitionHelper.Samples.csproj +++ b/components/TransitionHelper/samples/TransitionHelper.Samples.csproj @@ -11,4 +11,12 @@ + + + + + + PreserveNewest + + diff --git a/global.json b/global.json index 1ad7848ca..852dfb6d2 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.405", + "version": "7.0.100", "rollForward": "latestFeature" }, "msbuild-sdks": diff --git a/tooling b/tooling index 4c90e49f5..de5c2491c 160000 --- a/tooling +++ b/tooling @@ -1 +1 @@ -Subproject commit 4c90e49f544a46cace6e188f7cd509f56e968a2d +Subproject commit de5c2491ce24ec62af83bdc95e41a35fd2237350