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