Merge branch 'master' into winui

This commit is contained in:
Alexandre Zollinger Chohfi 2020-10-23 14:53:05 -07:00
Родитель 4183027557 6d567c5c10
Коммит 841ec61e66
38 изменённых файлов: 1191 добавлений и 104 удалений

5
.github/ISSUE_TEMPLATE/bug_report.md поставляемый
Просмотреть файл

@ -7,10 +7,7 @@ assignees: ''
---
<!--
PLEASE HELP US PROCESS GITHUB ISSUES FASTER BY PROVIDING THE FOLLOWING INFORMATION.
ISSUES MISSING IMPORTANT INFORMATION MAY BE CLOSED WITHOUT INVESTIGATION.
-->
<!-- 🚨 Please Do Not skip any instructions and information mentioned below as they are all required and essential to investigate the issue. Issues with missing information may be closed without investigation 🚨 -->
## Describe the bug
A clear and concise description of what the bug is.

2
.github/ISSUE_TEMPLATE/feature_request.md поставляемый
Просмотреть файл

@ -7,6 +7,8 @@ assignees: ''
---
<!-- 🚨 Please provide detailed information and Do Not skip any instructions as they are all required and essential to help us understand the feature 🚨 -->
## Describe the problem this feature would solve
<!-- Please describe or link to any existing issues or discussions.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->

1
.github/ISSUE_TEMPLATE/question.md поставляемый
Просмотреть файл

@ -13,6 +13,7 @@ Hi!
We try and keep our GitHub issue list for bugs and features.
Ideally, it'd be great to post your question on Stack Overflow using the 'windows-community-toolkit' tag here: https://stackoverflow.com/questions/tagged/windows-community-toolkit
🚨 Please provide detailed information that includes examples, screenshots, and relevant issues if possible 🚨
If this is more about a scenario that you think is missing documentation, please file an issue instead at https://github.com/MicrosoftDocs/WindowsCommunityToolkitDocs/issues/new

4
.github/PULL_REQUEST_TEMPLATE.md поставляемый
Просмотреть файл

@ -1,3 +1,5 @@
<!-- 🚨 Please Do Not skip any instructions and information mentioned below as they are all required and essential to evaluate and test the PR. By fulfilling all the required information you will be able to reduce the volume of questions and most likely help merge the PR faster 🚨 -->
## Fixes #
<!-- Add the relevant issue number after the "#" mentioned above (for ex: Fixes #1234) which will automatically close the issue once the PR is merged. -->
@ -38,7 +40,7 @@ Please check if your PR fulfills the following requirements:
- [ ] Contains **NO** breaking changes
<!-- If this PR contains a breaking change, please describe the impact and migration path for existing applications below.
Please note that breaking changes are likely to be rejected. -->
Please note that breaking changes are likely to be rejected within minor release cycles or held until major versions. -->
## Other information

6
.gitignore поставляемый
Просмотреть файл

@ -230,4 +230,8 @@ msbuild.binlog
**/Generated/TypeInfo.g.cs
# Files generated by the VS build
**/Generated Files/**
**/Generated Files/**
# TAEF Log output
WexLogFileOutput
*.wtl

Просмотреть файл

@ -9,7 +9,10 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:ImageEx">
<Grid Background="{TemplateBinding Background}" CornerRadius="{TemplateBinding CornerRadius}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<Grid Background="{TemplateBinding Background}"
CornerRadius="{TemplateBinding CornerRadius}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Image Name="PlaceholderImage"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
VerticalAlignment="{TemplateBinding VerticalAlignment}"

Просмотреть файл

@ -20,11 +20,6 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
/// </summary>
public static readonly DependencyProperty StretchProperty = DependencyProperty.Register(nameof(Stretch), typeof(Stretch), typeof(ImageExBase), new PropertyMetadata(Stretch.Uniform));
/// <summary>
/// Identifies the <see cref="CornerRadius"/> dependency property.
/// </summary>
public static new readonly DependencyProperty CornerRadiusProperty = DependencyProperty.Register(nameof(CornerRadius), typeof(CornerRadius), typeof(ImageExBase), new PropertyMetadata(new CornerRadius(0)));
/// <summary>
/// Identifies the <see cref="DecodePixelHeight"/> dependency property.
/// </summary>
@ -81,16 +76,6 @@ namespace Microsoft.Toolkit.Uwp.UI.Controls
/// </summary>
public bool IsInitialized { get; private set; }
/// <summary>
/// Gets or sets the CornerRadius for underlying image. <para/>
/// Used to created rounded/circular images.
/// </summary>
public new CornerRadius CornerRadius
{
get { return (CornerRadius)GetValue(CornerRadiusProperty); }
set { SetValue(CornerRadiusProperty, value); }
}
/// <summary>
/// Gets or sets DecodePixelHeight for underlying bitmap
/// </summary>

Просмотреть файл

@ -0,0 +1,7 @@
<Application
x:Class="UITests.App.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:UITests.App">
</Application>

Просмотреть файл

@ -0,0 +1,89 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace UITests.App
{
public sealed partial class App
{
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
}
/// <summary>
/// Invoked when the application is launched normally by the end user. Other entry points
/// will be used such as when the application is launched to open a specific file.
/// </summary>
/// <param name="e">Details about the launch request and process.</param>
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (rootFrame == null)
{
// Create a Frame to act as the navigation context and navigate to the first page
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
// TODO: Load state from previously suspended application
}
// Place the frame in the current Window
Window.Current.Content = rootFrame;
}
if (e.PrelaunchActivated == false)
{
if (rootFrame.Content == null)
{
// When the navigation stack isn't restored navigate to the first page,
// configuring the new page by passing required information as a navigation
// parameter
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
// Ensure the current window is active
Window.Current.Activate();
}
}
/// <summary>
/// Invoked when Navigation to a certain page fails
/// </summary>
/// <param name="sender">The Frame which failed navigation</param>
/// <param name="e">Details about the navigation failure</param>
private void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
{
throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
}
/// <summary>
/// Invoked when application execution is being suspended. Application state is saved
/// without knowing whether the application will be terminated or resumed with the contents
/// of memory still intact.
/// </summary>
/// <param name="sender">The source of the suspend request.</param>
/// <param name="e">Details about the suspend request.</param>
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
// TODO: Save application state and stop any background activity
deferral.Complete();
}
}
}

Двоичные данные
UITests/UITests.App/Assets/LockScreenLogo.scale-200.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.4 KiB

Двоичные данные
UITests/UITests.App/Assets/SplashScreen.scale-200.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 7.5 KiB

Двоичные данные
UITests/UITests.App/Assets/Square150x150Logo.scale-200.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.9 KiB

Двоичные данные
UITests/UITests.App/Assets/Square44x44Logo.scale-200.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.6 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.2 KiB

Двоичные данные
UITests/UITests.App/Assets/StoreLogo.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.4 KiB

Двоичные данные
UITests/UITests.App/Assets/Wide310x150Logo.scale-200.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

Просмотреть файл

@ -0,0 +1,19 @@
<Page
x:Class="UITests.App.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:testhelpers="using:AppTestAutomationHelpers"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<testhelpers:TestAutomationHelpersPanel />
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="Click Me" Click="Button_Click"/>
<TextBlock x:Name="textBlock"/>
</StackPanel>
</Grid>
</Page>

Просмотреть файл

@ -0,0 +1,19 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
namespace UITests.App
{
public sealed partial class MainPage
{
public MainPage()
{
InitializeComponent();
}
private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
textBlock.Text = "Clicked";
}
}
}

Просмотреть файл

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
IgnorableNamespaces="uap mp">
<Identity
Name="3568ebdf-5b6b-4ddd-bb17-462d614ba50f"
Publisher="CN=alzollin"
Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="3568ebdf-5b6b-4ddd-bb17-462d614ba50f" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
<Properties>
<DisplayName>UITests.App</DisplayName>
<PublisherDisplayName>alzollin</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate"/>
</Resources>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="UITests.App.App">
<uap:VisualElements
DisplayName="UITests.App"
Square150x150Logo="Assets\Square150x150Logo.png"
Square44x44Logo="Assets\Square44x44Logo.png"
Description="UITests.App"
BackgroundColor="transparent">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"/>
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
</Package>

Просмотреть файл

@ -0,0 +1,30 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("UITests.App")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("UITests.App")]
[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: ComVisible(false)]

Просмотреть файл

@ -0,0 +1,31 @@
<!--
This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most
developers. However, you can modify these parameters to modify the behavior of the .NET Native
optimizer.
Runtime Directives are documented at https://go.microsoft.com/fwlink/?LinkID=391919
To fully enable reflection for App1.MyClass and all of its public/private members
<Type Name="App1.MyClass" Dynamic="Required All"/>
To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32
<TypeInstantiation Name="App1.AppClass" Arguments="System.Int32" Activate="Required Public" />
Using the Namespace directive to apply reflection policy to all the types in a particular namespace
<Namespace Name="DataClasses.ViewModels" Serialize="All" />
-->
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Application>
<!--
An Assembly element with Name="*Application*" applies to all assemblies in
the application package. The asterisks are not wildcards.
-->
<Assembly Name="*Application*" Dynamic="Required All" />
<!-- Add your application specific runtime directives here. -->
</Application>
</Directives>

Просмотреть файл

@ -0,0 +1,255 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProjectGuid>{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}</ProjectGuid>
<OutputType>AppContainerExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>UITests.App</RootNamespace>
<AssemblyName>UITests.App</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.19041.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WindowsXamlEnableOverview>true</WindowsXamlEnableOverview>
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
<AppxBundle>Never</AppxBundle>
<GenerateTestArtifacts>True</GenerateTestArtifacts>
<HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
<PackageCertificateKeyFile>UITests.App.pfx</PackageCertificateKeyFile>
<PackageCertificateThumbprint>24D62F3B13B8B9514EAD9C4DE48CC30F7CC6151D</PackageCertificateThumbprint>
<AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
<GenerateAppxPackageOnBuild>true</GenerateAppxPackageOnBuild>
<AppxPackageSigningEnabled>True</AppxPackageSigningEnabled>
</PropertyGroup>
<Target Name="Pack">
</Target>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\ARM\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>ARM</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
<OutputPath>bin\ARM\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>ARM</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\ARM64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>ARM64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM64'">
<OutputPath>bin\ARM64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>ARM64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
</PropertyGroup>
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<ItemGroup>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="MainPage.xaml.cs">
<DependentUpon>MainPage.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
</ItemGroup>
<ItemGroup>
<Content Include="Properties\Default.rd.xml" />
<Content Include="Assets\LockScreenLogo.scale-200.png" />
<Content Include="Assets\SplashScreen.scale-200.png" />
<Content Include="Assets\Square150x150Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="Assets\StoreLogo.png" />
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="MainPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
<Version>6.2.10</Version>
</PackageReference>
<PackageReference Include="MUXAppTestHelpers">
<Version>0.0.4</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<None Include="UITests.App.pfx" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Microsoft.Toolkit.HighPerformance\Microsoft.Toolkit.HighPerformance.csproj">
<Project>{7e30d48c-4cd8-47be-b557-10a20391dcc4}</Project>
<Name>Microsoft.Toolkit.HighPerformance</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Mvvm\Microsoft.Toolkit.Mvvm.csproj">
<Project>{d82ae6e1-e612-434e-acb2-363ee48738d3}</Project>
<Name>Microsoft.Toolkit.Mvvm</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Parsers\Microsoft.Toolkit.Parsers.csproj">
<Project>{42ca4935-54be-42ea-ac19-992378c08de6}</Project>
<Name>Microsoft.Toolkit.Parsers</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Services\Microsoft.Toolkit.Services.csproj">
<Project>{34398053-fc70-4243-84f9-f355defff66d}</Project>
<Name>Microsoft.Toolkit.Services</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.Connectivity\Microsoft.Toolkit.Uwp.Connectivity.csproj">
<Project>{b1e850ff-dde6-44d5-a830-34250e97a687}</Project>
<Name>Microsoft.Toolkit.Uwp.Connectivity</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.DeveloperTools\Microsoft.Toolkit.Uwp.DeveloperTools.csproj">
<Project>{e7697922-9555-4cfb-aee0-c5f4d657e559}</Project>
<Name>Microsoft.Toolkit.Uwp.DeveloperTools</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.UWP.Input.GazeInteraction\Microsoft.Toolkit.Uwp.Input.GazeInteraction.csproj">
<Project>{a5e98964-45b1-442d-a07a-298a3221d81e}</Project>
<Name>Microsoft.Toolkit.Uwp.Input.GazeInteraction</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.Notifications\Microsoft.Toolkit.Uwp.Notifications.csproj">
<Project>{97ee849b-403c-490e-80ed-d19d7cc153fd}</Project>
<Name>Microsoft.Toolkit.Uwp.Notifications</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.UI.Animations\Microsoft.Toolkit.Uwp.UI.Animations.csproj">
<Project>{b24a296c-b3eb-4e06-a64e-74ac2d1acc91}</Project>
<Name>Microsoft.Toolkit.Uwp.UI.Animations</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.UI.Controls.DataGrid\Microsoft.Toolkit.Uwp.UI.Controls.DataGrid.csproj">
<Project>{daeb9cec-c817-33b2-74b2-bc379380db72}</Project>
<Name>Microsoft.Toolkit.Uwp.UI.Controls.DataGrid</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.UI.Controls.Layout\Microsoft.Toolkit.Uwp.UI.Controls.Layout.csproj">
<Project>{cb444381-18ba-4a51-bb32-3a498bcc1e99}</Project>
<Name>Microsoft.Toolkit.Uwp.UI.Controls.Layout</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.UI.Controls.Markdown\Microsoft.Toolkit.Uwp.UI.Controls.Markdown.csproj">
<Project>{6fedf199-b052-49dd-8f3e-2a9224998e0f}</Project>
<Name>Microsoft.Toolkit.Uwp.UI.Controls.Markdown</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.UI.Controls\Microsoft.Toolkit.Uwp.UI.Controls.csproj">
<Project>{e9faabfb-d726-42c1-83c1-cb46a29fea81}</Project>
<Name>Microsoft.Toolkit.Uwp.UI.Controls</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.UI.Media\Microsoft.Toolkit.Uwp.UI.Media.csproj">
<Project>{75f9ee44-3efa-47bc-aedd-351b9834a0af}</Project>
<Name>Microsoft.Toolkit.Uwp.UI.Media</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.UI\Microsoft.Toolkit.Uwp.UI.csproj">
<Project>{3dd8aa7c-3569-4e51-992f-0c2257e8878e}</Project>
<Name>Microsoft.Toolkit.Uwp.UI</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp\Microsoft.Toolkit.Uwp.csproj">
<Project>{805f80df-75c6-4c2f-8fd9-b47f6d0df5a3}</Project>
<Name>Microsoft.Toolkit.Uwp</Name>
</ProjectReference>
<ProjectReference Include="..\..\Microsoft.Toolkit\Microsoft.Toolkit.csproj">
<Project>{6fe128a8-cefa-4a61-a987-ec92de6b538e}</Project>
<Name>Microsoft.Toolkit</Name>
</ProjectReference>
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Двоичные данные
UITests/UITests.App/UITests.App.pfx Normal file

Двоичный файл не отображается.

Просмотреть файл

@ -0,0 +1,156 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Logging;
namespace UITests.Tests
{
// TAEF has a different terms for the same concepts as compared with MSTest.
// In order to allow both to use the same test files, we'll define these helper classes
// to translate TAEF into MSTest.
public static class Log
{
public static void Comment(string format, params object[] args)
{
LogMessage(format, args);
}
public static void Warning(string format, params object[] args)
{
LogMessage(format, args);
}
public static void Error(string format, params object[] args)
{
LogMessage(format, args);
}
private static void LogMessage(string format, object[] args)
{
// string.Format() complains if we pass it something with braces, even if we have no arguments.
// To account for that, we'll escape braces if we have no arguments.
if (args.Length == 0)
{
format = format.Replace("{", "{{").Replace("}", "}}");
}
Logger.LogMessage(format, args);
}
}
public static class LogController
{
public static void InitializeLogging()
{
// TODO: implement
}
}
public static class Verify
{
// TODO: implement
// NOTE: At the time of this comment, MUXControlsTestApp is hitting a code path where
// running tests locally will set this flag to true. Hence an implementation of this flag
// will only log errors and not fail the tests.
public static bool DisableVerifyFailureExceptions
{
get;
set;
}
public static void AreEqual(object expected, object actual, string message = null)
{
Assert.AreEqual(expected, actual, message);
}
public static void AreEqual<T>(T expected, T actual, string message = null)
{
Assert.AreEqual(expected, actual, message);
}
public static void AreNotEqual(object notExpected, object actual, string message = null)
{
Assert.AreNotEqual(notExpected, actual, message);
}
public static void AreNotEqual<T>(T notExpected, T actual, string message = null)
{
Assert.AreNotEqual(notExpected, actual, message);
}
public static void AreSame(object expected, object actual, string message = null)
{
Assert.AreSame(expected, actual, message);
}
public static void AreNotSame(object notExpected, object actual, string message = null)
{
Assert.AreNotSame(notExpected, actual, message);
}
public static void IsLessThan(IComparable expectedLess, IComparable expectedGreater, string message = null)
{
Assert.IsTrue(expectedLess.CompareTo(expectedGreater) < 0, message);
}
public static void IsLessThanOrEqual(IComparable expectedLess, IComparable expectedGreater, string message = null)
{
Assert.IsTrue(expectedLess.CompareTo(expectedGreater) <= 0, message);
}
public static void IsGreaterThan(IComparable expectedGreater, IComparable expectedLess, string message = null)
{
Assert.IsTrue(expectedGreater.CompareTo(expectedLess) > 0, message);
}
public static void IsGreaterThanOrEqual(IComparable expectedGreater, IComparable expectedLess, string message = null)
{
Assert.IsTrue(expectedGreater.CompareTo(expectedLess) >= 0, message);
}
public static void IsNull(object value, string message = null)
{
Assert.IsNull(value, message);
}
public static void IsNotNull(object value, string message = null)
{
Assert.IsNotNull(value, message);
}
public static void IsTrue(bool condition, string message = null)
{
Assert.IsTrue(condition, message);
}
public static void IsFalse(bool condition, string message = null)
{
Assert.IsFalse(condition, message);
}
public static void Fail()
{
Assert.Fail();
}
public static void Fail(string message, params object[] args)
{
Assert.Fail(message, args);
}
public static void Throws<T>(Action action, string message)
where T : Exception
{
Assert.ThrowsException<T>(action, message);
}
public static void Throws<T>(Action action)
where T : Exception
{
Assert.ThrowsException<T>(action);
}
}
}

Просмотреть файл

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v3.1</TargetFrameworkVersion>
<RuntimeIdentifier>win10-x86</RuntimeIdentifier>
<LangVersion>8.0</LangVersion>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<PlatformTarget>x86</PlatformTarget>
<OutputType>Exe</OutputType>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="MUXTestInfra.MSTest" Version="0.0.4" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.2" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.2" />
<PackageReference Include="System.Diagnostics.Process" Version="4.3.0" />
<PackageReference Include="System.Drawing.Primitives" Version="4.3.0" />
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.5.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
<PackageReference Include="Microsoft.Windows.Apps.Test" Version="1.0.181205002" />
</ItemGroup>
<Import Project="..\UITests.Tests.Shared\UITests.Tests.Shared.projitems" />
</Project>

Просмотреть файл

@ -0,0 +1,33 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
#if USING_TAEF
using WEX.TestExecution.Markup;
#else
using Microsoft.VisualStudio.TestTools.UnitTesting;
#endif
using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Infra;
namespace UITests.Tests
{
// This is marked as a test class to make sure our AssemblyInitialize and AssemblyCleanup
// fixtures get executed. It won't actually host any tests.
[TestClass]
public class TestAssembly
{
[AssemblyInitialize]
[TestProperty("CoreClrProfile", ".")]
[TestProperty("RunFixtureAs:Assembly", "ElevatedUserOrSystem")]
public static void AssemblyInitialize(TestContext testContext)
{
TestEnvironment.AssemblyInitialize(testContext, "UITests.App.pfx");
}
[AssemblyCleanup]
public static void AssemblyCleanup()
{
TestEnvironment.AssemblyCleanup();
}
}
}

Просмотреть файл

@ -0,0 +1,117 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using Microsoft.Windows.Apps.Test.Foundation.Controls;
using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Common;
using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Infra;
#if USING_TAEF
using WEX.Logging.Interop;
using WEX.TestExecution;
using WEX.TestExecution.Markup;
#else
using Microsoft.VisualStudio.TestTools.UnitTesting;
#endif
namespace UITests.Tests
{
[TestClass]
public class Tests
{
public static TestApplicationInfo WinUICsUWPSampleApp
{
get
{
string assemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string baseDirectory = Path.Combine(Directory.GetParent(assemblyDir).Parent.Parent.Parent.Parent.FullName, "UITests.App");
Log.Comment($"Base Package Search Directory = \"{baseDirectory}\"");
var exclude = new[] { "Microsoft.NET.CoreRuntime", "Microsoft.VCLibs", "Microsoft.UI.Xaml", "Microsoft.NET.CoreFramework.Debug" };
var files = Directory.GetFiles(baseDirectory, "*.msix", SearchOption.AllDirectories).Where(f => !exclude.Any(Path.GetFileNameWithoutExtension(f).Contains));
if (files.Count() == 0)
{
throw new Exception(string.Format("Failed to find '*.msix' in {0}'!", baseDirectory));
}
string mostRecentlyBuiltPackage = string.Empty;
DateTime timeMostRecentlyBuilt = DateTime.MinValue;
foreach (string file in files)
{
DateTime fileWriteTime = File.GetLastWriteTime(file);
if (fileWriteTime > timeMostRecentlyBuilt)
{
timeMostRecentlyBuilt = fileWriteTime;
mostRecentlyBuiltPackage = file;
}
}
return new TestApplicationInfo(
"UITests.App",
"3568ebdf-5b6b-4ddd-bb17-462d614ba50f_gspb8g6x97k2t!App",
"3568ebdf-5b6b-4ddd-bb17-462d614ba50f_gspb8g6x97k2t",
"UITests.App",
"UITests.App.exe",
mostRecentlyBuiltPackage.Replace(".msix", string.Empty),
"24d62f3b13b8b9514ead9c4de48cc30f7cc6151d",
baseDirectory);
}
}
public static TestSetupHelper.TestSetupHelperOptions TestSetupHelperOptions
{
get
{
return new TestSetupHelper.TestSetupHelperOptions
{
AutomationIdOfSafeItemToClick = string.Empty
};
}
}
[ClassInitialize]
[TestProperty("RunAs", "User")]
[TestProperty("Classification", "ScenarioTestSuite")]
[TestProperty("Platform", "Any")]
public static void ClassInitialize(TestContext testContext)
{
TestEnvironment.Initialize(testContext, WinUICsUWPSampleApp);
}
[ClassCleanup]
public static void ClassCleanup()
{
TestEnvironment.AssemblyCleanupWorker(WinUICsUWPSampleApp);
}
[TestCleanup]
public void TestCleanup()
{
}
[TestMethod]
public void SimpleLaunchTest()
{
var button = new Button(FindElement.ByName("Click Me"));
var textBlock = new TextBlock(FindElement.ById("textBlock"));
Verify.IsNotNull(button);
Verify.AreEqual(string.Empty, textBlock.GetText());
button.Click();
Wait.ForIdle();
Verify.AreEqual("Clicked", textBlock.GetText());
}
}
}

Просмотреть файл

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
<HasSharedItems>true</HasSharedItems>
<SharedGUID>1d8b0260-5c17-41da-9c38-1e37441b3925</SharedGUID>
</PropertyGroup>
<PropertyGroup Label="Configuration">
<Import_RootNamespace>UITests.Tests.Shared</Import_RootNamespace>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)TestAssembly.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Tests.cs" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>1d8b0260-5c17-41da-9c38-1e37441b3925</ProjectGuid>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />
<PropertyGroup />
<Import Project="UITests.Tests.Shared.projitems" Label="Shared" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
</Project>

Просмотреть файл

@ -0,0 +1,15 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
namespace UITests.Tests.TAEF
{
public static class MainClass
{
public static void Main()
{
// Empty main just to force the compiler to copy the DotNet Runtime on the folder as the output (since OutputType = Exe).
// The .exe is unused, but we do use the dll generated by this compilation
}
}
}

Просмотреть файл

@ -0,0 +1,4 @@
Microsoft.NET.CoreFramework.Debug.2.2.appx
Microsoft.NET.CoreRuntime.2.2.appx
Microsoft.UI.Xaml.2.4.appx
Microsoft.VCLibs.x86.Debug.14.00.appx

Просмотреть файл

@ -0,0 +1,4 @@
Microsoft.NET.Native.Framework.2.2.appx
Microsoft.NET.Native.Runtime.2.2.appx
Microsoft.UI.Xaml.2.4.appx
Microsoft.VCLibs.x86.14.00.appx

Просмотреть файл

@ -0,0 +1,68 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v3.1</TargetFrameworkVersion>
<LangVersion>8.0</LangVersion>
<TaefRootDirectory>$(PkgTAEF_Redist_Wlk)\build\Binaries\x86\CoreClr\</TaefRootDirectory>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<PlatformTarget>x86</PlatformTarget>
<DefineConstants>$(DefineConstants);USING_TAEF</DefineConstants>
<OutputType>Exe</OutputType>
<RuntimeIdentifier>win10-x86</RuntimeIdentifier>
<IsPackable>false</IsPackable>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
<ItemGroup>
<Reference Include="TE.Managed">
<HintPath>$(TaefRootDirectory)TE.Managed.dll</HintPath>
<Private>true</Private>
</Reference>
<Reference Include="TE.ManagedTestMode">
<HintPath>$(TaefRootDirectory)TE.ManagedTestMode.dll</HintPath>
<Private>true</Private>
</Reference>
<Reference Include="Wex.Common.Managed">
<HintPath>$(TaefRootDirectory)Wex.Common.Managed.dll</HintPath>
<Private>true</Private>
</Reference>
<Reference Include="Wex.Logger.Interop">
<HintPath>$(TaefRootDirectory)Wex.Logger.Interop.dll</HintPath>
<Private>true</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<PackageReference Include="MUXTestInfra.TAEF" Version="0.0.4" />
<PackageReference Include="TAEF.Redist.Wlk" Version="10.31.180822002" GeneratePathProperty="true" />
<PackageReference Include="MUXCustomBuildTasks" Version="1.0.67" GeneratePathProperty="true" />
</ItemGroup>
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)\..\UITests.App\AppPackages\*\*.msix" Link="%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" />
<None Include="$(MSBuildThisFileDirectory)\..\UITests.App\AppPackages\*\Dependencies\$(PlatformTarget)\*.appx" Link="%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" />
<None Include="$(MSBuildThisFileDirectory)\..\UITests.App\*.pfx" Link="%(Filename)%(Extension)" CopyToOutputDirectory="PreserveNewest" />
<None Include="$(PkgMUXCustomBuildTasks)\tools\x86\WttLog.dll" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainClass.cs"/>
</ItemGroup>
<ItemGroup>
<None Include="UITests.App.dependencies.Debug.txt" Condition="'$(Configuration)' == 'Debug'">
<Link>UITests.App.dependencies.txt</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="UITests.App.dependencies.Release.txt" Condition="'$(Configuration)' == 'Release'">
<Link>UITests.App.dependencies.txt</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<Import Project="..\UITests.Tests.Shared\UITests.Tests.Shared.projitems" />
</Project>

Просмотреть файл

@ -41,8 +41,8 @@
<PackageReference Include="System.Xml.XPath.XmlDocument">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Xml.XPath.XmlDocument">
<Version>4.3.0</Version>
<PackageReference Include="System.Text.Json">
<Version>4.7.2</Version>
</PackageReference>
<ProjectReference Include="..\..\Microsoft.Toolkit.Mvvm\Microsoft.Toolkit.Mvvm.csproj" />
<ProjectReference Include="..\..\Microsoft.Toolkit.Parsers\Microsoft.Toolkit.Parsers.csproj" />

Просмотреть файл

@ -119,8 +119,25 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Toolkit.Uwp.UI.Co
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Toolkit.Uwp.UI.Controls.Markdown.Design", "Microsoft.Toolkit.Uwp.UI.Controls.Markdown.Design\Microsoft.Toolkit.Uwp.UI.Controls.Markdown.Design.csproj", "{67FE47A0-CA93-4680-B770-A0A48C1DBC40}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UITests.App", "UITests\UITests.App\UITests.App.csproj", "{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UITests", "UITests", "{6FAA1CFE-3368-4FD2-9DBD-F4700F69174C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UITests.Tests.MSTest", "UITests\UITests.Tests.MSTest\UITests.Tests.MSTest.csproj", "{5F720475-E263-4A5A-8C88-2B805B45B5BC}"
ProjectSection(ProjectDependencies) = postProject
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0} = {05C83067-FA46-45E2-BEC4-EDEE84AD18D0}
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UITests.Tests.TAEF", "UITests\UITests.Tests.TAEF\UITests.Tests.TAEF.csproj", "{C8182EF0-77FB-4B43-A588-C71748A309C7}"
ProjectSection(ProjectDependencies) = postProject
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0} = {05C83067-FA46-45E2-BEC4-EDEE84AD18D0}
EndProjectSection
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "UITests.Tests.Shared", "UITests\UITests.Tests.Shared\UITests.Tests.Shared.shproj", "{1D8B0260-5C17-41DA-9C38-1E37441B3925}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
UITests\UITests.Tests.Shared\UITests.Tests.Shared.projitems*{1d8b0260-5c17-41da-9c38-1e37441b3925}*SharedItemsImports = 13
UnitTests\UnitTests.Shared\UnitTests.Shared.projitems*{4e9466d1-d5aa-46ac-801b-c8fdab79f0d4}*SharedItemsImports = 13
UnitTests\UnitTests.HighPerformance.Shared\UnitTests.HighPerformance.Shared.projitems*{5524523e-db0f-41f7-a0d4-43128422a342}*SharedItemsImports = 4
UnitTests\UnitTests.Shared\UnitTests.Shared.projitems*{7878cd00-85e8-4d02-9757-8a43db4c6510}*SharedItemsImports = 5
@ -843,6 +860,70 @@ Global
{67FE47A0-CA93-4680-B770-A0A48C1DBC40}.Release|x64.Build.0 = Release|x86
{67FE47A0-CA93-4680-B770-A0A48C1DBC40}.Release|x86.ActiveCfg = Release|x86
{67FE47A0-CA93-4680-B770-A0A48C1DBC40}.Release|x86.Build.0 = Release|x86
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|Any CPU.ActiveCfg = Debug|x86
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|ARM.ActiveCfg = Debug|ARM
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|ARM.Build.0 = Debug|ARM
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|ARM.Deploy.0 = Debug|ARM
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|ARM64.ActiveCfg = Debug|ARM64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|ARM64.Build.0 = Debug|ARM64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|ARM64.Deploy.0 = Debug|ARM64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|x64.ActiveCfg = Debug|x64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|x64.Build.0 = Debug|x64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|x64.Deploy.0 = Debug|x64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|x86.ActiveCfg = Debug|x86
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|x86.Build.0 = Debug|x86
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Debug|x86.Deploy.0 = Debug|x86
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|Any CPU.ActiveCfg = Release|x86
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|ARM.ActiveCfg = Release|ARM
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|ARM.Build.0 = Release|ARM
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|ARM.Deploy.0 = Release|ARM
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|ARM64.ActiveCfg = Release|ARM64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|ARM64.Build.0 = Release|ARM64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|ARM64.Deploy.0 = Release|ARM64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|x64.ActiveCfg = Release|x64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|x64.Build.0 = Release|x64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|x64.Deploy.0 = Release|x64
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|x86.ActiveCfg = Release|x86
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|x86.Build.0 = Release|x86
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0}.Release|x86.Deploy.0 = Release|x86
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|ARM.ActiveCfg = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|ARM.Build.0 = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|ARM64.Build.0 = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|x64.ActiveCfg = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|x64.Build.0 = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|x86.ActiveCfg = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Debug|x86.Build.0 = Debug|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Release|ARM.ActiveCfg = Release|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Release|ARM.Build.0 = Release|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Release|ARM64.ActiveCfg = Release|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Release|ARM64.Build.0 = Release|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Release|x64.ActiveCfg = Release|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Release|x64.Build.0 = Release|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Release|x86.ActiveCfg = Release|Any CPU
{5F720475-E263-4A5A-8C88-2B805B45B5BC}.Release|x86.Build.0 = Release|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|ARM.ActiveCfg = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|ARM.Build.0 = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|ARM64.Build.0 = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|x64.ActiveCfg = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|x64.Build.0 = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|x86.ActiveCfg = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Debug|x86.Build.0 = Debug|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Release|ARM.ActiveCfg = Release|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Release|ARM.Build.0 = Release|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Release|ARM64.ActiveCfg = Release|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Release|ARM64.Build.0 = Release|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Release|x64.ActiveCfg = Release|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Release|x64.Build.0 = Release|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Release|x86.ActiveCfg = Release|Any CPU
{C8182EF0-77FB-4B43-A588-C71748A309C7}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -879,6 +960,11 @@ Global
{88C6FFBE-322D-4CEA-842B-B2CB281D357D} = {CFA75BE0-5A44-45DE-8114-426A605B062B}
{6FEDF199-B052-49DD-8F3E-2A9224998E0F} = {F1AFFFA7-28FE-4770-BA48-10D76F3E59BC}
{67FE47A0-CA93-4680-B770-A0A48C1DBC40} = {F1AFFFA7-28FE-4770-BA48-10D76F3E59BC}
{05C83067-FA46-45E2-BEC4-EDEE84AD18D0} = {6FAA1CFE-3368-4FD2-9DBD-F4700F69174C}
{6FAA1CFE-3368-4FD2-9DBD-F4700F69174C} = {B30036C4-D514-4E5B-A323-587A061772CE}
{5F720475-E263-4A5A-8C88-2B805B45B5BC} = {6FAA1CFE-3368-4FD2-9DBD-F4700F69174C}
{C8182EF0-77FB-4B43-A588-C71748A309C7} = {6FAA1CFE-3368-4FD2-9DBD-F4700F69174C}
{1D8B0260-5C17-41DA-9C38-1E37441B3925} = {6FAA1CFE-3368-4FD2-9DBD-F4700F69174C}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5403B0C4-F244-4F73-A35C-FE664D0F4345}

Просмотреть файл

@ -12,75 +12,97 @@ pool:
variables:
BuildConfiguration: Release
steps:
- task: BatchScript@1
inputs:
filename: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
arguments: -no_logo
modifyEnvironment: true
displayName: Setup Environment Variables
jobs:
- job: ToolkitBuild
timeoutInMinutes: 120
- task: NuGetToolInstaller@1
displayName: Use NuGet 5.6.0
inputs:
versionSpec: 5.6.0
steps:
- task: BatchScript@1
inputs:
filename: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
arguments: -no_logo
modifyEnvironment: true
displayName: Setup Environment Variables
- task: NuGetAuthenticate@0
displayName: 'NuGet Authenticate'
inputs:
forceReinstallCredentialProvider: true
- task: NuGetToolInstaller@1
displayName: Use NuGet 5.6.0
inputs:
versionSpec: 5.6.0
- task: DotNetCoreCLI@2
inputs:
command: custom
custom: tool
arguments: install --tool-path . nbgv
displayName: Install NBGV tool
- task: NuGetAuthenticate@0
displayName: 'NuGet Authenticate'
inputs:
forceReinstallCredentialProvider: true
- task: DotNetCoreCLI@2
inputs:
command: custom
custom: tool
arguments: install --tool-path . nbgv
displayName: Install NBGV tool
- script: nbgv cloud
displayName: Set Version
- script: nbgv cloud
displayName: Set Version
- powershell: |
Write-Host "##vso[task.setvariable variable=PATH;]${env:LocalAppData}\Microsoft\dotnet;${env:PATH}";
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
dotnet new globaljson --sdk-version "$($env:NET5_SDK_VERSION)"
&([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://dot.net/v1/dotnet-install.ps1'))) -Version "$($env:NET5_SDK_VERSION)" -Architecture "x64" -AzureFeed "$($env:NET5_SDK_FEED)"
failOnStderr: true
displayName: 'Install .NET 5 SDK'
#- powershell: .\build\Install-WindowsSdkISO.ps1 19041
# displayName: Insider SDK
- powershell: .\build\build.ps1 -target=Build
displayName: Build
- powershell: |
Write-Host "##vso[task.setvariable variable=PATH;]${env:LocalAppData}\Microsoft\dotnet;${env:PATH}";
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
dotnet new globaljson --sdk-version "$($env:NET5_SDK_VERSION)"
&([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://dot.net/v1/dotnet-install.ps1'))) -Version "$($env:NET5_SDK_VERSION)" -Architecture "x64" -AzureFeed "$($env:NET5_SDK_FEED)"
failOnStderr: true
displayName: 'Install .NET 5 SDK'
#- powershell: .\build\build.ps1 -target=Test
# displayName: Test
- powershell: .\build\build.ps1 -target=Build
displayName: Build
- powershell: .\build\build.ps1 -target=Package
displayName: Package
# - powershell: .\build\build.ps1 -target=Test
# displayName: Test
# timeoutInMinutes: 15
- task: PublishTestResults@2
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '**/VsTestResults*.trx'
displayName: Publish Test Results
condition: succeededOrFailed()
- powershell: .\build\build.ps1 -target=Package
displayName: Package
- task: PowerShell@2
displayName: Authenticode Sign Packages
inputs:
filePath: build/Sign-Package.ps1
env:
SignClientUser: $(SignClientUser)
SignClientSecret: $(SignClientSecret)
ArtifactDirectory: bin\nupkg
condition: and(succeeded(), not(eq(variables['build.reason'], 'PullRequest')), not(eq(variables['SignClientSecret'], '')), not(eq(variables['SignClientUser'], '')))
- task: PublishTestResults@2
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '**/VsTestResults*.trx'
displayName: Publish Test Results
condition: always()
- task: PublishBuildArtifacts@1
displayName: Publish Package Artifacts
inputs:
pathToPublish: .\bin\nupkg
artifactType: container
artifactName: Packages
- task: PublishPipelineArtifact@1
displayName: Publish UI Test Results
inputs:
targetPath: .\build\UITestResults.wtl
artifactName: WexLogFileOutput
condition: always()
- task: PublishPipelineArtifact@1
displayName: Publish Test WexLogFileOutput
inputs:
targetPath: .\build\WexLogFileOutput
artifactName: WexErrorLogFileOutput
condition: failed()
- task: PowerShell@2
displayName: Authenticode Sign Packages
inputs:
filePath: build/Sign-Package.ps1
env:
SignClientUser: $(SignClientUser)
SignClientSecret: $(SignClientSecret)
ArtifactDirectory: bin\nupkg
condition: and(succeeded(), not(eq(variables['build.reason'], 'PullRequest')), not(eq(variables['SignClientSecret'], '')), not(eq(variables['SignClientUser'], '')))
- task: PublishBuildArtifacts@1
displayName: Publish Package Artifacts
inputs:
pathToPublish: .\bin\nupkg
artifactType: container
artifactName: Packages

Просмотреть файл

@ -35,6 +35,8 @@ var toolsDir = buildDir + "/tools";
var binDir = baseDir + "/bin";
var nupkgDir = binDir + "/nupkg";
var taefBinDir = baseDir + "/UITests/UITests.Tests.TAEF/bin/Release/netcoreapp3.1/win10-x86";
var styler = toolsDir + "/XamlStyler.Console/tools/xstyler.exe";
var stylerFile = baseDir + "/settings.xamlstyler";
@ -264,33 +266,60 @@ Task("Test")
.Description("Runs all Tests")
.Does(() =>
{
var vswhere = VSWhereLatest(new VSWhereLatestSettings
{
IncludePrerelease = true
});
Information("\nRunning Unit Tests");
var vswhere = VSWhereLatest(new VSWhereLatestSettings
{
IncludePrerelease = true
});
var testSettings = new VSTestSettings
{
ToolPath = vswhere + "/Common7/IDE/CommonExtensions/Microsoft/TestWindow/vstest.console.exe",
TestAdapterPath = getMSTestAdapterPath(),
var testSettings = new VSTestSettings
{
ToolPath = vswhere + "/Common7/IDE/CommonExtensions/Microsoft/TestWindow/vstest.console.exe",
TestAdapterPath = getMSTestAdapterPath(),
ArgumentCustomization = arg => arg.Append("/logger:trx;LogFileName=VsTestResultsUwp.trx /framework:FrameworkUap10"),
};
};
VSTest(baseDir + "/**/Release/**/UnitTests.*.appxrecipe", testSettings);
VSTest(baseDir + "/**/Release/**/UnitTests.*.appxrecipe", testSettings);
}).DoesForEach(GetFiles(baseDir + "/**/UnitTests.*.NetCore.csproj"), (file) =>
{
Information("\nRunning NetCore Unit Tests");
var testSettings = new DotNetCoreTestSettings
{
Configuration = "Release",
NoBuild = true,
Logger = "trx;LogFilePrefix=VsTestResults",
Verbosity = DotNetCoreVerbosity.Normal,
ArgumentCustomization = arg => arg.Append($"-s {baseDir}/.runsettings"),
};
{
Configuration = "Release",
NoBuild = true,
Logger = "trx;LogFilePrefix=VsTestResults",
Verbosity = DotNetCoreVerbosity.Normal,
ArgumentCustomization = arg => arg.Append($"-s {baseDir}/.runsettings"),
};
DotNetCoreTest(file.FullPath, testSettings);
}).DoesForEach(GetFiles(taefBinDir + "/**/UITests.Tests.TAEF.dll"), (file) =>
{
Information("\nRunning TAEF Interaction Tests");
var result = StartProcess(System.IO.Path.GetDirectoryName(file.FullPath) + "/TE.exe", file.FullPath + " /screenCaptureOnError /enableWttLogging /logFile:UITestResults.wtl");
if (result != 0)
{
throw new InvalidOperationException("TAEF Tests failed!");
}
}).DeferOnError();
Task("MSTestUITest")
.Description("Runs UITests using MSTest")
.DoesForEach(GetFiles(baseDir + "/**/UITests.*.MSTest.csproj"), (file) =>
{
Information("\nRunning UI Interaction Tests");
var testSettings = new DotNetCoreTestSettings
{
Configuration = "Release",
NoBuild = true,
Logger = "trx;LogFilePrefix=VsTestResults",
Verbosity = DotNetCoreVerbosity.Normal
};
DotNetCoreTest(file.FullPath, testSettings);
});
//////////////////////////////////////////////////////////////////////
// TASK TARGETS

Просмотреть файл

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="MyGetWCT" value="https://dotnet.myget.org/F/uwpcommunitytoolkit/api/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="MyGet" value="https://dotnet.myget.org/F/uwpcommunitytoolkit/api/v3/index.json" protocolVersion="3" />
<add key="MUX-Shared" value="https://pkgs.dev.azure.com/ms/microsoft-ui-xaml/_packaging/MUX-Shared/nuget/v3/index.json" />
</packageSources>
</configuration>