diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 98537666..78a89568 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.13.0",
"commands": [
"uno-check"
]
diff --git a/.editorconfig b/.editorconfig
index 21a44161..d0c059e1 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -434,4 +434,4 @@ csharp_style_prefer_extended_property_pattern = true:suggestion
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
+dotnet_code_quality.CA1001.excluded_type_names_with_derived_types = T:Windows.UI.Xaml.Media.Animation.Storyboard
\ No newline at end of file
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index e7079d4c..58b4b300 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -17,8 +17,9 @@ on:
merge_group:
env:
- DOTNET_VERSION: ${{ '7.0.x' }}
+ DOTNET_VERSION: ${{ '7.0.100' }}
ENABLE_DIAGNOSTICS: true
+ MSBUILD_VERBOSITY: normal
#COREHOST_TRACE: 1
COREHOST_TRACEFILE: corehosttrace.log
MULTI_TARGET_DIRECTORY: tooling/MultiTarget
@@ -65,6 +66,7 @@ jobs:
# faux-ternary expression to select which platforms to build for each platform vs. duplicating step below.
TARGET_PLATFORMS: ${{ matrix.platform != 'WinUI3' && 'all' || 'all-uwp' }}
TEST_PLATFORM: ${{ matrix.platform != 'WinUI3' && 'UWP' || 'WinAppSdk' }}
+ VERSION_PROPERTY: ${{ github.ref == 'refs/heads/main' && format('-p:PreviewVersion=build.{0}', github.run_number) || format('-p:PreviewVersion=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:
@@ -104,7 +106,7 @@ 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
@@ -122,27 +124,25 @@ jobs:
run: powershell -version 5.1 -command "./UseUnoWinUI.ps1 3" -ErrorAction Stop
if: ${{ matrix.platform == 'WinUI3' }}
- - name: MSBuild (With diagnostics)
- if: ${{ env.ENABLE_DIAGNOSTICS == 'true' }}
- run: msbuild.exe CommunityToolkit.AllComponents.sln /restore /nowarn:MSB4011 -p:Configuration=Release -m /bl -v:diag
-
- name: MSBuild
- if: ${{ env.ENABLE_DIAGNOSTICS == 'false' }}
- run: msbuild.exe CommunityToolkit.AllComponents.sln /restore /nowarn:MSB4011 -p:Configuration=Release -m
+ run: msbuild.exe CommunityToolkit.AllComponents.sln /restore /nowarn:MSB4011 -p:Configuration=Release -m ${{ env.VERSION_PROPERTY }} ${{ env.ENABLE_DIAGNOSTICS == 'true' && '/bl' || '' }} -v:${{ env.MSBUILD_VERBOSITY }}
# Build All Packages
- name: pack experiments
working-directory: ./tooling/Scripts/
- run: ./PackEachExperiment.ps1 all
+ run: ./PackEachExperiment.ps1 -extraBuildProperties "${{ env.VERSION_PROPERTY }}"
# Push Packages to our DevOps Artifacts Feed (see nuget.config)
- - name: Add source
+ - name: Add source (main)
if: ${{ github.ref == 'refs/heads/main' }}
run: dotnet nuget update source MainLatest --username dummy --password ${{ secrets.DEVOPS_PACKAGE_PUSH_TOKEN }}
+ - name: Add source (pull requests)
+ if: ${{ github.ref != 'refs/heads/main' }}
+ 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 }}
+
- name: Push packages
- if: ${{ github.ref == 'refs/heads/main' }}
- run: dotnet nuget push "**/*.nupkg" --api-key dummy --source MainLatest --skip-duplicate
+ run: dotnet nuget push "**/*.nupkg" --api-key dummy --source ${{ github.ref == 'refs/heads/main' && 'MainLatest' || 'PullRequests' }} --skip-duplicate
# Run tests
- name: Setup VSTest Path
@@ -241,7 +241,7 @@ jobs:
# See launch.json configuration file for analogous command we're emulating here to build LINK: ../../.vscode/launch.json:CommunityToolkit.App.Wasm.csproj
- name: dotnet build
working-directory: ./${{ env.HEADS_DIRECTORY }}/AllComponents/Wasm/
- run: dotnet build /r /bl
+ run: dotnet build /r /bl -v:${{ env.MSBUILD_VERBOSITY }}
# TODO: Do we want to run tests here? Can we do that on linux easily?
diff --git a/components/Animations/src/ConnectedAnimations/Connected.cs b/components/Animations/src/ConnectedAnimations/Connected.cs
index 8075233c..903c116c 100644
--- a/components/Animations/src/ConnectedAnimations/Connected.cs
+++ b/components/Animations/src/ConnectedAnimations/Connected.cs
@@ -53,7 +53,7 @@ public static void SetAnchorElement(DependencyObject obj, UIElement value)
///
/// Gets the connected animation key associated with the ListViewBase item being animated
///
- /// The
+ /// The
/// The connected animation key
public static string GetListItemKey(DependencyObject obj)
{
@@ -61,9 +61,9 @@ public static string GetListItemKey(DependencyObject obj)
}
///
- /// Sets the connected animation key for the item being animated
+ /// Sets the connected animation key for the item being animated
///
- /// The
+ /// The
/// The connected animation key
public static void SetListItemKey(DependencyObject obj, string value)
{
@@ -73,7 +73,7 @@ public static void SetListItemKey(DependencyObject obj, string value)
///
/// Gets the name of the element in the that is animated
///
- /// The
+ /// The
/// The name of the element being animated
public static string GetListItemElementName(DependencyObject obj)
{
@@ -83,7 +83,7 @@ public static string GetListItemElementName(DependencyObject obj)
///
/// Sets the name of the element in the that is animated
///
- /// The
+ /// The
/// The name of the element to animate
public static void SetListItemElementName(DependencyObject obj, string value)
{
diff --git a/components/Animations/src/Enums/FrameworkLayer.cs b/components/Animations/src/Enums/FrameworkLayer.cs
index 44af3d43..108c2aa0 100644
--- a/components/Animations/src/Enums/FrameworkLayer.cs
+++ b/components/Animations/src/Enums/FrameworkLayer.cs
@@ -2,6 +2,14 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
+#if WINUI2
+using Composition = Windows.UI.Composition;
+using Animation = Windows.UI.Xaml.Media.Animation;
+#elif WINUI3
+using Composition = Microsoft.UI.Composition;
+using Animation = Microsoft.UI.Xaml.Media.Animation;
+#endif
+
namespace CommunityToolkit.WinUI.Animations;
///
@@ -10,12 +18,12 @@ namespace CommunityToolkit.WinUI.Animations;
public enum FrameworkLayer
{
///
- /// Indicates the APIs.
+ /// Indicates the APIs.
///
Composition,
-
+
///
- /// Indicates the APIs.
+ /// Indicates the APIs.
///
Xaml
}
diff --git a/components/Animations/src/Enums/VisualProperty.cs b/components/Animations/src/Enums/VisualProperty.cs
index 47c53753..b7273a25 100644
--- a/components/Animations/src/Enums/VisualProperty.cs
+++ b/components/Animations/src/Enums/VisualProperty.cs
@@ -4,6 +4,12 @@
namespace CommunityToolkit.WinUI.Animations;
+#if WINUI2
+using Windows.UI.Composition;
+#else
+using Microsoft.UI.Composition;
+#endif
+
///
/// Indicates a property of a object.
///
diff --git a/components/Animations/src/Expressions/ReferenceNodes/AmbientLightReferenceNode.cs b/components/Animations/src/Expressions/ReferenceNodes/AmbientLightReferenceNode.cs
index 4481c925..57d8b193 100644
--- a/components/Animations/src/Expressions/ReferenceNodes/AmbientLightReferenceNode.cs
+++ b/components/Animations/src/Expressions/ReferenceNodes/AmbientLightReferenceNode.cs
@@ -13,7 +13,7 @@ namespace CommunityToolkit.WinUI.Animations.Expressions;
///
/// Class AmbientLightReferenceNode. This class cannot be inherited.
///
-///
+///
public sealed class AmbientLightReferenceNode : ReferenceNode
{
///
diff --git a/components/Animations/src/Xaml/Abstract/CustomAnimation{TValue,TKeyFrame}.cs b/components/Animations/src/Xaml/Abstract/CustomAnimation{TValue,TKeyFrame}.cs
index dde31d2b..201a8865 100644
--- a/components/Animations/src/Xaml/Abstract/CustomAnimation{TValue,TKeyFrame}.cs
+++ b/components/Animations/src/Xaml/Abstract/CustomAnimation{TValue,TKeyFrame}.cs
@@ -19,6 +19,9 @@ public abstract class CustomAnimation : ImplicitAnimation
public string? Target { get; set; }
+
+// Suppression required for net7-android. The #if compilation conditionals are preventing the compiler from interpreting it correctly.
+#pragma warning disable CS1587 // XML comment is not placed on a valid language element
///
/// Gets or sets the target framework layer for the animation. This is only supported
/// for a set of animation types (see the docs for more on this). Furthermore, this is
@@ -31,6 +34,7 @@ public abstract class CustomAnimation : ImplicitAnimation.
///
public FrameworkLayer Layer { get; set; } = FrameworkLayer.Xaml;
+#pragma warning restore CS1587 // XML comment is not placed on a valid language element
#endif
///
diff --git a/components/Animations/src/Xaml/AnimationSet.cs b/components/Animations/src/Xaml/AnimationSet.cs
index 0c1035ed..1c717ca2 100644
--- a/components/Animations/src/Xaml/AnimationSet.cs
+++ b/components/Animations/src/Xaml/AnimationSet.cs
@@ -5,11 +5,17 @@
using System.Diagnostics.Contracts;
using System.Runtime.CompilerServices;
+#if WINUI2
+using Windows.UI.Xaml.Media.Animation;
+#else
+using Microsoft.UI.Xaml.Media.Animation;
+#endif
+
namespace CommunityToolkit.WinUI.Animations;
///
/// A collection of animations that can be grouped together. This type represents a composite animation
-/// (such as ) that can be executed on a given element.
+/// (such as ) that can be executed on a given element.
///
public sealed class AnimationSet : DependencyObjectCollection
{
diff --git a/components/Behaviors/src/Notification/StackedNotificationsBehavior.cs b/components/Behaviors/src/Notification/StackedNotificationsBehavior.cs
index 8b18a399..34c92d39 100644
--- a/components/Behaviors/src/Notification/StackedNotificationsBehavior.cs
+++ b/components/Behaviors/src/Notification/StackedNotificationsBehavior.cs
@@ -13,7 +13,7 @@
namespace CommunityToolkit.WinUI.Behaviors;
///
-/// A behavior to add the stacked notification support to .
+/// A behavior to add the stacked notification support to .
///
public class StackedNotificationsBehavior : BehaviorBase
{
diff --git a/components/Collections/samples/AdvancedCollectionViewSample.xaml.cs b/components/Collections/samples/AdvancedCollectionViewSample.xaml.cs
index 58be8d94..118531cd 100644
--- a/components/Collections/samples/AdvancedCollectionViewSample.xaml.cs
+++ b/components/Collections/samples/AdvancedCollectionViewSample.xaml.cs
@@ -61,7 +61,7 @@ private void Add_Click(object sender, RoutedEventArgs e)
}
///
- /// A sample class used to show how to use the interface.
+ /// A sample class used to show how to use the interface.
///
public class Person
{
diff --git a/components/Collections/samples/IncrementalLoadingCollectionSample.xaml.cs b/components/Collections/samples/IncrementalLoadingCollectionSample.xaml.cs
index be392d7d..3366f461 100644
--- a/components/Collections/samples/IncrementalLoadingCollectionSample.xaml.cs
+++ b/components/Collections/samples/IncrementalLoadingCollectionSample.xaml.cs
@@ -32,9 +32,9 @@ private async void RefreshCollection(object sender, RoutedEventArgs e)
}
///
-/// A sample implementation of the interface.
+/// A sample implementation of the interface.
///
-///
+///
public class PeopleSource : IIncrementalSource
{
private readonly List _people;
@@ -92,7 +92,7 @@ public PeopleSource()
}
///
-/// A sample class used to show how to use the interface.
+/// A sample class used to show how to use the interface.
///
public class Person
{
diff --git a/components/Converters/src/FileSizeToFriendlyStringConverter.cs b/components/Converters/src/FileSizeToFriendlyStringConverter.cs
index e6f35d02..93db3317 100644
--- a/components/Converters/src/FileSizeToFriendlyStringConverter.cs
+++ b/components/Converters/src/FileSizeToFriendlyStringConverter.cs
@@ -5,7 +5,7 @@
namespace CommunityToolkit.WinUI.Converters;
///
-/// Converts a file size in bytes to a more human-readable friendly format using
+/// Converts a file size in bytes to a more human-readable friendly format using
///
public class FileSizeToFriendlyStringConverter : IValueConverter
{
diff --git a/components/Extensions/src/Element/FrameworkElementExtensions.ActualSize.cs b/components/Extensions/src/Element/FrameworkElementExtensions.ActualSize.cs
index 3d148a85..c5e0a36e 100644
--- a/components/Extensions/src/Element/FrameworkElementExtensions.ActualSize.cs
+++ b/components/Extensions/src/Element/FrameworkElementExtensions.ActualSize.cs
@@ -5,12 +5,12 @@
namespace CommunityToolkit.WinUI;
///
-/// Provides attached dependency properties for the type.
+/// Provides attached dependency properties for the type.
///
public static partial class FrameworkElementExtensions
{
///
- /// Attached for enabling actual size binding on any .
+ /// Attached for enabling actual size binding on any .
///
public static readonly DependencyProperty EnableActualSizeBindingProperty = DependencyProperty.RegisterAttached("EnableActualSizeBinding", typeof(bool), typeof(FrameworkElementExtensions), new PropertyMetadata(false, OnEnableActualSizeBindingPropertyChanged));
diff --git a/components/Extensions/src/Element/FrameworkElementExtensions.Mouse.cs b/components/Extensions/src/Element/FrameworkElementExtensions.Mouse.cs
index 2866f666..d1bced06 100644
--- a/components/Extensions/src/Element/FrameworkElementExtensions.Mouse.cs
+++ b/components/Extensions/src/Element/FrameworkElementExtensions.Mouse.cs
@@ -32,14 +32,14 @@ public static partial class FrameworkElementExtensions
new() { { CursorShape.Arrow, _defaultCursor } };
///
- /// Dependency property for specifying the target to be shown
+ /// Dependency property for specifying the target to be shown
/// over the target .
///
public static readonly DependencyProperty CursorProperty =
DependencyProperty.RegisterAttached("Cursor", typeof(CursorShape), typeof(FrameworkElementExtensions), new PropertyMetadata(CursorShape.Arrow, CursorChanged));
///
- /// Set the target .
+ /// Set the target .
///
/// Object where the selector cursor type should be shown.
/// Target cursor type value.
@@ -49,7 +49,7 @@ public static void SetCursor(FrameworkElement element, CursorShape value)
}
///
- /// Get the current .
+ /// Get the current .
///
/// Object where the selector cursor type should be shown.
/// Cursor type set on target element.
diff --git a/components/Extensions/src/Element/UIElementExtensions.cs b/components/Extensions/src/Element/UIElementExtensions.cs
index f4c07c70..f6625fc9 100644
--- a/components/Extensions/src/Element/UIElementExtensions.cs
+++ b/components/Extensions/src/Element/UIElementExtensions.cs
@@ -13,7 +13,7 @@
namespace CommunityToolkit.WinUI;
///
-/// Provides attached dependency properties for the
+/// Provides attached dependency properties for the
///
public static class UIElementExtensions
{
diff --git a/components/Extensions/src/Markup/SymbolIconExtension.cs b/components/Extensions/src/Markup/SymbolIconExtension.cs
index 79d03b94..3a33e533 100644
--- a/components/Extensions/src/Markup/SymbolIconExtension.cs
+++ b/components/Extensions/src/Markup/SymbolIconExtension.cs
@@ -11,7 +11,7 @@ namespace CommunityToolkit.WinUI;
public class SymbolIconExtension : TextIconExtension
{
///
- /// Gets or sets the value representing the icon to display.
+ /// Gets or sets the value representing the icon to display.
///
public Symbol Symbol { get; set; }
diff --git a/components/Extensions/src/Markup/SymbolIconSourceExtension.cs b/components/Extensions/src/Markup/SymbolIconSourceExtension.cs
index e2aa99ba..555db096 100644
--- a/components/Extensions/src/Markup/SymbolIconSourceExtension.cs
+++ b/components/Extensions/src/Markup/SymbolIconSourceExtension.cs
@@ -11,7 +11,7 @@ namespace CommunityToolkit.WinUI;
public class SymbolIconSourceExtension : TextIconExtension
{
///
- /// Gets or sets the value representing the icon to display.
+ /// Gets or sets the value representing the icon to display.
///
public Symbol Symbol { get; set; }
diff --git a/components/Extensions/src/Shadows/AttachedShadowBase.cs b/components/Extensions/src/Shadows/AttachedShadowBase.cs
index 26583602..90145fe1 100644
--- a/components/Extensions/src/Shadows/AttachedShadowBase.cs
+++ b/components/Extensions/src/Shadows/AttachedShadowBase.cs
@@ -27,7 +27,7 @@ public abstract partial class AttachedShadowBase : DependencyObject, IAttachedSh
///
/// Gets a value indicating whether or not Composition's VisualSurface is supported.
///
- protected static readonly bool SupportsCompositionVisualSurface = ApiInformation.IsTypePresent(typeof(CompositionVisualSurface).FullName);
+ protected static readonly bool SupportsCompositionVisualSurface = typeof(CompositionVisualSurface).FullName is string str && ApiInformation.IsTypePresent(str);
#endif
///
diff --git a/components/Extensions/src/Shadows/IAttachedShadow.cs b/components/Extensions/src/Shadows/IAttachedShadow.cs
index 9f8ac37a..56e412d5 100644
--- a/components/Extensions/src/Shadows/IAttachedShadow.cs
+++ b/components/Extensions/src/Shadows/IAttachedShadow.cs
@@ -22,7 +22,7 @@ public interface IAttachedShadow
double Opacity { get; set; }
///
- /// Gets or sets the offset of the shadow as a string representation of a .
+ /// Gets or sets the offset of the shadow as a string representation of a .
///
string Offset { get; set; }
diff --git a/components/Helpers/samples/CameraHelperSample.xaml.cs b/components/Helpers/samples/CameraHelperSample.xaml.cs
index f4ece300..1f2038f9 100644
--- a/components/Helpers/samples/CameraHelperSample.xaml.cs
+++ b/components/Helpers/samples/CameraHelperSample.xaml.cs
@@ -7,6 +7,7 @@
using Windows.Media;
using Windows.Media.Capture.Frames;
using Windows.ApplicationModel;
+
#if WINAPPSDK
using Microsoft.UI.Xaml.Media.Imaging;
#else
@@ -62,7 +63,7 @@ private void Setup()
#endif
}
- private async void Application_Suspending(object sender, SuspendingEventArgs e)
+ private async void Application_Suspending(object? sender, SuspendingEventArgs e)
{
if (IsLoaded)
{
@@ -72,7 +73,7 @@ private async void Application_Suspending(object sender, SuspendingEventArgs e)
}
}
- private async void Application_Resuming(object sender, object e)
+ private async void Application_Resuming(object? sender, object e)
{
await InitializeAsync();
}
diff --git a/components/Primitives/src/WrapPanel/StretchChild.cs b/components/Primitives/src/WrapPanel/StretchChild.cs
index 754fa2ba..d078aaab 100644
--- a/components/Primitives/src/WrapPanel/StretchChild.cs
+++ b/components/Primitives/src/WrapPanel/StretchChild.cs
@@ -5,7 +5,7 @@
namespace CommunityToolkit.WinUI.Controls;
///
-/// Options for how to calculate the layout of items.
+/// Options for how to calculate the layout of items.
///
public enum StretchChild
{
diff --git a/components/Sizers/src/SizerBase.cs b/components/Sizers/src/SizerBase.cs
index 4c925054..16d10492 100644
--- a/components/Sizers/src/SizerBase.cs
+++ b/components/Sizers/src/SizerBase.cs
@@ -7,7 +7,7 @@
namespace CommunityToolkit.WinUI.Controls;
///
-/// Base class for splitting/resizing type controls like and . Acts similar to an enlarged type control, but with keyboard support. Subclasses should override the various abstract methods here to implement their behavior.
+/// Base class for splitting/resizing type controls like and . Acts similar to an enlarged type control, but with keyboard support. Subclasses should override the various abstract methods here to implement their behavior.
///
[TemplateVisualState(Name = NormalState, GroupName = CommonStates)]
diff --git a/global.json b/global.json
index 1ad7848c..852dfb6d 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 4c90e49f..3e4623ec 160000
--- a/tooling
+++ b/tooling
@@ -1 +1 @@
-Subproject commit 4c90e49f544a46cace6e188f7cd509f56e968a2d
+Subproject commit 3e4623ecc9575eb60a7535aae61ea538cde83059