From 6d969bc9df1bda834a623162649fa8403bd55e9a Mon Sep 17 00:00:00 2001 From: v-arlysenko Date: Thu, 14 May 2026 16:50:47 +0200 Subject: [PATCH 01/16] Fix flaky InstallerFunctionalTests::RunInstallerAndVerifyPackages: retry package removal (#6474) * Fix flaky InstallerFunctionalTests: retry package removal and block on setup failure - Add retry logic (3 attempts, 1s delay) to RemovePackage() for transient 'package in use' errors - Add VerifyAllPackagesRemoved() to detect when removal silently fails - MethodInit now blocks the test with a clear setup error message instead of letting it proceed and fail misleadingly - MethodUninit logs a warning on incomplete cleanup Fixes AB#61461238 * Address review: increase retry to 5 attempts x 5s (25s total) --- .../FunctionalTests.cpp | 11 ++++ .../test/InstallerFunctionalTests/constants.h | 2 + .../test/InstallerFunctionalTests/helpers.cpp | 50 +++++++++++++++++-- .../test/InstallerFunctionalTests/helpers.h | 1 + 4 files changed, 60 insertions(+), 4 deletions(-) diff --git a/installer/test/InstallerFunctionalTests/FunctionalTests.cpp b/installer/test/InstallerFunctionalTests/FunctionalTests.cpp index fb3116456c..d12e5d5b27 100644 --- a/installer/test/InstallerFunctionalTests/FunctionalTests.cpp +++ b/installer/test/InstallerFunctionalTests/FunctionalTests.cpp @@ -41,12 +41,23 @@ namespace WindowsAppRuntimeInstallerTests TEST_METHOD_SETUP(MethodInit) { RemoveAllPackages(); + if (!VerifyAllPackagesRemoved()) + { + Log::Error(L"TEST SETUP BLOCKED: Failed to remove pre-existing packages. " + L"This is a setup environment error, not a test failure. " + L"Packages may be in use by another process."); + return false; + } return true; } TEST_METHOD_CLEANUP(MethodUninit) { RemoveAllPackages(); + if (!VerifyAllPackagesRemoved()) + { + Log::Warning(L"Cleanup: some packages could not be removed. They may be in use."); + } return true; } diff --git a/installer/test/InstallerFunctionalTests/constants.h b/installer/test/InstallerFunctionalTests/constants.h index 58596a3bfe..bb3c1c92da 100644 --- a/installer/test/InstallerFunctionalTests/constants.h +++ b/installer/test/InstallerFunctionalTests/constants.h @@ -26,6 +26,8 @@ namespace WindowsAppRuntimeInstallerTests { static const int c_phaseTimeout{ (30 * 1000) }; // 30 seconds + static const int c_packageRemovalRetryCount{ 5 }; + static const int c_packageRemovalRetryDelayMs{ 5000 }; // 5 seconds (total: up to 25s) static const std::wstring c_x86FrameworkName{ L"WindowsAppRuntime.Test.InstallerFramework_1.0.0.0_x86__8wekyb3d8bbwe" }; static const std::wstring c_x64FrameworkName{ L"WindowsAppRuntime.Test.InstallerFramework_1.0.0.0_x64__8wekyb3d8bbwe" }; diff --git a/installer/test/InstallerFunctionalTests/helpers.cpp b/installer/test/InstallerFunctionalTests/helpers.cpp index 773759d367..88d44d4c26 100644 --- a/installer/test/InstallerFunctionalTests/helpers.cpp +++ b/installer/test/InstallerFunctionalTests/helpers.cpp @@ -58,11 +58,39 @@ namespace WindowsAppRuntimeInstallerTests { Log::Comment(WEX::Common::String().Format(L"Removing package: %ws", packageName.c_str())); PackageManager manager; - auto result{ manager.RemovePackageAsync(packageName).get() }; - Log::Comment(WEX::Common::String().Format(L"Removal result: 0x%0X", result.ExtendedErrorCode().value)); - if (!ignoreFailures) + + for (int attempt = 1; attempt <= c_packageRemovalRetryCount; ++attempt) { - winrt::check_hresult(result.ExtendedErrorCode()); + auto result{ manager.RemovePackageAsync(packageName).get() }; + const auto hr{ result.ExtendedErrorCode().value }; + Log::Comment(WEX::Common::String().Format(L"Removal result: 0x%0X (attempt %d/%d)", hr, attempt, c_packageRemovalRetryCount)); + + if (SUCCEEDED(hr)) + { + return; + } + + // If the package is not found, treat as success — nothing to remove. + if (hr == HRESULT_FROM_WIN32(ERROR_NOT_FOUND)) + { + Log::Comment(WEX::Common::String().Format(L"Package not found (already removed): %ws", packageName.c_str())); + return; + } + + // Retry on transient errors (package in use, etc.) unless this is the last attempt. + if (attempt < c_packageRemovalRetryCount) + { + Log::Warning(WEX::Common::String().Format(L"Retrying removal of package %ws after %dms (error: 0x%0X)", packageName.c_str(), c_packageRemovalRetryDelayMs, hr)); + Sleep(c_packageRemovalRetryDelayMs); + } + else if (!ignoreFailures) + { + winrt::check_hresult(result.ExtendedErrorCode()); + } + else + { + Log::Warning(WEX::Common::String().Format(L"Failed to remove package %ws after %d attempts (error: 0x%0X)", packageName.c_str(), c_packageRemovalRetryCount, hr)); + } } } @@ -90,6 +118,20 @@ namespace WindowsAppRuntimeInstallerTests } } + bool VerifyAllPackagesRemoved() + { + bool allRemoved{ true }; + for (const auto& packageName : c_packages) + { + if (IsPackageRegistered(packageName)) + { + Log::Warning(WEX::Common::String().Format(L"Setup error: package still registered after removal: %ws", packageName.c_str())); + allRemoved = false; + } + } + return allRemoved; + } + bool IsPackageRegistered(const std::wstring& packageFullName) { PackageManager manager; diff --git a/installer/test/InstallerFunctionalTests/helpers.h b/installer/test/InstallerFunctionalTests/helpers.h index 4efd181767..40c22d21e5 100644 --- a/installer/test/InstallerFunctionalTests/helpers.h +++ b/installer/test/InstallerFunctionalTests/helpers.h @@ -11,6 +11,7 @@ namespace WindowsAppRuntimeInstallerTests void RemovePackage(const std::wstring& packageFullName, bool ignoreFailures=true); void TryRemoveProvisionedPackage(const std::wstring& packageFamilyName); void RemoveAllPackages(bool ignoreFailures=true); + bool VerifyAllPackagesRemoved(); bool IsPackageRegistered(const std::wstring& packageFullName); winrt::Windows::System::ProcessorArchitecture GetSystemArchitecture(); std::filesystem::path GetModulePath(HMODULE hmodule = nullptr); From 10f7322df705aeb26af4b6072d08041096f6c7ed Mon Sep 17 00:00:00 2001 From: Dreynor87 Date: Thu, 14 May 2026 14:03:29 -0600 Subject: [PATCH 02/16] Automate Patch and Revision versions using Azure DevOps Variable Library (#6462) * Automate Patch and Revision versions using Azure DevOps Variable Library Add version automation to the Open (Foundation) repo, mirroring the pattern from the Aggregator repo. Uses a separate '{MajorVersion}-Foundation-Versions' Library to track PatchVersion and Revision across builds. - Add WindowsAppSDK-VersionVariables.yml to load version vars from Library - Add WindowsAppSDK-UpdateLibrary-Job.yml to bump versions after official builds - Update Official/PR/Nightly pipelines to include version templates - Update PackTransportPackage to use Library-based versioning for official builds - Patch only bumps on official builds (not PR or Nightly) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove the system.debug, since parameters.debug is empty * Change name of pipeline run * Respond to Agne 1 * Revert the change to depending on Publish --------- Co-authored-by: Chris Wall (WIN SDE) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ...ndowsAppSDK-PackTransportPackage-Stage.yml | 84 ++++++---- .../WindowsAppSDK-UpdateLibrary-Job.yml | 157 ++++++++++++++++++ .../WindowsAppSDK-VersionVariables.yml | 52 ++++++ build/WindowsAppSDK-CommonVariables.yml | 13 +- build/WindowsAppSDK-Foundation-DevTest.yml | 9 +- build/WindowsAppSDK-Foundation-Nightly.yml | 9 +- build/WindowsAppSDK-Foundation-Official.yml | 25 ++- build/WindowsAppSDK-Foundation-PR.yml | 9 +- 8 files changed, 319 insertions(+), 39 deletions(-) create mode 100644 build/AzurePipelinesTemplates/WindowsAppSDK-UpdateLibrary-Job.yml create mode 100644 build/AzurePipelinesTemplates/WindowsAppSDK-VersionVariables.yml diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-PackTransportPackage-Stage.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-PackTransportPackage-Stage.yml index 656543b4ea..61fdb5077c 100644 --- a/build/AzurePipelinesTemplates/WindowsAppSDK-PackTransportPackage-Stage.yml +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-PackTransportPackage-Stage.yml @@ -11,6 +11,18 @@ parameters: - name: "BuildMockWindowsAppSDK" type: boolean default: true +- name: PrOrNightly + displayName: "PR or Nightly" + type: string + default: '' +- name: BuildType + displayName: "Build Type" + type: string + default: 'experimental' +- name: RunUpdateLibraryJob + displayName: "Run the Update Library Variable Group Job" + type: boolean + default: false stages: - stage: Pack @@ -155,37 +167,10 @@ stages: inputs: targetType: 'inline' script: | - $paddedRevision = '$(versionCounter)' - if([int]$(versionCounter) -lt 10) - { - $paddedRevision = '00' + '$(versionCounter)' - } - elseif ([int]$(versionCounter) -lt 100) - { - $paddedRevision = '0' + '$(versionCounter)' - } - Write-Host "paddedRevision " $paddedRevision - - if ([int]$(versionCounter) -gt 999) - { - Write-Host "Revision Number limit reach. Please try again the next day" - Write-Host "##vso[task.complete result=Failed;]DONE" - } - $buildType = '$(channel)' - $majorMinorPatchRev = '$(MajorVersion).$(MinorVersion).$(versionMinDate)' - $majorMinorPatchRev = $majorMinorPatchRev + $paddedRevision - - if ($env:ComponentType) - { - Write-Host "componentType " $env:ComponentType - $majorMinorPatchRev = $majorMinorPatchRev + $env:ComponentType - } - - $version = $majorMinorPatchRev + '-' + $buildType - # If using release versioning, drop the version suffix, which includes a tag & build stamp. - # This should only be done when prepping final release packages. + # All builds (PR, Nightly, Official) use Library-based versioning + $majorMinorPatch = '$(MajorVersion).$(FoundationMinorVersionResolved).$(FoundationPatchVersionResolved)' if ('${{ parameters.IsOfficial }}' -eq 'true') { @@ -209,8 +194,37 @@ stages: { $formattedTag = '-' + $versionTag } + + # For stable official builds with no tag: Major.Minor.Patch + # For non-stable official builds: Major.Minor.Patch-tag{Revision} + $revision = '$(Revision)' + if ($buildType -eq "stable" -and [String]::IsNullOrEmpty($formattedTag)) + { + $version = $majorMinorPatch + } + elseif (-not [String]::IsNullOrEmpty($revision)) + { + $version = $majorMinorPatch + $formattedTag + $revision + } + else + { + $version = $majorMinorPatch + $formattedTag + } + Write-Host "Using Release Versioning" - $version = $majorMinorPatchRev + $formattedTag + } + else + { + # PR/Nightly: Major.Minor.Patch-{NugetBuildTypePrefix}{buildType}{Revision} + # Uses Library version but does NOT update it. Distinguished by prefix + revision. + $versionTag = '$(NugetBuildTypePrefix)' + $buildType + $version = $majorMinorPatch + '-' + $versionTag + '$(Revision)' + } + + if ($env:ComponentType) + { + Write-Host "componentType " $env:ComponentType + $version = $version + $env:ComponentType } Write-Host 'Component Package Version: ' $version @@ -262,3 +276,13 @@ stages: nuGetFeedType: 'internal' #Note: The project qualifier is always required when using a feed name. Also, do not use organization scoped feeds. publishVstsFeed: 'ProjectReunion/Project.Reunion.nuget.internal' + +- stage: UpdateFoundationLibrary + dependsOn: Pack + condition: and(succeeded('Pack'), eq(${{ parameters.RunUpdateLibraryJob }}, true)) + jobs: + - template: WindowsAppSDK-UpdateLibrary-Job.yml + parameters: + jobName: 'UpdateFoundationLibraryJob' + BuildType: ${{ parameters.BuildType }} + PrOrNightly: ${{ parameters.PrOrNightly }} diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-UpdateLibrary-Job.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-UpdateLibrary-Job.yml new file mode 100644 index 0000000000..b1c637304a --- /dev/null +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-UpdateLibrary-Job.yml @@ -0,0 +1,157 @@ +# This template updates the Azure DevOps Variable Group (Library) for the Open (Foundation) repo +# after a successful official build. It bumps PatchVersion and Revision variables. +# This job should only run on official builds (not PR or Nightly). + +parameters: +- name: jobName + displayName: "Job Name" + type: string + default: 'UpdateFoundationLibraryJob' +- name: BuildType + displayName: "Build Type" + type: string + default: 'stable' +- name: PrOrNightly + displayName: "PR or Nightly" + type: string + default: '' + +jobs: +- job: ${{ parameters.jobName }} + variables: + ob_outputDirectory: '$(REPOROOT)\out' + ob_artifactBaseName: '${{parameters.jobName}}' + pool: + type: windows + displayName: "Update Foundation Variable Group" + steps: + - script: | + echo MajorVersion : $(MajorVersion) + echo MinorVersion : $(MinorVersion) + echo Revision : $(Revision) + echo FoundationMinorVersionResolved : $(FoundationMinorVersionResolved) + echo FoundationPatchVersionResolved : $(FoundationPatchVersionResolved) + echo FoundationLibraryName : $(FoundationLibraryName) + echo NugetBuildTypePrefix : $(NugetBuildTypePrefix) + displayName: 'Variables' + + # Create the next Variable Group if it does not already exist so that when we change the Major version, + # the next build will already have the variable group available. + - task: PowerShell@2 + displayName: Create Next Variable Group if Necessary + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + inputs: + targetType: 'inline' + script: | + $NextMajorVersion = [int]$(MajorVersion) + 1 + $NextLibraryName = "$NextMajorVersion-Foundation-Versions" + + echo "Next Major Version will be $NextMajorVersion, so next Variable Group will be $NextLibraryName" + echo "Checking to see if the next Variable Group exists" + $groupExists = az pipelines variable-group list --query "[?name=='$NextLibraryName']" | ConvertFrom-Json + if ($groupExists.Count -eq 0) + { + echo "Creating Variable Group $NextLibraryName" + az pipelines variable-group create --name "$NextLibraryName" --description "Variable group for Windows App SDK Foundation Major Version $NextMajorVersion" --authorize --variables FoundationMinorVersion=0 FoundationPatchVersion=0 FoundationPreviewRevision=0 FoundationExperimentalRevision=0 + } + else + { + echo "Variable Group $NextLibraryName already exists" + } + + - task: PowerShell@2 + condition: and(ne(variables.FoundationMinorVersionResolved, variables.MinorVersion), eq('${{ parameters.PrOrNightly }}', '')) + displayName: Update FoundationMinorVersion in Variable Group + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + inputs: + targetType: 'inline' + script: | + echo "Updating Foundation Minor Version variable in Variable Group" + $group_id = $(az pipelines variable-group list -p $(System.TeamProject) --group-name $(FoundationLibraryName) --query '[0].id' -o json) + az pipelines variable-group variable update --group-id $group_id --name FoundationMinorVersion --value $(MinorVersion) + + - task: PowerShell@2 + condition: eq('${{ parameters.PrOrNightly }}', '') + displayName: Update PreviewRevision in Variable Group + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + inputs: + targetType: 'inline' + script: | + echo "Determining if we need to update FoundationPreviewRevision variable in Variable Group" + $NextPreviewRevision = [int]$(FoundationPreviewRevisionResolved) + if ("${{ parameters.BuildType }}" -eq 'preview') + { + $NextPreviewRevision = $NextPreviewRevision + 1 + } + + if ($NextPreviewRevision -ne '$(FoundationPreviewRevision)') + { + echo "Updating FoundationPreviewRevision variable in Variable Group to $NextPreviewRevision" + $group_id = $(az pipelines variable-group list -p $(System.TeamProject) --group-name $(FoundationLibraryName) --query '[0].id' -o json) + az pipelines variable-group variable update --group-id $group_id --name FoundationPreviewRevision --value $NextPreviewRevision + } + else + { + echo "No update needed for FoundationPreviewRevision variable in Variable Group" + } + + - task: PowerShell@2 + condition: eq('${{ parameters.PrOrNightly }}', '') + displayName: Update ExperimentalRevision in Variable Group + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + inputs: + targetType: 'inline' + script: | + echo "Determining if we need to update FoundationExperimentalRevision variable in Variable Group" + $NextExperimentalRevision = [int]$(FoundationExperimentalRevisionResolved) + if ("${{ parameters.BuildType }}" -eq "experimental") + { + $NextExperimentalRevision = $NextExperimentalRevision + 1 + } + + if ($NextExperimentalRevision -ne '$(FoundationExperimentalRevision)') + { + echo "Updating FoundationExperimentalRevision variable in Variable Group to $NextExperimentalRevision" + $group_id = $(az pipelines variable-group list -p $(System.TeamProject) --group-name $(FoundationLibraryName) --query '[0].id' -o json) + az pipelines variable-group variable update --group-id $group_id --name FoundationExperimentalRevision --value $NextExperimentalRevision + } + else + { + echo "No update needed for FoundationExperimentalRevision variable in Variable Group" + } + + - task: PowerShell@2 + condition: eq('${{ parameters.PrOrNightly }}', '') + displayName: Update FoundationPatchVersion in Variable Group + env: + AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) + inputs: + targetType: 'inline' + script: | + echo "Determining if we need to update FoundationPatchVersion variable in Variable Group" + $NextPatchVersion = "$(FoundationPatchVersionResolved)" + + # Bump patch on stable official builds (when NugetBuildTypePrefix is empty, meaning not PR/Nightly) + if (("${{ parameters.BuildType }}" -eq "stable") -And ('$(NugetBuildTypePrefix)' -eq '')) + { + $NextPatchVersion = [int]$NextPatchVersion + 1 + } + elseif ((($(FoundationMinorVersionResolved) -ne 0) -Or ($(FoundationPatchVersionResolved) -ne 0)) -And ('$(NugetBuildTypePrefix)' -eq '')) + { + $NextPatchVersion = [int]$NextPatchVersion + 1 + } + + if ($NextPatchVersion -ne '$(FoundationPatchVersion)') + { + echo "Updating FoundationPatchVersion variable in Variable Group to $NextPatchVersion" + $group_id = $(az pipelines variable-group list -p $(System.TeamProject) --group-name $(FoundationLibraryName) --query '[0].id' -o json) + az pipelines variable-group variable update --group-id $group_id --name FoundationPatchVersion --value $NextPatchVersion + } + else + { + echo "No update needed for FoundationPatchVersion variable in Variable Group" + } diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-VersionVariables.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-VersionVariables.yml new file mode 100644 index 0000000000..2f911a5a60 --- /dev/null +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-VersionVariables.yml @@ -0,0 +1,52 @@ +# This template loads version variables from a per-major-version Azure DevOps Library +# for the Open (Foundation) repo. It mirrors the pattern from the Aggregator repo's +# WindowsAppSDK-VersionVariables.yml but uses a separate "Foundation-Versions" library. +# +# Variables loaded from the library: +# - FoundationMinorVersion: The minor version for Foundation, tracked independently +# - FoundationPatchVersion: The patch version, incremented on each official build +# - FoundationPreviewRevision: The revision for preview official builds +# - FoundationExperimentalRevision: The revision for experimental official builds +# +# All builds (PR, Nightly, Official) use the Library-based version. Only official builds +# update the Library values. PR/Nightly are distinguished by NugetBuildTypePrefix + Revision. + +parameters: +- name: PrOrNightly + displayName: "PR or Nightly Identifier" + type: string + default: '' +- name: BuildType + displayName: "Build Type" + type: string + default: 'experimental' + +variables: + - template: AzurePipelinesTemplates\WindowsAppSDK-Versions.yml@WindowsAppSDKVersionConfig + - name: FoundationLibraryName + value: ${{ format('{0}-Foundation-Versions', variables.MajorVersion)}} + - group: ${{ variables.FoundationLibraryName }} + - name: FoundationMinorVersionResolved + value: $[coalesce(variables['FoundationMinorVersion'], 0)] + - name: FoundationPatchVersionResolved + value: $[coalesce(variables['FoundationPatchVersion'], 0)] + - name: PRNightlyRevision + value: $[counter(format('{0}-{1}-{2}-{3}', variables.MajorVersion, variables.FoundationMinorVersionResolved, variables.FoundationPatchVersionResolved, variables.NugetBuildTypePrefix), 1)] + - name: FoundationPreviewRevisionResolved + value: $[coalesce(variables['FoundationPreviewRevision'], 0)] + - name: FoundationExperimentalRevisionResolved + value: $[coalesce(variables['FoundationExperimentalRevision'], 0)] + - ${{ if ne(parameters.PrOrNightly, '') }}: + - name: Revision + value: $[variables['PRNightlyRevision']] + - ${{ else }}: + - ${{ if eq(parameters.BuildType, 'experimental') }}: + - name: Revision + value: $[variables['FoundationExperimentalRevisionResolved']] + - ${{ else }}: + - ${{ if eq(parameters.BuildType, 'preview') }}: + - name: Revision + value: $[variables['FoundationPreviewRevisionResolved']] + - ${{ else }}: + - name: Revision + value: "" diff --git a/build/WindowsAppSDK-CommonVariables.yml b/build/WindowsAppSDK-CommonVariables.yml index a21823776d..74a9c9cdd7 100644 --- a/build/WindowsAppSDK-CommonVariables.yml +++ b/build/WindowsAppSDK-CommonVariables.yml @@ -1,3 +1,9 @@ +parameters: +- name: PrOrNightly + displayName: "PR or Nightly Identifier" + type: string + default: '' + variables: _useBuildOutputFromPipeline: $[coalesce(variables.useBuildOutputFromPipeline, variables['System.DefinitionId'] )] _useBuildOutputFromBuildId: $[coalesce(variables.useBuildOutputFromBuildId, variables['Build.BuildId'] )] @@ -9,10 +15,15 @@ variables: versionCounter: $[counter(variables['versionDate'], 0)] version: $[format('{0}.{1}.{2}-{3}.{4}', variables['MajorVersion'], variables['MinorVersion'], variables['PatchVersion'], variables['versionDate'], variables['versionCounter'])] SamplesBranch: "release/experimental" # Used in the Samples Build Compat Test + + # Extra nuget version variables for version automation + ${{ if ne(parameters.PrOrNightly, '') }}: + NugetBuildTypePrefix: ${{ format('{0}.', parameters.PrOrNightly) }} + ${{ else }}: + NugetBuildTypePrefix: '' #OneBranch Variables CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning - system.debug: ${{ parameters.debug }} ENABLE_PRS_DELAYSIGN: 1 ROOT: $(Build.SourcesDirectory) REPOROOT: $(Build.SourcesDirectory) diff --git a/build/WindowsAppSDK-Foundation-DevTest.yml b/build/WindowsAppSDK-Foundation-DevTest.yml index afcd8fdef1..7c47ba6908 100644 --- a/build/WindowsAppSDK-Foundation-DevTest.yml +++ b/build/WindowsAppSDK-Foundation-DevTest.yml @@ -14,8 +14,6 @@ # # ##################################################################################################################################### -name: $(version) - # https://aka.ms/obpipelines/triggers trigger: none @@ -51,11 +49,18 @@ variables: - template: WindowsAppSDK-Foundation-TestConfig.yml@WindowsAppSDKConfig - template: AzurePipelinesTemplates\WindowsAppSDK-Versions.yml@WindowsAppSDKVersionConfig - template: WindowsAppSDK-CommonVariables.yml + parameters: + PrOrNightly: 'devtest' +- template: AzurePipelinesTemplates\WindowsAppSDK-VersionVariables.yml + parameters: + PrOrNightly: 'devtest' - name: maxParallelForBuildSamplesCompatJob_x64 value: 20 - name: maxParallelForBuildSamplesCompatJob_arm64 value: 20 +name: $(MajorVersion).$(FoundationMinorVersionResolved).$(FoundationPatchVersionResolved)-$(NugetBuildTypePrefix)$(channel)$(Revision) + resources: repositories: - repository: templates diff --git a/build/WindowsAppSDK-Foundation-Nightly.yml b/build/WindowsAppSDK-Foundation-Nightly.yml index 6c270d5bf3..c6a629a3f0 100644 --- a/build/WindowsAppSDK-Foundation-Nightly.yml +++ b/build/WindowsAppSDK-Foundation-Nightly.yml @@ -14,8 +14,6 @@ # # ##################################################################################################################################### -name: $(version) - # https://aka.ms/obpipelines/triggers trigger: none @@ -58,11 +56,18 @@ variables: - template: WindowsAppSDK-Foundation-TestConfig.yml@WindowsAppSDKConfig - template: AzurePipelinesTemplates\WindowsAppSDK-Versions.yml@WindowsAppSDKVersionConfig - template: WindowsAppSDK-CommonVariables.yml + parameters: + PrOrNightly: 'dev' +- template: AzurePipelinesTemplates\WindowsAppSDK-VersionVariables.yml + parameters: + PrOrNightly: 'dev' - name: maxParallelForBuildSamplesCompatJob_x64 value: 20 - name: maxParallelForBuildSamplesCompatJob_arm64 value: 20 +name: $(MajorVersion).$(FoundationMinorVersionResolved).$(FoundationPatchVersionResolved)-$(NugetBuildTypePrefix)$(channel)$(Revision) + resources: repositories: - repository: templates diff --git a/build/WindowsAppSDK-Foundation-Official.yml b/build/WindowsAppSDK-Foundation-Official.yml index 89378589fd..96873dc6a5 100644 --- a/build/WindowsAppSDK-Foundation-Official.yml +++ b/build/WindowsAppSDK-Foundation-Official.yml @@ -14,8 +14,6 @@ # # ##################################################################################################################################### -name: $(version) - # https://aka.ms/obpipelines/triggers trigger: none @@ -57,16 +55,36 @@ parameters: displayName: "Run WindowsAppSDK-CheckApiChanges stage" type: boolean default: true +- name: BuildType + displayName: "Build Type" + type: string + default: 'experimental' + values: + - 'stable' + - 'experimental' + - 'preview' +- name: RunUpdateLibraryJob + displayName: "Run the Update Library Variable Group Job" + type: boolean + default: true variables: - template: WindowsAppSDK-Foundation-TestConfig.yml@WindowsAppSDKConfig - template: AzurePipelinesTemplates\WindowsAppSDK-Versions.yml@WindowsAppSDKVersionConfig - template: WindowsAppSDK-CommonVariables.yml + parameters: + PrOrNightly: '' +- template: AzurePipelinesTemplates\WindowsAppSDK-VersionVariables.yml + parameters: + PrOrNightly: '' + BuildType: ${{ parameters.BuildType }} - name: maxParallelForBuildSamplesCompatJob_x64 value: 20 - name: maxParallelForBuildSamplesCompatJob_arm64 value: 20 +name: $(MajorVersion).$(FoundationMinorVersionResolved).$(FoundationPatchVersionResolved)-$(NugetBuildTypePrefix)$(channel)$(Revision) + resources: repositories: - repository: templates @@ -177,6 +195,9 @@ extends: SignOutput: ${{ parameters.SignOutput }} PublishPackage: true IsOfficial: true + PrOrNightly: '' + BuildType: ${{ parameters.BuildType }} + RunUpdateLibraryJob: ${{ parameters.RunUpdateLibraryJob }} - ${{ if eq( parameters.CheckApiChanges, true ) }}: - template: AzurePipelinesTemplates\WindowsAppSDK-CheckApiChanges-Stage.yml@self diff --git a/build/WindowsAppSDK-Foundation-PR.yml b/build/WindowsAppSDK-Foundation-PR.yml index d1df925dbd..0b4e815c5d 100644 --- a/build/WindowsAppSDK-Foundation-PR.yml +++ b/build/WindowsAppSDK-Foundation-PR.yml @@ -14,8 +14,6 @@ # # ##################################################################################################################################### -name: $(version) - # https://aka.ms/obpipelines/triggers trigger: none @@ -41,11 +39,18 @@ variables: - template: WindowsAppSDK-Foundation-TestConfig.yml@WindowsAppSDKConfig - template: AzurePipelinesTemplates\WindowsAppSDK-Versions.yml@WindowsAppSDKVersionConfig - template: WindowsAppSDK-CommonVariables.yml + parameters: + PrOrNightly: 'ci' +- template: AzurePipelinesTemplates\WindowsAppSDK-VersionVariables.yml + parameters: + PrOrNightly: 'ci' - name: maxParallelForBuildSamplesCompatJob_x64 value: 20 - name: maxParallelForBuildSamplesCompatJob_arm64 value: 20 +name: $(MajorVersion).$(FoundationMinorVersionResolved).$(FoundationPatchVersionResolved)-$(NugetBuildTypePrefix)$(channel)$(Revision) + resources: repositories: - repository: templates From 9b5d40a61bf6a8333e993c103a7833da5b302649 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Mon, 18 May 2026 13:38:16 +0800 Subject: [PATCH 03/16] WinUI templates for dotnet new and VSIX (#6407) This PR adds/updates the WinUI App templates: 1. Add WinUI templates for `dotnet new` 2. Add 3 new templates for Visual Studio: - WinUI Navigation App - WinUI TabView App - WinUI MVVM App 3. Add guidelines and scripts for local build --- .gitignore | 2 + BuildAll.ps1 | 48 +- .../WindowsAppSDK-BuildVSIX-Steps.yml | 22 +- ...ppSDK-DotnetNewTemplates-Publish-Stage.yml | 53 ++ ...indowsAppSDK-DotnetNewTemplates-Stages.yml | 113 ++++ ...wsAppSDK-DotnetNewTemplates-Test-Stage.yml | 74 +++ ...ndowsAppSDK-DotnetNewTemplates-Publish.yml | 100 ++++ build/WindowsAppSDK-DotnetNewTemplates.yml | 124 +++++ build/WindowsAppSDK-TDBuild.yml | 4 +- dev/Templates/Directory.Build.props | 37 ++ dev/Templates/Dotnet/Directory.Build.props | 5 + dev/Templates/Dotnet/README.md | 160 ++++++ .../Dotnet/Test-DotnetNewTemplates.ps1 | 488 +++++++++++++++++ ...WinAppSdk.CSharp.DotnetNewTemplates.csproj | 175 ++++++ .../.template.config/dotnetcli.host.json | 25 + .../blank-app/.template.config/icon.png | Bin 0 -> 13663 bytes .../blank-app/.template.config/ide.host.json | 47 ++ .../blank-app/.template.config/template.json | 235 ++++++++ .../.template.config/dotnetcli.host.json | 10 + .../class-library/.template.config/icon.png | Bin 0 -> 14751 bytes .../.template.config/ide.host.json | 19 + .../.template.config/template.json | 106 ++++ dev/Templates/Dotnet/templates/gitignore.txt | 54 ++ .../.template.config/dotnetcli.host.json | 9 + .../.template.config/template.json | 62 +++ .../.template.config/dotnetcli.host.json | 10 + .../.template.config/template.json | 80 +++ .../.template.config/dotnetcli.host.json | 9 + .../.template.config/template.json | 86 +++ .../.template.config/dotnetcli.host.json | 9 + .../.template.config/template.json | 69 +++ .../.template.config/dotnetcli.host.json | 3 + .../item-resw/.template.config/template.json | 63 +++ .../.template.config/dotnetcli.host.json | 9 + .../.template.config/template.json | 78 +++ .../.template.config/dotnetcli.host.json | 9 + .../.template.config/template.json | 70 +++ .../.template.config/dotnetcli.host.json | 25 + .../mvvm-app/.template.config/icon.png | Bin 0 -> 10775 bytes .../mvvm-app/.template.config/ide.host.json | 47 ++ .../mvvm-app/.template.config/template.json | 245 +++++++++ .../.template.config/dotnetcli.host.json | 21 + .../navigation-app/.template.config/icon.png | Bin 0 -> 14405 bytes .../.template.config/ide.host.json | 47 ++ .../.template.config/template.json | 223 ++++++++ .../.template.config/dotnetcli.host.json | 25 + .../tabview-app/.template.config/icon.png | Bin 0 -> 7116 bytes .../.template.config/ide.host.json | 47 ++ .../.template.config/template.json | 235 ++++++++ .../.template.config/dotnetcli.host.json | 25 + .../unit-test/.template.config/icon.png | Bin 0 -> 13774 bytes .../unit-test/.template.config/ide.host.json | 47 ++ .../unit-test/.template.config/template.json | 289 ++++++++++ dev/Templates/Source/Directory.Build.props | 9 + .../CSharp/BlankWindow/BlankWindow.xaml | 0 .../CSharp/BlankWindow/BlankWindow.xaml.cs | 3 +- .../WinUI.Desktop.Cs.BlankWindow.csproj | 0 .../WinUI.Desktop.Cs.BlankWindow.ico | Bin .../WinUI.Desktop.Cs.BlankWindow.vstemplate | 0 .../CppWinRT/BlankWindow/BlankWindow.cpp | 0 .../CppWinRT/BlankWindow/BlankWindow.h | 0 .../CppWinRT/BlankWindow/BlankWindow.idl | 0 .../CppWinRT/BlankWindow/BlankWindow.xaml | 0 .../WinUI.Desktop.CppWinRT.BlankWindow.csproj | 0 .../WinUI.Desktop.CppWinRT.BlankWindow.ico | Bin ...UI.Desktop.CppWinRT.BlankWindow.vstemplate | 0 .../Neutral/CSharp/BlankPage/BlankPage.xaml | 0 .../CSharp/BlankPage/BlankPage.xaml.cs | 0 .../WinUI.Neutral.Cs.BlankPage.csproj | 0 .../BlankPage/WinUI.Neutral.Cs.BlankPage.ico | Bin .../WinUI.Neutral.Cs.BlankPage.vstemplate | 0 .../CSharp/ContentDialog/ContentDialog.xaml | 19 + .../ContentDialog/ContentDialog.xaml.cs | 24 + .../WinUI.Neutral.Cs.ContentDialog.csproj | 71 +++ .../WinUI.Neutral.Cs.ContentDialog.ico | Bin 0 -> 173646 bytes .../WinUI.Neutral.Cs.ContentDialog.vstemplate | 24 + .../ResourceDictionary.xaml | 4 +- ...WinUI.Neutral.Cs.ResourceDictionary.csproj | 0 .../WinUI.Neutral.Cs.ResourceDictionary.ico | Bin ...I.Neutral.Cs.ResourceDictionary.vstemplate | 0 .../Neutral/CSharp/Resw/Resources.resw | 0 .../CSharp/Resw/WinUI.Neutral.Cs.Resw.csproj | 0 .../CSharp/Resw/WinUI.Neutral.Cs.Resw.ico | Bin .../Resw/WinUI.Neutral.Cs.Resw.vstemplate | 0 .../CSharp/TemplatedControl/CustomControl.cs | 8 + .../TemplatedControl/Themes/Generic.xaml | 41 ++ .../WinUI.Neutral.Cs.TemplatedControl.csproj | 0 .../WinUI.Neutral.Cs.TemplatedControl.ico | Bin ...nUI.Neutral.Cs.TemplatedControl.vstemplate | 0 .../CSharp/UserControl/UserControl.xaml | 4 +- .../CSharp/UserControl/UserControl.xaml.cs | 2 +- .../WinUI.Neutral.Cs.UserControl.csproj | 0 .../WinUI.Neutral.Cs.UserControl.ico | Bin .../WinUI.Neutral.Cs.UserControl.vstemplate | 0 .../Neutral/CppWinRT/BlankPage/BlankPage.cpp | 0 .../Neutral/CppWinRT/BlankPage/BlankPage.h | 0 .../Neutral/CppWinRT/BlankPage/BlankPage.idl | 0 .../Neutral/CppWinRT/BlankPage/BlankPage.xaml | 0 .../WinUI.Neutral.CppWinRT.BlankPage.csproj | 0 .../WinUI.Neutral.CppWinRT.BlankPage.ico | Bin ...inUI.Neutral.CppWinRT.BlankPage.vstemplate | 0 .../ResourceDictionary.xaml | 0 ...Neutral.CppWinRT.ResourceDictionary.csproj | 0 ...UI.Neutral.CppWinRT.ResourceDictionary.ico | Bin ...ral.CppWinRT.ResourceDictionary.vstemplate | 0 .../Neutral/CppWinRT/Resw/Resources.resw | 0 .../Resw/WinUI.Neutral.CppWinRT.Resw.csproj | 0 .../Resw/WinUI.Neutral.CppWinRT.Resw.ico | Bin .../WinUI.Neutral.CppWinRT.Resw.vstemplate | 0 .../TemplatedControl/TemplatedControl.cpp | 0 .../TemplatedControl/TemplatedControl.h | 0 .../TemplatedControl/TemplatedControl.idl | 0 ...I.Neutral.CppWinRT.TemplatedControl.csproj | 0 ...inUI.Neutral.CppWinRT.TemplatedControl.ico | Bin ...utral.CppWinRT.TemplatedControl.vstemplate | 0 .../CppWinRT/UserControl/UserControl.cpp | 0 .../CppWinRT/UserControl/UserControl.h | 0 .../CppWinRT/UserControl/UserControl.idl | 0 .../CppWinRT/UserControl/UserControl.xaml | 0 .../WinUI.Neutral.CppWinRT.UserControl.csproj | 0 .../WinUI.Neutral.CppWinRT.UserControl.ico | Bin ...UI.Neutral.CppWinRT.UserControl.vstemplate | 0 .../Desktop/CSharp/ClassLibrary/Class1.cs | 6 - .../ClassLibrary/ProjectTemplate.csproj | 3 +- .../WinUI.Desktop.Cs.ClassLibrary.csproj | 0 .../WinUI.Desktop.Cs.ClassLibrary.ico | Bin .../WinUI.Desktop.Cs.ClassLibrary.png | Bin .../WinUI.Desktop.Cs.ClassLibrary.vstemplate | 0 .../Desktop/CSharp/MvvmApp}/App.xaml | 0 .../Desktop/CSharp/MvvmApp/App.xaml.cs | 57 ++ .../Desktop/CSharp/MvvmApp/Assets/AppIcon.ico | Bin 0 -> 370070 bytes .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1090 bytes .../MvvmApp/Assets/SplashScreen.scale-200.png | Bin 0 -> 12625 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 6357 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 1910 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 574 bytes ...go.targetsize-48_altform-lightunplated.png | Bin 0 -> 1091 bytes .../CSharp/MvvmApp/Assets/StoreLogo.png | Bin 0 -> 1106 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 5843 bytes .../Desktop/CSharp/MvvmApp/MainPage.xaml | 30 + .../Desktop/CSharp/MvvmApp/MainPage.xaml.cs | 20 + .../Desktop/CSharp/MvvmApp/MainWindow.xaml | 34 ++ .../Desktop/CSharp/MvvmApp/MainWindow.xaml.cs | 27 + .../MvvmApp}/Package-managed.appxmanifest | 0 .../CSharp/MvvmApp/ProjectTemplate.csproj | 76 +++ .../PublishProfiles/win-arm64.pubxml | 0 .../Properties/PublishProfiles/win-x64.pubxml | 0 .../Properties/PublishProfiles/win-x86.pubxml | 0 .../MvvmApp}/Properties/launchSettings.json | 0 .../MvvmApp/ViewModels/MainPageViewModel.cs | 30 + .../MvvmApp/WinUI.Desktop.Cs.MvvmApp.csproj | 91 +++ .../MvvmApp/WinUI.Desktop.Cs.MvvmApp.ico} | Bin .../MvvmApp/WinUI.Desktop.Cs.MvvmApp.png} | Bin .../WinUI.Desktop.Cs.MvvmApp.vstemplate | 73 +++ .../Desktop/CSharp/MvvmApp}/app.manifest | 0 .../Desktop/CSharp/NavigationApp}/App.xaml | 0 .../Desktop/CSharp/NavigationApp/App.xaml.cs | 38 ++ .../CSharp/NavigationApp/Assets/AppIcon.ico | Bin 0 -> 370070 bytes .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1090 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 12625 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 6357 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 1910 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 574 bytes ...go.targetsize-48_altform-lightunplated.png | Bin 0 -> 1091 bytes .../CSharp/NavigationApp/Assets/StoreLogo.png | Bin 0 -> 1106 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 5843 bytes .../CSharp/NavigationApp/MainWindow.xaml | 57 ++ .../CSharp/NavigationApp/MainWindow.xaml.cs | 54 ++ .../Package-managed.appxmanifest | 0 .../CSharp/NavigationApp/Pages/AboutPage.xaml | 19 + .../NavigationApp/Pages/AboutPage.xaml.cs | 14 + .../CSharp/NavigationApp/Pages/HomePage.xaml | 19 + .../NavigationApp/Pages/HomePage.xaml.cs | 14 + .../NavigationApp/Pages/SettingsPage.xaml | 19 + .../NavigationApp/Pages/SettingsPage.xaml.cs | 17 + .../NavigationApp/ProjectTemplate.csproj | 75 +++ .../PublishProfiles/win-arm64.pubxml | 0 .../Properties/PublishProfiles/win-x64.pubxml | 0 .../Properties/PublishProfiles/win-x86.pubxml | 0 .../Properties/launchSettings.json | 0 .../WinUI.Desktop.Cs.NavigationApp.csproj | 98 ++++ .../WinUI.Desktop.Cs.NavigationApp.ico | Bin 0 -> 117018 bytes .../WinUI.Desktop.Cs.NavigationApp.png | Bin 0 -> 127453 bytes .../WinUI.Desktop.Cs.NavigationApp.vstemplate | 76 +++ .../CSharp/NavigationApp}/app.manifest | 0 .../CSharp}/PackagedApp/BlankApp/App.xaml | 0 .../CSharp/PackagedApp/BlankApp/App.xaml.cs | 0 .../CSharp/PackagedApp/BlankApp/AppIcon.ico | Bin 0 -> 370070 bytes .../PackagedApp/BlankApp/MainWindow.xaml | 20 +- .../PackagedApp/BlankApp}/MainWindow.xaml.cs | 8 +- .../BlankApp/ProjectTemplate.csproj | 4 + .../PublishProfiles/win-arm64.pubxml | 0 .../Properties/PublishProfiles/win-x64.pubxml | 0 .../Properties/PublishProfiles/win-x86.pubxml | 0 .../BlankApp/WinUI.Desktop.Cs.BlankApp.ico} | Bin .../BlankApp/WinUI.Desktop.Cs.BlankApp.png} | Bin .../WinUI.Desktop.Cs.BlankApp.vstemplate | 0 .../CSharp/PackagedApp/BlankApp}/app.manifest | 0 .../WapProj/LockScreenLogo.scale-200.png | Bin 0 -> 1090 bytes .../WapProj/Package-managed.appxmanifest | 0 .../WapProj/SplashScreen.scale-200.png | Bin 0 -> 12625 bytes .../WapProj/Square150x150Logo.scale-200.png | Bin 0 -> 6357 bytes .../WapProj/Square44x44Logo.scale-200.png | Bin 0 -> 1910 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 574 bytes ...go.targetsize-48_altform-lightunplated.png | Bin 0 -> 1091 bytes .../CSharp/PackagedApp/WapProj/StoreLogo.png | Bin 0 -> 1106 bytes .../PackagedApp/WapProj/WapProjTemplate.ico | Bin .../WapProj/WapProjTemplate.wapproj | 1 + .../WapProj/Wide310x150Logo.scale-200.png | Bin 0 -> 5843 bytes .../WinUI.Desktop.Cs.WapProj.vstemplate | 1 + .../WinUI.Desktop.Cs.PackagedApp.csproj | 0 .../WinUI.Desktop.Cs.PackagedApp.ico} | Bin .../WinUI.Desktop.Cs.PackagedApp.png} | Bin .../WinUI.Desktop.Cs.PackagedApp.vstemplate | 0 .../CSharp}/SingleProjectPackagedApp/App.xaml | 0 .../SingleProjectPackagedApp/App.xaml.cs | 7 +- .../Assets/AppIcon.ico | Bin 0 -> 370070 bytes .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1090 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 12625 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 6357 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 1910 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 574 bytes ...go.targetsize-48_altform-lightunplated.png | Bin 0 -> 1091 bytes .../Assets/StoreLogo.png | Bin 0 -> 1106 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 5843 bytes .../SingleProjectPackagedApp/MainPage.xaml | 18 + .../SingleProjectPackagedApp/MainPage.xaml.cs | 20 + .../SingleProjectPackagedApp/MainWindow.xaml | 34 ++ .../MainWindow.xaml.cs | 27 + .../Package-managed.appxmanifest} | 0 .../ProjectTemplate.csproj | 25 +- .../PublishProfiles/win-arm64.pubxml | 14 + .../Properties/PublishProfiles/win-x64.pubxml | 14 + .../Properties/PublishProfiles/win-x86.pubxml | 14 + .../Properties/launchSettings.json | 10 + ...Desktop.Cs.SingleProjectPackagedApp.csproj | 1 + ...UI.Desktop.Cs.SingleProjectPackagedApp.ico | Bin 0 -> 447836 bytes ...UI.Desktop.Cs.SingleProjectPackagedApp.png | Bin 0 -> 121340 bytes ...top.Cs.SingleProjectPackagedApp.vstemplate | 5 +- .../SingleProjectPackagedApp}/app.manifest | 0 .../Desktop/CSharp/TabViewApp}/App.xaml | 0 .../Desktop/CSharp/TabViewApp/App.xaml.cs | 32 ++ .../CSharp/TabViewApp/Assets/AppIcon.ico | Bin 0 -> 370070 bytes .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1090 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 12625 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 6357 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 1910 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 574 bytes ...go.targetsize-48_altform-lightunplated.png | Bin 0 -> 1091 bytes .../CSharp/TabViewApp/Assets/StoreLogo.png | Bin 0 -> 1106 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 5843 bytes .../Desktop/CSharp/TabViewApp/MainWindow.xaml | 36 ++ .../CSharp/TabViewApp/MainWindow.xaml.cs | 99 ++++ .../TabViewApp/Package-managed.appxmanifest | 53 ++ .../CSharp/TabViewApp/Pages/AboutPage.xaml | 19 + .../CSharp/TabViewApp/Pages/AboutPage.xaml.cs | 14 + .../CSharp/TabViewApp/Pages/HomePage.xaml | 19 + .../CSharp/TabViewApp/Pages/HomePage.xaml.cs | 14 + .../CSharp/TabViewApp/ProjectTemplate.csproj | 75 +++ .../PublishProfiles/win-arm64.pubxml | 14 + .../Properties/PublishProfiles/win-x64.pubxml | 14 + .../Properties/PublishProfiles/win-x86.pubxml | 14 + .../TabViewApp/Properties/launchSettings.json | 10 + .../WinUI.Desktop.Cs.TabViewApp.csproj | 94 ++++ .../WinUI.Desktop.Cs.TabViewApp.ico | Bin 0 -> 381038 bytes .../WinUI.Desktop.Cs.TabViewApp.png | Bin 0 -> 126474 bytes .../WinUI.Desktop.Cs.TabViewApp.vstemplate | 74 +++ .../Desktop/CSharp/TabViewApp}/app.manifest | 0 .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1090 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 12625 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 6357 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 1910 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 574 bytes ...go.targetsize-48_altform-lightunplated.png | Bin 0 -> 1091 bytes .../CSharp/UnitTestApp/Assets/StoreLogo.png | Bin 0 -> 1106 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 5843 bytes .../UnitTestApp/Package-managed.appxmanifest | 53 ++ .../CSharp/UnitTestApp/ProjectTemplate.csproj | 28 +- .../PublishProfiles/win-arm64.pubxml | 14 + .../Properties/PublishProfiles/win-x64.pubxml | 14 + .../Properties/PublishProfiles/win-x86.pubxml | 14 + .../Properties/launchSettings.json | 10 + .../CSharp/UnitTestApp/UnitTestApp.xaml | 0 .../CSharp/UnitTestApp/UnitTestApp.xaml.cs | 7 +- .../CSharp/UnitTestApp/UnitTestAppWindow.xaml | 0 .../UnitTestApp/UnitTestAppWindow.xaml.cs | 5 - .../Desktop/CSharp/UnitTestApp/UnitTests.cs | 3 - .../WinUI.Desktop.Cs.UnitTestApp.csproj | 1 + .../WinUI.Desktop.Cs.UnitTestApp.ico | Bin .../WinUI.Desktop.Cs.UnitTestApp.png | Bin .../WinUI.Desktop.Cs.UnitTestApp.vstemplate | 1 + .../Desktop/CSharp}/UnitTestApp/app.manifest | 0 .../CppWinRT/PackagedApp/BlankApp/App.cpp | 0 .../CppWinRT/PackagedApp/BlankApp/App.h | 0 .../CppWinRT/PackagedApp/BlankApp/App.xaml | 16 + .../PackagedApp/BlankApp/MainWindow.cpp | 0 .../PackagedApp/BlankApp/MainWindow.h | 0 .../PackagedApp/BlankApp/MainWindow.idl | 0 .../PackagedApp/BlankApp/MainWindow.xaml | 0 .../BlankApp/ProjectTemplate.vcxproj | 0 .../BlankApp/ProjectTemplate.vcxproj.filters | 0 .../WinUI.Desktop.CppWinRT.BlankApp.ico | Bin .../WinUI.Desktop.CppWinRT.BlankApp.png | Bin ...WinUI.Desktop.CppWinRT.BlankApp.vstemplate | 0 .../PackagedApp/BlankApp/app.manifest | 19 + .../CppWinRT/PackagedApp/BlankApp/pch.cpp | 0 .../CppWinRT/PackagedApp/BlankApp/pch.h | 0 .../CppWinRT/PackagedApp/BlankApp/readme.txt | 0 .../WapProj/LockScreenLogo.scale-200.png | Bin 0 -> 1090 bytes .../WapProj/Package-managed.appxmanifest | 0 .../WapProj/SplashScreen.scale-200.png | Bin 0 -> 12625 bytes .../WapProj/Square150x150Logo.scale-200.png | Bin 0 -> 6357 bytes .../WapProj/Square44x44Logo.scale-200.png | Bin 0 -> 1910 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 574 bytes ...go.targetsize-48_altform-lightunplated.png | Bin 0 -> 1091 bytes .../PackagedApp/WapProj/StoreLogo.png | Bin 0 -> 1106 bytes .../PackagedApp/WapProj/WapProjTemplate.ico | Bin .../WapProj/WapProjTemplate.wapproj | 1 + .../WapProj/Wide310x150Logo.scale-200.png | Bin 0 -> 5843 bytes .../WinUI.Desktop.CppWinRT.WapProj.vstemplate | 1 + .../WinUI.Desktop.CppWinRT.PackagedApp.csproj | 0 .../WinUI.Desktop.CppWinRT.PackagedApp.ico | Bin .../WinUI.Desktop.CppWinRT.PackagedApp.png | Bin ...UI.Desktop.CppWinRT.PackagedApp.vstemplate | 0 .../CppWinRT/SingleProjectPackagedApp/App.cpp | 0 .../CppWinRT/SingleProjectPackagedApp/App.h | 0 .../SingleProjectPackagedApp/App.xaml | 16 + .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1090 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 12625 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 6357 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 1910 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 574 bytes ...go.targetsize-48_altform-lightunplated.png | Bin 0 -> 1091 bytes .../Assets/StoreLogo.png | Bin 0 -> 1106 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 5843 bytes .../SingleProjectPackagedApp/MainWindow.cpp | 0 .../SingleProjectPackagedApp/MainWindow.h | 0 .../SingleProjectPackagedApp/MainWindow.idl | 0 .../SingleProjectPackagedApp/MainWindow.xaml | 0 .../Package-native.appxmanifest | 53 ++ .../ProjectTemplate.vcxproj | 1 + .../ProjectTemplate.vcxproj.filters | 0 ...p.CppWinRT.SingleProjectPackagedApp.csproj | 1 + ...ktop.CppWinRT.SingleProjectPackagedApp.ico | Bin ...ktop.CppWinRT.SingleProjectPackagedApp.png | Bin ...pWinRT.SingleProjectPackagedApp.vstemplate | 1 + .../SingleProjectPackagedApp/app.manifest | 19 + .../CppWinRT/SingleProjectPackagedApp/pch.cpp | 0 .../CppWinRT/SingleProjectPackagedApp/pch.h | 0 .../SingleProjectPackagedApp/readme.txt | 0 .../Desktop/CppWinRT/UnitTestApp/App.cpp | 0 .../Desktop/CppWinRT/UnitTestApp/App.h | 0 .../Desktop/CppWinRT/UnitTestApp/App.xaml | 16 + .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1090 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 12625 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 6357 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 1910 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 574 bytes ...go.targetsize-48_altform-lightunplated.png | Bin 0 -> 1091 bytes .../CppWinRT/UnitTestApp/Assets/StoreLogo.png | Bin 0 -> 1106 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 5843 bytes .../CppWinRT/UnitTestApp/MainWindow.cpp | 0 .../Desktop/CppWinRT/UnitTestApp/MainWindow.h | 0 .../CppWinRT/UnitTestApp/MainWindow.idl | 0 .../CppWinRT/UnitTestApp/MainWindow.xaml | 0 .../UnitTestApp/Package-native.appxmanifest | 0 .../UnitTestApp/ProjectTemplate.vcxproj | 1 + .../ProjectTemplate.vcxproj.filters | 0 .../CppWinRT/UnitTestApp/UnitTests.cpp | 0 .../WinUI.Desktop.CppWinRT.UnitTestApp.csproj | 1 + .../WinUI.Desktop.CppWinRT.UnitTestApp.ico | Bin .../WinUI.Desktop.CppWinRT.UnitTestApp.png | Bin ...UI.Desktop.CppWinRT.UnitTestApp.vstemplate | 1 + .../Desktop/CppWinRT/UnitTestApp/app.manifest | 19 + .../Desktop/CppWinRT/UnitTestApp/pch.cpp | 0 .../Desktop/CppWinRT/UnitTestApp/pch.h | 0 .../Desktop/CppWinRT/UnitTestApp/readme.txt | 0 .../CppWinRT/RuntimeComponent/Class.cpp | 0 .../Neutral/CppWinRT/RuntimeComponent/Class.h | 0 .../CppWinRT/RuntimeComponent/Class.idl | 0 .../RuntimeComponent/ProjectTemplate.vcxproj | 0 .../ProjectTemplate.vcxproj.filters | 0 .../RuntimeComponent/RuntimeComponent.def | 0 ...I.Neutral.CppWinRT.RuntimeComponent.csproj | 0 ...inUI.Neutral.CppWinRT.RuntimeComponent.ico | Bin ...inUI.Neutral.CppWinRT.RuntimeComponent.png | Bin ...utral.CppWinRT.RuntimeComponent.vstemplate | 0 .../Neutral/CppWinRT/RuntimeComponent/pch.cpp | 0 .../Neutral/CppWinRT/RuntimeComponent/pch.h | 0 .../CppWinRT/RuntimeComponent/readme.txt | 0 .../VSIX/Directory.Build.props | 18 +- .../Cpp/Common/VSPackage.Designer.cs | 0 .../VSIX/Extension/Cpp/Common/VSPackage.resx | 0 .../Cpp/Common/cs-CZ/VSPackage.cs-CZ.resx | 0 .../Cpp/Common/de-DE/VSPackage.de-DE.resx | 0 .../Cpp/Common/en-US/VSPackage.en-US.resx | 0 .../Cpp/Common/es-ES/VSPackage.es-ES.resx | 0 .../Cpp/Common/fr-FR/VSPackage.fr-FR.resx | 0 .../Cpp/Common/it-IT/VSPackage.it-IT.resx | 0 .../Cpp/Common/ja-JP/VSPackage.ja-JP.resx | 0 .../Cpp/Common/ko-KR/VSPackage.ko-KR.resx | 0 .../Cpp/Common/pl-PL/VSPackage.pl-PL.resx | 0 .../Cpp/Common/pt-BR/VSPackage.pt-BR.resx | 0 .../Cpp/Common/ru-RU/VSPackage.ru-RU.resx | 0 .../Cpp/Common/tr-TR/VSPackage.tr-TR.resx | 0 .../Cpp/Common/zh-CN/VSPackage.zh-CN.resx | 0 .../Cpp/Common/zh-TW/VSPackage.zh-TW.resx | 0 .../Component/source.extension.vsixmanifest | 0 .../Extension/Cpp/Dev17/ExtensionPack.vsext | 0 .../LocalDev/source.extension.vsixmanifest | 66 +++ .../Extension/Cpp/Dev17/NuGetPackageList.cs | 0 .../Standalone/source.extension.vsixmanifest | 0 .../VSIX/Extension/Cpp/Dev17/VSPackage.cs | 0 .../WindowsAppSDK.Cpp.Extension.Dev17.csproj | 0 .../Extension/Cs/Common/VSPackage.Designer.cs | 54 ++ .../VSIX/Extension/Cs/Common/VSPackage.resx | 27 + .../Cs/Common/cs-CZ/VSPackage.cs-CZ.resx | 0 .../Cs/Common/de-DE/VSPackage.de-DE.resx | 0 .../Cs/Common/en-US/VSPackage.en-US.resx | 0 .../Cs/Common/es-ES/VSPackage.es-ES.resx | 0 .../Cs/Common/fr-FR/VSPackage.fr-FR.resx | 0 .../Cs/Common/it-IT/VSPackage.it-IT.resx | 0 .../Cs/Common/ja-JP/VSPackage.ja-JP.resx | 0 .../Cs/Common/ko-KR/VSPackage.ko-KR.resx | 0 .../Cs/Common/pl-PL/VSPackage.pl-PL.resx | 0 .../Cs/Common/pt-BR/VSPackage.pt-BR.resx | 0 .../Cs/Common/ru-RU/VSPackage.ru-RU.resx | 0 .../Cs/Common/tr-TR/VSPackage.tr-TR.resx | 0 .../Cs/Common/zh-CN/VSPackage.zh-CN.resx | 0 .../Cs/Common/zh-TW/VSPackage.zh-TW.resx | 0 .../Component/source.extension.vsixmanifest | 8 +- .../Extension/Cs/Dev17/ExtensionPack.vsext | 0 .../LocalDev/source.extension.vsixmanifest | 109 ++++ .../Standalone/source.extension.vsixmanifest | 8 +- .../VSIX/Extension/Cs/Dev17/VSPackage.cs | 0 .../WindowsAppSDK.Cs.Extension.Dev17.csproj | 85 +-- .../VSIX/Extension/Directory.Build.targets | 0 dev/{ => Templates}/VSIX/Extension/LICENSE | 0 .../VSIX/Extension/WindowsAppSDK.png | Bin .../VSIX/Shared/OutputWindowHelper.cs | 2 +- .../VSIX/Shared/WizardImplementation.cs | 2 +- .../VSIX/Shared/WizardInfoBarEvents.cs | 0 .../VSIX/WindowsAppSDK.Extension.sln | 80 ++- dev/{ => Templates}/VSIX/WindowsAppSDK.ico | Bin .../build-local-VSIX-package/Build-VSIX.ps1 | 517 ++++++++++++++++++ .../Install-LocalDev-VSIX.ps1 | 367 +++++++++++++ .../build-install-localdev-vsix.ps1 | 120 ++++ .../build-local-VSIX-package.md | 244 +++++++++ .../vsix-nuget.config | 28 + .../VSIX/extension.manifest.json | 0 dev/{ => Templates}/VSIX/global.json | 0 .../VSIX/overview-experimental.md | 0 dev/{ => Templates}/VSIX/overview-stable.md | 0 .../how-to-create-a-new-csharp-template.md | 324 +++++++++++ dev/Templates/templates.props | 196 +++++++ .../PackagedApp/BlankApp/MainWindow.xaml.cs | 30 - .../WapProj/LockScreenLogo.scale-200.png | Bin 432 -> 0 bytes .../WapProj/SplashScreen.scale-200.png | Bin 5372 -> 0 bytes .../WapProj/Square150x150Logo.scale-200.png | Bin 1755 -> 0 bytes .../WapProj/Square44x44Logo.scale-200.png | Bin 637 -> 0 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 283 -> 0 bytes .../CSharp/PackagedApp/WapProj/StoreLogo.png | Bin 456 -> 0 bytes .../WapProj/Wide310x150Logo.scale-200.png | Bin 2097 -> 0 bytes .../Assets/LockScreenLogo.scale-200.png | Bin 432 -> 0 bytes .../Assets/SplashScreen.scale-200.png | Bin 5372 -> 0 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 1755 -> 0 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 637 -> 0 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 283 -> 0 bytes .../Assets/StoreLogo.png | Bin 456 -> 0 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 2097 -> 0 bytes .../SingleProjectPackagedApp/MainWindow.xaml | 19 - .../Assets/LockScreenLogo.scale-200.png | Bin 432 -> 0 bytes .../Assets/SplashScreen.scale-200.png | Bin 5372 -> 0 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 1755 -> 0 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 637 -> 0 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 283 -> 0 bytes .../CSharp/UnitTestApp/Assets/StoreLogo.png | Bin 456 -> 0 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 2097 -> 0 bytes .../WapProj/LockScreenLogo.scale-200.png | Bin 432 -> 0 bytes .../WapProj/SplashScreen.scale-200.png | Bin 5372 -> 0 bytes .../WapProj/Square150x150Logo.scale-200.png | Bin 1755 -> 0 bytes .../WapProj/Square44x44Logo.scale-200.png | Bin 637 -> 0 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 283 -> 0 bytes .../PackagedApp/WapProj/StoreLogo.png | Bin 456 -> 0 bytes .../WapProj/Wide310x150Logo.scale-200.png | Bin 2097 -> 0 bytes .../Assets/LockScreenLogo.scale-200.png | Bin 432 -> 0 bytes .../Assets/SplashScreen.scale-200.png | Bin 5372 -> 0 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 1755 -> 0 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 637 -> 0 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 283 -> 0 bytes .../Assets/StoreLogo.png | Bin 456 -> 0 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 2097 -> 0 bytes .../Assets/LockScreenLogo.scale-200.png | Bin 432 -> 0 bytes .../Assets/SplashScreen.scale-200.png | Bin 5372 -> 0 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 1755 -> 0 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 637 -> 0 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 283 -> 0 bytes .../CppWinRT/UnitTestApp/Assets/StoreLogo.png | Bin 456 -> 0 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 2097 -> 0 bytes 499 files changed, 8106 insertions(+), 217 deletions(-) create mode 100644 build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Publish-Stage.yml create mode 100644 build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Stages.yml create mode 100644 build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Test-Stage.yml create mode 100644 build/WindowsAppSDK-DotnetNewTemplates-Publish.yml create mode 100644 build/WindowsAppSDK-DotnetNewTemplates.yml create mode 100644 dev/Templates/Directory.Build.props create mode 100644 dev/Templates/Dotnet/Directory.Build.props create mode 100644 dev/Templates/Dotnet/README.md create mode 100644 dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 create mode 100644 dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj create mode 100644 dev/Templates/Dotnet/templates/blank-app/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/blank-app/.template.config/icon.png create mode 100644 dev/Templates/Dotnet/templates/blank-app/.template.config/ide.host.json create mode 100644 dev/Templates/Dotnet/templates/blank-app/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/class-library/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/class-library/.template.config/icon.png create mode 100644 dev/Templates/Dotnet/templates/class-library/.template.config/ide.host.json create mode 100644 dev/Templates/Dotnet/templates/class-library/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/gitignore.txt create mode 100644 dev/Templates/Dotnet/templates/item-blank-page/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/item-blank-page/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/item-blank-window/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/item-blank-window/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/item-content-dialog/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/item-content-dialog/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/item-resource-dictionary/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/item-resource-dictionary/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/item-resw/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/item-resw/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/item-templated-control/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/item-templated-control/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/item-user-control/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/item-user-control/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/mvvm-app/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/mvvm-app/.template.config/icon.png create mode 100644 dev/Templates/Dotnet/templates/mvvm-app/.template.config/ide.host.json create mode 100644 dev/Templates/Dotnet/templates/mvvm-app/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/navigation-app/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/navigation-app/.template.config/icon.png create mode 100644 dev/Templates/Dotnet/templates/navigation-app/.template.config/ide.host.json create mode 100644 dev/Templates/Dotnet/templates/navigation-app/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/tabview-app/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/tabview-app/.template.config/icon.png create mode 100644 dev/Templates/Dotnet/templates/tabview-app/.template.config/ide.host.json create mode 100644 dev/Templates/Dotnet/templates/tabview-app/.template.config/template.json create mode 100644 dev/Templates/Dotnet/templates/unit-test/.template.config/dotnetcli.host.json create mode 100644 dev/Templates/Dotnet/templates/unit-test/.template.config/icon.png create mode 100644 dev/Templates/Dotnet/templates/unit-test/.template.config/ide.host.json create mode 100644 dev/Templates/Dotnet/templates/unit-test/.template.config/template.json create mode 100644 dev/Templates/Source/Directory.Build.props rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CSharp/BlankWindow/BlankWindow.xaml (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CSharp/BlankWindow/BlankWindow.xaml.cs (87%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CSharp/BlankWindow/WinUI.Desktop.Cs.BlankWindow.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CSharp/BlankWindow/WinUI.Desktop.Cs.BlankWindow.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CSharp/BlankWindow/WinUI.Desktop.Cs.BlankWindow.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CppWinRT/BlankWindow/BlankWindow.cpp (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CppWinRT/BlankWindow/BlankWindow.h (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CppWinRT/BlankWindow/BlankWindow.idl (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CppWinRT/BlankWindow/BlankWindow.xaml (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CppWinRT/BlankWindow/WinUI.Desktop.CppWinRT.BlankWindow.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CppWinRT/BlankWindow/WinUI.Desktop.CppWinRT.BlankWindow.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Desktop/CppWinRT/BlankWindow/WinUI.Desktop.CppWinRT.BlankWindow.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/BlankPage/BlankPage.xaml (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/BlankPage/BlankPage.xaml.cs (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/BlankPage/WinUI.Neutral.Cs.BlankPage.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/BlankPage/WinUI.Neutral.Cs.BlankPage.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/BlankPage/WinUI.Neutral.Cs.BlankPage.vstemplate (100%) create mode 100644 dev/Templates/Source/ItemTemplates/Neutral/CSharp/ContentDialog/ContentDialog.xaml create mode 100644 dev/Templates/Source/ItemTemplates/Neutral/CSharp/ContentDialog/ContentDialog.xaml.cs create mode 100644 dev/Templates/Source/ItemTemplates/Neutral/CSharp/ContentDialog/WinUI.Neutral.Cs.ContentDialog.csproj create mode 100644 dev/Templates/Source/ItemTemplates/Neutral/CSharp/ContentDialog/WinUI.Neutral.Cs.ContentDialog.ico create mode 100644 dev/Templates/Source/ItemTemplates/Neutral/CSharp/ContentDialog/WinUI.Neutral.Cs.ContentDialog.vstemplate rename dev/{VSIX/ItemTemplates/Neutral/CppWinRT => Templates/Source/ItemTemplates/Neutral/CSharp}/ResourceDictionary/ResourceDictionary.xaml (76%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/ResourceDictionary/WinUI.Neutral.Cs.ResourceDictionary.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/ResourceDictionary/WinUI.Neutral.Cs.ResourceDictionary.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/ResourceDictionary/WinUI.Neutral.Cs.ResourceDictionary.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/Resw/Resources.resw (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/Resw/WinUI.Neutral.Cs.Resw.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/Resw/WinUI.Neutral.Cs.Resw.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/Resw/WinUI.Neutral.Cs.Resw.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/TemplatedControl/CustomControl.cs (61%) create mode 100644 dev/Templates/Source/ItemTemplates/Neutral/CSharp/TemplatedControl/Themes/Generic.xaml rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml (90%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml.cs (90%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.cpp (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.h (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.idl (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.xaml (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.vstemplate (100%) rename dev/{VSIX/ItemTemplates/Neutral/CSharp => Templates/Source/ItemTemplates/Neutral/CppWinRT}/ResourceDictionary/ResourceDictionary.xaml (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/Resw/Resources.resw (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.cpp (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.h (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.idl (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.cpp (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.h (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.idl (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.xaml (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.csproj (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.ico (100%) rename dev/{VSIX => Templates/Source}/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/ClassLibrary/Class1.cs (63%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/ClassLibrary/ProjectTemplate.csproj (77%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.csproj (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.ico (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.png (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.vstemplate (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp => Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp}/App.xaml (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/App.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/AppIcon.ico create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/LockScreenLogo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/SplashScreen.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square150x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square44x44Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/StoreLogo.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Wide310x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainPage.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainPage.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainWindow.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainWindow.xaml.cs rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp => Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp}/Package-managed.appxmanifest (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/ProjectTemplate.csproj rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp => Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp}/Properties/PublishProfiles/win-arm64.pubxml (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp => Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp}/Properties/PublishProfiles/win-x64.pubxml (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp => Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp}/Properties/PublishProfiles/win-x86.pubxml (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp => Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp}/Properties/launchSettings.json (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/ViewModels/MainPageViewModel.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.csproj rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.ico => Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.ico} (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.png => Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.png} (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.vstemplate rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp => Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp}/app.manifest (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp => Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp}/App.xaml (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/App.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/AppIcon.ico create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/LockScreenLogo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/SplashScreen.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square150x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square44x44Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/StoreLogo.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Wide310x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/MainWindow.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/MainWindow.xaml.cs rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp => Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp}/Package-managed.appxmanifest (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/AboutPage.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/AboutPage.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/HomePage.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/HomePage.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/SettingsPage.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/SettingsPage.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/ProjectTemplate.csproj rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp => Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp}/Properties/PublishProfiles/win-arm64.pubxml (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp => Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp}/Properties/PublishProfiles/win-x64.pubxml (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp => Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp}/Properties/PublishProfiles/win-x86.pubxml (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp => Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp}/Properties/launchSettings.json (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.csproj create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.ico create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.vstemplate rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp => Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp}/app.manifest (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CppWinRT => Templates/Source/ProjectTemplates/Desktop/CSharp}/PackagedApp/BlankApp/App.xaml (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/App.xaml.cs (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/AppIcon.ico rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml (50%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp => Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp}/MainWindow.xaml.cs (85%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj (94%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp => Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp}/Properties/PublishProfiles/win-arm64.pubxml (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp => Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp}/Properties/PublishProfiles/win-x64.pubxml (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp => Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp}/Properties/PublishProfiles/win-x86.pubxml (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.ico => Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.ico} (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.png => Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.png} (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp => Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp}/app.manifest (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/LockScreenLogo.scale-200.png rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Package-managed.appxmanifest (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/SplashScreen.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square150x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.targetsize-48_altform-lightunplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/StoreLogo.png rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.ico (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj (97%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Wide310x150Logo.scale-200.png rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WinUI.Desktop.Cs.WapProj.vstemplate (95%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.csproj (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.ico => Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.ico} (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.png => Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.png} (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CppWinRT => Templates/Source/ProjectTemplates/Desktop/CSharp}/SingleProjectPackagedApp/App.xaml (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml.cs (88%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/AppIcon.ico create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square150x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/StoreLogo.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Wide310x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainPage.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainPage.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml.cs rename dev/{VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Package-native.appxmanifest => Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Package-managed.appxmanifest} (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/ProjectTemplate.csproj (63%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-arm64.pubxml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x64.pubxml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x86.pubxml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/launchSettings.json rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.csproj (98%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.ico create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.png rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.vstemplate (90%) rename dev/{VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp => Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp}/app.manifest (100%) rename dev/{VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp => Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp}/App.xaml (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/App.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/AppIcon.ico create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/LockScreenLogo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/SplashScreen.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square150x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square44x44Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/StoreLogo.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Wide310x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/MainWindow.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/MainWindow.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Package-managed.appxmanifest create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/AboutPage.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/AboutPage.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/HomePage.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/HomePage.xaml.cs create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/ProjectTemplate.csproj create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-arm64.pubxml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-x64.pubxml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-x86.pubxml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/launchSettings.json create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/WinUI.Desktop.Cs.TabViewApp.csproj create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/WinUI.Desktop.Cs.TabViewApp.ico create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/WinUI.Desktop.Cs.TabViewApp.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/WinUI.Desktop.Cs.TabViewApp.vstemplate rename dev/{VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp => Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp}/app.manifest (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/LockScreenLogo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/SplashScreen.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square150x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/StoreLogo.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Wide310x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Package-managed.appxmanifest rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj (59%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-arm64.pubxml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x64.pubxml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x86.pubxml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/launchSettings.json rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml.cs (90%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml.cs (81%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTests.cs (88%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.csproj (98%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.ico (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.png (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.vstemplate (96%) rename dev/{VSIX/ProjectTemplates/Desktop/CppWinRT => Templates/Source/ProjectTemplates/Desktop/CSharp}/UnitTestApp/app.manifest (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.h (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.xaml rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.h (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.idl (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.xaml (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj.filters (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.ico (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.png (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.vstemplate (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/app.manifest rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.h (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/readme.txt (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/LockScreenLogo.scale-200.png rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/SplashScreen.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square150x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.targetsize-48_altform-lightunplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/StoreLogo.png rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.ico (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj (97%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Wide310x150Logo.scale-200.png rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WinUI.Desktop.CppWinRT.WapProj.vstemplate (95%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.csproj (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.ico (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.png (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.h (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square150x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/StoreLogo.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Wide310x150Logo.scale-200.png rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/MainWindow.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/MainWindow.h (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/MainWindow.idl (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/MainWindow.xaml (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Package-native.appxmanifest rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj (98%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj.filters (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.csproj (98%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.ico (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.png (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.vstemplate (96%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/app.manifest rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.h (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/readme.txt (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.h (100%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.xaml create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/LockScreenLogo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/SplashScreen.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square150x150Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.scale-200.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/StoreLogo.png create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Wide310x150Logo.scale-200.png rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/MainWindow.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/MainWindow.h (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/MainWindow.idl (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/MainWindow.xaml (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Package-native.appxmanifest (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/ProjectTemplate.vcxproj (98%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/ProjectTemplate.vcxproj.filters (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/UnitTests.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.csproj (98%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.ico (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.png (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.vstemplate (96%) create mode 100644 dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/app.manifest rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.h (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/readme.txt (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.h (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.idl (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj.filters (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/RuntimeComponent.def (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.csproj (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.ico (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.png (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.vstemplate (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.cpp (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.h (100%) rename dev/{VSIX => Templates/Source}/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/readme.txt (100%) rename dev/{ => Templates}/VSIX/Directory.Build.props (57%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/VSPackage.Designer.cs (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/VSPackage.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/cs-CZ/VSPackage.cs-CZ.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/de-DE/VSPackage.de-DE.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/en-US/VSPackage.en-US.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/es-ES/VSPackage.es-ES.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/fr-FR/VSPackage.fr-FR.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/it-IT/VSPackage.it-IT.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/ja-JP/VSPackage.ja-JP.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/ko-KR/VSPackage.ko-KR.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/pl-PL/VSPackage.pl-PL.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/pt-BR/VSPackage.pt-BR.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/ru-RU/VSPackage.ru-RU.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/tr-TR/VSPackage.tr-TR.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/zh-CN/VSPackage.zh-CN.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Common/zh-TW/VSPackage.zh-TW.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Dev17/Component/source.extension.vsixmanifest (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Dev17/ExtensionPack.vsext (100%) create mode 100644 dev/Templates/VSIX/Extension/Cpp/Dev17/LocalDev/source.extension.vsixmanifest rename dev/{ => Templates}/VSIX/Extension/Cpp/Dev17/NuGetPackageList.cs (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Dev17/Standalone/source.extension.vsixmanifest (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Dev17/VSPackage.cs (100%) rename dev/{ => Templates}/VSIX/Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/VSPackage.Designer.cs (89%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/VSPackage.resx (90%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/cs-CZ/VSPackage.cs-CZ.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/de-DE/VSPackage.de-DE.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/en-US/VSPackage.en-US.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/es-ES/VSPackage.es-ES.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/fr-FR/VSPackage.fr-FR.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/it-IT/VSPackage.it-IT.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/ja-JP/VSPackage.ja-JP.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/ko-KR/VSPackage.ko-KR.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/pl-PL/VSPackage.pl-PL.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/pt-BR/VSPackage.pt-BR.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/ru-RU/VSPackage.ru-RU.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/tr-TR/VSPackage.tr-TR.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/zh-CN/VSPackage.zh-CN.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Common/zh-TW/VSPackage.zh-TW.resx (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Dev17/Component/source.extension.vsixmanifest (77%) rename dev/{ => Templates}/VSIX/Extension/Cs/Dev17/ExtensionPack.vsext (100%) create mode 100644 dev/Templates/VSIX/Extension/Cs/Dev17/LocalDev/source.extension.vsixmanifest rename dev/{ => Templates}/VSIX/Extension/Cs/Dev17/Standalone/source.extension.vsixmanifest (78%) rename dev/{ => Templates}/VSIX/Extension/Cs/Dev17/VSPackage.cs (100%) rename dev/{ => Templates}/VSIX/Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj (67%) rename dev/{ => Templates}/VSIX/Extension/Directory.Build.targets (100%) rename dev/{ => Templates}/VSIX/Extension/LICENSE (100%) rename dev/{ => Templates}/VSIX/Extension/WindowsAppSDK.png (100%) rename dev/{ => Templates}/VSIX/Shared/OutputWindowHelper.cs (97%) rename dev/{ => Templates}/VSIX/Shared/WizardImplementation.cs (99%) rename dev/{ => Templates}/VSIX/Shared/WizardInfoBarEvents.cs (100%) rename dev/{ => Templates}/VSIX/WindowsAppSDK.Extension.sln (69%) rename dev/{ => Templates}/VSIX/WindowsAppSDK.ico (100%) create mode 100644 dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX.ps1 create mode 100644 dev/Templates/VSIX/build-local-VSIX-package/Install-LocalDev-VSIX.ps1 create mode 100644 dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 create mode 100644 dev/Templates/VSIX/build-local-VSIX-package/build-local-VSIX-package.md create mode 100644 dev/Templates/VSIX/build-local-VSIX-package/vsix-nuget.config rename dev/{ => Templates}/VSIX/extension.manifest.json (100%) rename dev/{ => Templates}/VSIX/global.json (100%) rename dev/{ => Templates}/VSIX/overview-experimental.md (100%) rename dev/{ => Templates}/VSIX/overview-stable.md (100%) create mode 100644 dev/Templates/how-to-create-a-new-csharp-template.md create mode 100644 dev/Templates/templates.props delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml.cs delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/LockScreenLogo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/SplashScreen.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square150x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.targetsize-24_altform-unplated.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/StoreLogo.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Wide310x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square150x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/StoreLogo.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Wide310x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/LockScreenLogo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/SplashScreen.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square150x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/StoreLogo.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Wide310x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/LockScreenLogo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/SplashScreen.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square150x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.targetsize-24_altform-unplated.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/StoreLogo.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Wide310x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square150x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/StoreLogo.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Wide310x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/LockScreenLogo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/SplashScreen.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square150x150Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.scale-200.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/StoreLogo.png delete mode 100644 dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Wide310x150Logo.scale-200.png diff --git a/.gitignore b/.gitignore index 479e37e613..50cb25bb4e 100644 --- a/.gitignore +++ b/.gitignore @@ -204,6 +204,8 @@ PublishScripts/ *.nupkg # NuGet Symbol Packages *.snupkg +# Visual Studio Extension build output (source files are *.vsixmanifest, not affected) +*.vsix # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. diff --git a/BuildAll.ps1 b/BuildAll.ps1 index 2a56b98c35..6dbc0285dd 100644 --- a/BuildAll.ps1 +++ b/BuildAll.ps1 @@ -1,4 +1,4 @@ -<# +<# This script is to build the Foundation transport package that will be used to generate the windows app sdk package. This script is called from BuildAll.ps1 from the aggregator repo and should not be called directly. @@ -113,7 +113,7 @@ Try { .\tools\GenerateDynamicDependencyOverrides.ps1 -Path "$buildOverridePath" .\tools\GeneratePushNotificationsOverrides.ps1 -Path "$buildOverridePath" - if ($AzureBuildStep -ne "all") + if ($AzureBuildStep -ne "all" -and $AzureBuildStep -ne "BuildTemplates") { # Some builds have "-branchname" appended, but when this happens the environment variable # TFS_BUILDNUMBER has the un-modified version. @@ -601,6 +601,50 @@ Try { exit 1 } } + if (($AzureBuildStep -eq "all") -Or ($AzureBuildStep -eq "BuildTemplates")) + { + #------------------ + # Build WinUI template artifacts: + # - dotnet-new NuGet (Microsoft.WindowsAppSDK.WinUI.CSharp.Templates.*.nupkg) + # - templates VSIX (Standalone + Component, x C# + C++ = 4 .vsix) + # + # All artifacts land in \localpackages\ so a single dev workflow + # (the docs, the csproj's default, the NuGet.config + # "localpackages" feed, and Test-DotnetNewTemplates.ps1) all agree on + # one path. .vsix files coexist fine; NuGet only sees *.nupkg. + #------------------ + $templatesOutputDir = Join-Path $env:Build_SourcesDirectory "localpackages" + if (-not (Test-Path $templatesOutputDir)) + { + New-Item -ItemType Directory -Path $templatesOutputDir -Force | Out-Null + } + + write-host "Packing dotnet-new templates (Microsoft.WindowsAppSDK.WinUI.CSharp.Templates) ..." + & dotnet pack "dev\Templates\Dotnet\WinAppSdk.CSharp.DotnetNewTemplates.csproj" ` + --configuration $Configuration ` + --output $templatesOutputDir + if ($lastexitcode -ne 0) + { + write-host "ERROR: dotnet pack WinAppSdk.CSharp.DotnetNewTemplates.csproj FAILED." + exit 1 + } + + # Templates VSIX (Standalone + Component, matching CI). The + # Microsoft.WindowsAppSDK version used for restore comes from + # dev\Templates\Directory.Build.props ( default) + # - single source of truth. + write-host "Building templates VSIX (Standalone + Component) ..." + & "dev\Templates\VSIX\build-local-VSIX-package\Build-VSIX.ps1" ` + -Configuration $Configuration ` + -Deployment Both ` + -RepoRoot $env:Build_SourcesDirectory ` + -OutputDir $templatesOutputDir + if ($lastexitcode -ne 0) + { + write-host "ERROR: Build-VSIX.ps1 FAILED." + exit 1 + } + } $files = Get-ChildItem $OutputDirectory -File -Filter "*.nupkg" foreach ($file in $files) { diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml index 2e90d4002d..8ba3ecca76 100644 --- a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml @@ -90,7 +90,7 @@ steps: - task: VSBuild@1 displayName: 'Restore WindowsAppSDK.Extension.sln' inputs: - solution: $(FoundationRepoPath)dev\VSIX\WindowsAppSDK.Extension.sln + solution: $(FoundationRepoPath)dev\Templates\VSIX\WindowsAppSDK.Extension.sln platform: 'Any CPU' configuration: '$(buildConfiguration)' msBuildArgs: '/t:restore /p:OptionalVSIXVersion="${{ parameters.OptionalVSIXVersion }}" /p:WindowsAppSDKVersion="$(WindowsAppSDKPackageVersion)" /p:RestoreAdditionalProjectSources="$(System.ArtifactsDirectory)" /p:EnableExperimentalVSIXFeatures="${{ parameters.EnableExperimentalVSIXFeatures }}" /binaryLogger:$(ob_outputDirectory)\binlogs\StandaloneVSIX.restore.binlog' @@ -98,7 +98,7 @@ steps: - task: VSBuild@1 displayName: 'Build Standalone WindowsAppSDK.Extension.sln' inputs: - solution: $(FoundationRepoPath)dev\VSIX\WindowsAppSDK.Extension.sln + solution: $(FoundationRepoPath)dev\Templates\VSIX\WindowsAppSDK.Extension.sln platform: 'Any CPU' configuration: '$(buildConfiguration)' msBuildArgs: '/p:OptionalVSIXVersion="${{ parameters.OptionalVSIXVersion }}" /p:WindowsAppSDKVersion="$(WindowsAppSDKPackageVersion)" /p:EnableExperimentalVSIXFeatures="${{ parameters.EnableExperimentalVSIXFeatures }}" /binaryLogger:$(ob_outputDirectory)\binlogs\StandaloneVSIX.build.binlog' @@ -124,7 +124,7 @@ steps: - task: VSBuild@1 displayName: 'Restore Component WindowsAppSDK.Extension.sln' inputs: - solution: $(FoundationRepoPath)dev\VSIX\WindowsAppSDK.Extension.sln + solution: $(FoundationRepoPath)dev\Templates\VSIX\WindowsAppSDK.Extension.sln platform: 'Any CPU' configuration: '$(buildConfiguration)' msBuildArgs: '/t:restore /p:OptionalVSIXVersion="${{ parameters.OptionalVSIXVersion }}" /p:WindowsAppSDKVersion="$(WindowsAppSDKPackageVersion)" /p:RestoreAdditionalProjectSources="$(System.ArtifactsDirectory)" /p:EnableExperimentalVSIXFeatures="${{ parameters.EnableExperimentalVSIXFeatures }}" /binaryLogger:$(ob_outputDirectory)\binlogs\ComponentVSIX.restore.binlog' @@ -132,7 +132,7 @@ steps: - task: VSBuild@1 displayName: 'Build Component WindowsAppSDK.Extension.sln' inputs: - solution: $(FoundationRepoPath)dev\VSIX\WindowsAppSDK.Extension.sln + solution: $(FoundationRepoPath)dev\Templates\VSIX\WindowsAppSDK.Extension.sln platform: 'Any CPU' configuration: '$(buildConfiguration)' msBuildArgs: '/restore /p:OptionalVSIXVersion="${{ parameters.OptionalVSIXVersion }}" /p:WindowsAppSDKVersion="$(WindowsAppSDKPackageVersion)" /p:EnableExperimentalVSIXFeatures="${{ parameters.EnableExperimentalVSIXFeatures }}" /p:Deployment="Component" /binaryLogger:$(ob_outputDirectory)\binlogs\ComponentVSIX.build.binlog' @@ -165,7 +165,7 @@ steps: - task: CopyFiles@2 displayName: 'Stage unsigned VSIX files for publishing' inputs: - SourceFolder: '$(FoundationRepoPath)dev\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)' + SourceFolder: '$(FoundationRepoPath)dev\Templates\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)' Contents: '**/WindowsAppSDK.*.vsix' flattenFolders: true TargetFolder: '$(ob_outputDirectory)\VSIX' @@ -174,7 +174,7 @@ steps: - task: CopyFiles@2 displayName: 'Stage unsigned VSIX files for signing' inputs: - SourceFolder: '$(FoundationRepoPath)dev\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)' + SourceFolder: '$(FoundationRepoPath)dev\Templates\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)' Contents: '**/WindowsAppSDK.*.vsix' flattenFolders: true TargetFolder: '$(Agent.TempDirectory)/UnsignedVSIX' @@ -195,13 +195,13 @@ steps: - template: ${{variables['System.DefaultWorkingDirectory']}}\AzurePipelinesTemplates\WindowsAppSDK-PublishSymbol-Steps.yml@WindowsAppSDKConfig parameters: - SearchPattern: '$(FoundationRepoPath)dev\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)\**\WindowsAppSDK*.pdb' + SearchPattern: '$(FoundationRepoPath)dev\Templates\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)\**\WindowsAppSDK*.pdb' IsOfficial: ${{ parameters.IsOfficial }} - task: CopyFiles@2 displayName: 'Stage VSIX component JSONs' inputs: - SourceFolder: '$(FoundationRepoPath)dev\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)' + SourceFolder: '$(FoundationRepoPath)dev\Templates\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)' Contents: '**/WindowsAppSDK*.pdb' flattenFolders: true TargetFolder: '$(ob_outputDirectory)\symbols' @@ -209,7 +209,7 @@ steps: - task: CopyFiles@2 displayName: 'Stage VSIX component JSONs' inputs: - SourceFolder: '$(FoundationRepoPath)dev\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)' + SourceFolder: '$(FoundationRepoPath)dev\Templates\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)' Contents: '**/WindowsAppSDK.*.Component.json' flattenFolders: true TargetFolder: '$(ob_outputDirectory)' @@ -217,7 +217,7 @@ steps: - task: CopyFiles@2 displayName: 'Stage VSIX manifest' inputs: - SourceFolder: '$(FoundationRepoPath)dev\VSIX' + SourceFolder: '$(FoundationRepoPath)dev\Templates\VSIX' Contents: 'extension.manifest.json' flattenFolders: true TargetFolder: '$(ob_outputDirectory)' @@ -225,7 +225,7 @@ steps: - task: CopyFiles@2 displayName: 'Stage VSIX overview markdown' inputs: - SourceFolder: '$(FoundationRepoPath)dev\VSIX' + SourceFolder: '$(FoundationRepoPath)dev\Templates\VSIX' Contents: 'overview.md' flattenFolders: true TargetFolder: '$(ob_outputDirectory)' diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Publish-Stage.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Publish-Stage.yml new file mode 100644 index 0000000000..afd8fe1d3b --- /dev/null +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Publish-Stage.yml @@ -0,0 +1,53 @@ +parameters: +- name: pool + type: object + default: + vmImage: 'windows-latest' +- name: dependsOnStage + type: string + default: 'DotnetNewTemplates_Build' + +stages: +- stage: DotnetNewTemplates_Publish + displayName: 'Publish dotnet new templates to NuGet.org' + dependsOn: + - ${{ parameters.dependsOnStage }} + jobs: + - job: PublishNuGetOrg + displayName: 'Publish dotnet new template pack to NuGet.org' + pool: ${{ parameters.pool }} + variables: + ob_outputDirectory: '$(Pipeline.Workspace)\drop_DotnetNewTemplates_Build_PackDotnetNewTemplates' + ob_artifactBaseName: 'dotnet-new-template-pack' + dotnetTemplatesArtifactPath: '$(Pipeline.Workspace)\drop_DotnetNewTemplates_Build_PackDotnetNewTemplates' + steps: + - checkout: self + + - download: current + displayName: 'Download dotnet new template pack artifact' + artifact: 'drop_DotnetNewTemplates_Build_PackDotnetNewTemplates' + + - task: PowerShell@2 + displayName: 'Verify dotnet new template pack artifact exists' + inputs: + targetType: inline + script: | + $artifactPath = '$(dotnetTemplatesArtifactPath)' + if (-not (Test-Path $artifactPath)) { + throw "Expected artifact directory '$artifactPath' was not found in the downloaded drop artifact." + } + $packages = Get-ChildItem -Path $artifactPath -Filter *.nupkg -File -Recurse + if (-not $packages) { + throw "No .nupkg files were found under '$artifactPath'." + } + Write-Host "Found the following packages ready for publish:" + $packages | ForEach-Object { Write-Host " - $($_.FullName)" } + + - task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2 + displayName: 'Publish dotnet new templates to NuGet.org' + inputs: + command: 'push' + packagesToPush: '$(dotnetTemplatesArtifactPath)\*.nupkg' + verbosityPush: 'Detailed' + nuGetFeedType: 'external' + publishFeedCredentials: 'NugetOrg' diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Stages.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Stages.yml new file mode 100644 index 0000000000..5067844f4f --- /dev/null +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Stages.yml @@ -0,0 +1,113 @@ +parameters: +- name: pool + type: object + default: + vmImage: 'windows-latest' +- name: sourceSubdirectory + type: string + default: 'WindowsAppSDK' +- name: publishToInternalFeed + type: boolean + default: true +- name: SignOutput + type: boolean + default: false + +stages: +- stage: DotnetNewTemplates_Build + displayName: 'Build and pack dotnet new templates' + dependsOn: [] + jobs: + - job: PackDotnetNewTemplates + displayName: 'Pack dotnet new template NuGet' + dependsOn: [] + pool: ${{ parameters.pool }} + variables: + ob_outputDirectory: '$(Build.ArtifactStagingDirectory)\dotnet-new-template-pack' + templateProjectDir: '$(Build.SourcesDirectory)\${{ parameters.sourceSubdirectory }}\dev\Templates\Dotnet' + steps: + - checkout: self + + - task: PowerShell@2 + displayName: 'Ensure test certificate for signing' + inputs: + targetType: inline + workingDirectory: '$(Build.SourcesDirectory)\${{ parameters.sourceSubdirectory }}' + script: | + $repoRoot = "$(Build.SourcesDirectory)\${{ parameters.sourceSubdirectory }}" + $userDir = Join-Path $repoRoot '.user' + $pfxPath = Join-Path $userDir 'winappsdk.certificate.test.pfx' + $pwdPath = Join-Path $userDir 'winappsdk.certificate.test.pwd' + + if (-not (Test-Path $userDir)) { + New-Item -ItemType Directory -Path $userDir | Out-Null + } + + if ((Test-Path $pfxPath) -and (Test-Path $pwdPath)) { + Write-Host "Test certificate already exists at $pfxPath" + } + else { + $password = [Guid]::NewGuid().ToString() + $securePwd = ConvertTo-SecureString -String $password -Force -AsPlainText + $subject = 'CN=WindowsAppSDK Test Certificate' + $cert = New-SelfSignedCertificate -Type CodeSigningCert -Subject $subject -KeyExportPolicy Exportable -KeyAlgorithm RSA -KeyLength 2048 -CertStoreLocation 'Cert:\CurrentUser\My' + Export-PfxCertificate -Cert $cert -FilePath $pfxPath -Password $securePwd | Out-Null + Set-Content -Path $pwdPath -Value $password -NoNewline + Write-Host "Created test certificate at $pfxPath" + } + + - task: UseDotNet@2 + displayName: 'Use .NET SDK' + inputs: + packageType: sdk + version: '8.0.x' + + - task: PowerShell@2 + displayName: 'Verify template csproj exists before restore' + inputs: + targetType: inline + workingDirectory: '$(templateProjectDir)' + script: | + Write-Host "Current directory: $(Get-Location)" + $projectPath = Join-Path (Get-Location) 'WinAppSdk.CSharp.DotnetNewTemplates.csproj' + if (-not (Test-Path $projectPath)) { + throw "Template project missing at $projectPath" + } + Write-Host "Confirmed template project at $projectPath" + + - task: DotNetCoreCLI@2 + displayName: 'Restore template project' + inputs: + command: 'restore' + projects: '$(templateProjectDir)\WinAppSdk.CSharp.DotnetNewTemplates.csproj' + workingDirectory: '$(templateProjectDir)' + + - task: DotNetCoreCLI@2 + displayName: 'Pack dotnet new templates' + inputs: + command: 'pack' + packagesToPack: '$(templateProjectDir)\WinAppSdk.CSharp.DotnetNewTemplates.csproj' + arguments: '--configuration Release --no-restore --no-build /p:WindowsAppSDKBuildPipeline=1' + outputDir: '$(ob_outputDirectory)' + workingDirectory: '$(templateProjectDir)' + + - ${{ if eq(parameters.SignOutput, true) }}: + - template: AzurePipelinesTemplates/WindowsAppSDK-EsrpCodeSigning-Steps.yml@WindowsAppSDKConfig + parameters: + FolderPath: '$(ob_outputDirectory)' + Pattern: '*.nupkg' + KeyCode: 'CP-401405' + UseMinimatch: true + + - task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2 + displayName: 'Publish dotnet template pack to internal feed' + condition: and(succeeded(), eq('${{ parameters.publishToInternalFeed }}', 'true')) + inputs: + command: 'push' + packagesToPush: '$(ob_outputDirectory)\*.nupkg' + verbosityPush: 'Detailed' + nuGetFeedType: 'internal' + publishVstsFeed: 'ProjectReunion/Project.Reunion.nuget.internal' + allowPackageConflicts: true + + diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Test-Stage.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Test-Stage.yml new file mode 100644 index 0000000000..2b88af3441 --- /dev/null +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Test-Stage.yml @@ -0,0 +1,74 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# +# Stage template: Smoke-test dotnet new templates by scaffolding and building +# each C# project template and all item templates. +# +# This stage runs after DotnetNewTemplates_Build in the main build pipeline +# (WindowsAppSDK-DotnetNewTemplates.yml). It downloads the .nupkg artifact +# produced by the build stage and passes it to Test-DotnetNewTemplates.ps1. + +parameters: +- name: pool + type: object + default: + vmImage: 'windows-latest' +- name: sourceSubdirectory + type: string + default: 'WindowsAppSDK' +- name: dependsOnStage + type: string + default: 'DotnetNewTemplates_Build' +- name: platforms + type: object + default: + - x64 +- name: dotnetSdkVersion + type: string + default: '8.0.x' + +stages: +- stage: DotnetNewTemplates_Test + displayName: 'Smoke-test dotnet new templates' + dependsOn: + - ${{ parameters.dependsOnStage }} + jobs: + - job: TestDotnetNewTemplates + displayName: 'Scaffold and build dotnet new templates' + pool: ${{ parameters.pool }} + timeoutInMinutes: 60 + variables: + ob_outputDirectory: '$(Build.ArtifactStagingDirectory)\test-results' + templateArtifactDir: '$(Pipeline.Workspace)\drop_DotnetNewTemplates_Build_PackDotnetNewTemplates' + steps: + - checkout: self + + - download: current + displayName: 'Download template pack artifact' + artifact: 'drop_DotnetNewTemplates_Build_PackDotnetNewTemplates' + + - task: UseDotNet@2 + displayName: 'Use .NET SDK ${{ parameters.dotnetSdkVersion }}' + inputs: + packageType: sdk + version: '${{ parameters.dotnetSdkVersion }}' + + - task: NuGetAuthenticate@1 + displayName: 'Authenticate NuGet feeds' + + - task: PowerShell@2 + displayName: 'Run template smoke tests' + inputs: + targetType: inline + workingDirectory: '$(Build.SourcesDirectory)\${{ parameters.sourceSubdirectory }}' + script: | + $package = Get-ChildItem -Path '$(templateArtifactDir)' -Filter 'Microsoft.WindowsAppSDK*.nupkg' -Recurse | Select-Object -First 1 + if (-not $package) { + throw "No template .nupkg found under '$(templateArtifactDir)'" + } + Write-Host "Using template package: $($package.FullName)" + $platforms = '${{ join(',', parameters.platforms) }}' -split ',' + & '$(Build.SourcesDirectory)\${{ parameters.sourceSubdirectory }}\dev\Templates\Dotnet\Test-DotnetNewTemplates.ps1' ` + -PackagePath $package.FullName ` + -Platforms $platforms ` + -SkipAppLaunch diff --git a/build/WindowsAppSDK-DotnetNewTemplates-Publish.yml b/build/WindowsAppSDK-DotnetNewTemplates-Publish.yml new file mode 100644 index 0000000000..8a155ae0aa --- /dev/null +++ b/build/WindowsAppSDK-DotnetNewTemplates-Publish.yml @@ -0,0 +1,100 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# +# Standalone (non-OneBranch) pipeline for publishing dotnet new templates to NuGet.org. +# This pipeline is separate from the OneBranch build pipeline because OneBranch agents +# block outbound internet access, which prevents pushing packages to NuGet.org. +# +# Usage: +# 1. Run the OneBranch build pipeline (WindowsAppSDK-DotnetNewTemplates.yml) first. +# 2. Note the build ID from that run. +# 3. Run this pipeline, providing the build ID as a parameter. + +trigger: none + +parameters: +- name: "BuildPipelineId" + displayName: "Build pipeline definition ID (from WindowsAppSDK-DotnetNewTemplates pipeline)" + type: number + default: 186691 +- name: "BuildRunId" + displayName: "Build run ID to download artifact from" + type: number +- name: "ArtifactName" + displayName: "Artifact name from the build pipeline" + type: string + default: 'drop_DotnetNewTemplates_Build_PackDotnetNewTemplates' + +variables: +- template: WindowsAppSDK-CommonVariables.yml + +pool: + vmImage: 'windows-latest' + +stages: +- stage: DotnetNewTemplates_Approval + displayName: 'Approve NuGet.org publish' + jobs: + - job: WaitForPublishApproval + displayName: 'Manual Approval' + pool: server + timeoutInMinutes: 1440 + steps: + - task: ManualValidation@0 + displayName: 'Verify artifacts before NuGet.org publish' + timeoutInMinutes: 1440 + inputs: + notifyUsers: '' + instructions: | + Please verify the .nupkg in the ${{ parameters.ArtifactName }} folder before continuing the publish to NuGet.org: + https://dev.azure.com/microsoft/ProjectReunion/_build/results?buildId=${{ parameters.BuildRunId }}&view=artifacts&pathAsName=false&type=publishedArtifacts + +- stage: DotnetNewTemplates_Publish + displayName: 'Publish dotnet new templates to NuGet.org' + dependsOn: + - DotnetNewTemplates_Approval + jobs: + - job: PublishNuGetOrg + displayName: 'Publish dotnet new template pack to NuGet.org' + pool: + vmImage: 'windows-latest' + variables: + dotnetTemplatesArtifactPath: '$(Pipeline.Workspace)\BuildArtifact' + steps: + - checkout: none + + - task: DownloadPipelineArtifact@2 + displayName: 'Download dotnet new template pack artifact' + inputs: + source: 'specific' + project: '$(System.TeamProjectId)' + pipeline: ${{ parameters.BuildPipelineId }} + runVersion: 'specific' + runId: ${{ parameters.BuildRunId }} + artifact: '${{ parameters.ArtifactName }}' + targetPath: '$(dotnetTemplatesArtifactPath)' + + - task: PowerShell@2 + displayName: 'Verify dotnet new template pack artifact exists' + inputs: + targetType: inline + script: | + $artifactPath = '$(dotnetTemplatesArtifactPath)' + if (-not (Test-Path $artifactPath)) { + throw "Expected artifact directory '$artifactPath' was not found." + } + $packages = Get-ChildItem -Path $artifactPath -Filter *.nupkg -File -Recurse + if (-not $packages) { + throw "No .nupkg files were found under '$artifactPath'." + } + Write-Host "Found the following packages ready for publish:" + $packages | ForEach-Object { Write-Host " - $($_.FullName)" } + + - task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2 + displayName: 'Publish dotnet new templates to NuGet.org' + inputs: + command: 'push' + packagesToPush: '$(dotnetTemplatesArtifactPath)\*.nupkg' + verbosityPush: 'Detailed' + nuGetFeedType: 'external' + publishFeedCredentials: 'NugetOrg' diff --git a/build/WindowsAppSDK-DotnetNewTemplates.yml b/build/WindowsAppSDK-DotnetNewTemplates.yml new file mode 100644 index 0000000000..537db0d703 --- /dev/null +++ b/build/WindowsAppSDK-DotnetNewTemplates.yml @@ -0,0 +1,124 @@ +##################################################################################################################################### +# OneBranch Pipelines - Official # +##################################################################################################################################### +# # +# This pipeline was created by EasyStart from a sample located at: # +# https://aka.ms/obpipelines/easystart/samples # +# # +# Windows Undocked Wiki: https://www.osgwiki.com/wiki/Windows_Undocked_Template # +# General OB Documentation: https://aka.ms/obpipelines # +# Build MSBuild project: https://dev.azure.com/onebranch/OneBranch/_wiki/wikis/OneBranch.wiki/6045/Build-MSBuild-project # +# Yaml Schema: https://aka.ms/obpipelines/yaml/schema # +# Retail Tasks: https://aka.ms/obpipelines/tasks # +# Support: https://aka.ms/onebranchsup # +# # +##################################################################################################################################### + +name: $(version) + +# https://aka.ms/obpipelines/triggers +trigger: none + +parameters: +- name: "PublishDotnetNewTemplatesToInternalFeed" + displayName: "Publish dotnet new templates to internal feed" + type: boolean + default: false +- name: "SignOutput" + displayName: "Sign the NuGet package with ESRP" + type: boolean + default: true +variables: +- template: AzurePipelinesTemplates\WindowsAppSDK-Versions.yml@WindowsAppSDKVersionConfig +- template: WindowsAppSDK-CommonVariables.yml + +resources: + repositories: + - repository: templates + type: git + name: OneBranch.Pipelines/GovernedTemplates + ref: refs/heads/main + - repository: WindowsAppSDKConfig + type: git + name: ProjectReunion/WindowsAppSDKConfig + ref: refs/heads/main + - repository: WindowsAppSDKVersionConfig + type: git + name: ProjectReunion/WindowsAppSDKConfig + ref: refs/heads/main + +extends: + template: v2/Microsoft.NonOfficial.yml@templates # https://aka.ms/obpipelines/templates + parameters: + featureFlags: + EnableCDPxPAT: false + WindowsHostVersion: + Version: 2022 + Network: R1 + + platform: + name: 'windows_undocked' # windows undocked + + cloudvault: # Please refer the wiki for more information: https://aka.ms/obpipelines/cloudvault + enabled: false + + globalSdl: # Refer the wiki for more options in this parameter: https://aka.ms/obpipelines/sdl + tsa: + enabled: $(TsaEnabled) # onebranch publish all sdl results to TSA. If TSA is disabled all SDL tools will forced into 'break' build mode. Please provide TSAOptions.json. + isNativeCode: false #TODO turn back on when bug in CheckCFlags2.exe is fixed + suppression: + suppressionFile: $(Build.SourcesDirectory)\.gdn\OneBranch.gdnsuppress + asyncSdl: # https://aka.ms/obpipelines/asyncsdl + enabled: false + psscriptanalyzer: + enable: true + break: true + tsandjs: + enabled: true + break: true + python: + enabled: true + break: true + credscan: + enable: true + break: true + policheck: + enable: true + break: true + binskim: + enabled: true + break: true + analyzeTargetGlob: $(BinskimExclusionForFoundationRepo) + prefast: + enabled: false + break: true + logRootDirectory: '$(Build.SourcesDirectory)' + # Use "severity: 'Warning'" to be more sensitive, break on Warnings+Errors. + # Use "severity: 'Note'" to be even more sensitive, break on Notes+Warnings+Errors. + # Use "severity: 'Default'" to get back to default, i.e., break on Errors. Can't get less sensitive than that. + severity: Default + # Use "exclusionsFile: <>" to apply a local exclusion file. + apiscan: + # We will enable APIScan on a per-job basis downstream as needed. + enabled: false + # TODO: Once we've cleared away all existing errors, consider setting this to true. + break: false + + stages: + - template: AzurePipelinesTemplates\WindowsAppSDK-DotnetNewTemplates-Stages.yml@self + parameters: + pool: + type: windows + publishToInternalFeed: ${{ parameters.PublishDotnetNewTemplatesToInternalFeed }} + SignOutput: ${{ parameters.SignOutput }} + + - template: AzurePipelinesTemplates\WindowsAppSDK-DotnetNewTemplates-Test-Stage.yml@self + parameters: + pool: + type: windows + dependsOnStage: 'DotnetNewTemplates_Build' + + # NuGet.org publishing is handled by the separate non-OneBranch pipeline: + # WindowsAppSDK-DotnetNewTemplates-Publish.yml + # OneBranch agents block outbound internet, so a standalone pipeline with + # standard Azure-hosted agents is used for the NuGet.org push. diff --git a/build/WindowsAppSDK-TDBuild.yml b/build/WindowsAppSDK-TDBuild.yml index e38ddc7856..f7a82fb963 100644 --- a/build/WindowsAppSDK-TDBuild.yml +++ b/build/WindowsAppSDK-TDBuild.yml @@ -22,7 +22,7 @@ jobs: parameters: GitAction: ${{ parameters.GitAction }} ResourceFilePath: | - dev\VSIX\Extension\Cpp\Common\VSPackage.resx - dev\VSIX\Extension\Cs\Common\VSPackage.resx + dev\Templates\VSIX\Extension\Cpp\Common\VSPackage.resx + dev\Templates\VSIX\Extension\Cs\Common\VSPackage.resx dev\Interop\StoragePickers\Strings\StoragePickers.resw teamId: $(TdBuildTeamIDVSIX) diff --git a/dev/Templates/Directory.Build.props b/dev/Templates/Directory.Build.props new file mode 100644 index 0000000000..e8f8c87f61 --- /dev/null +++ b/dev/Templates/Directory.Build.props @@ -0,0 +1,37 @@ + + + + + + + 2.0.230706.1 + 10.0.26100.4654 + 1.0.220914.1 + + 1.0.0-preview1 + Standalone + + true + + + false + + + + + $(MSBuildThisFileDirectory)..\..\ + $(MSBuildThisFileDirectory)Source\ + $(TemplateSourceDir)ItemTemplates\ + $(TemplateSourceDir)ProjectTemplates\ + + diff --git a/dev/Templates/Dotnet/Directory.Build.props b/dev/Templates/Dotnet/Directory.Build.props new file mode 100644 index 0000000000..1125e90889 --- /dev/null +++ b/dev/Templates/Dotnet/Directory.Build.props @@ -0,0 +1,5 @@ + + + + + diff --git a/dev/Templates/Dotnet/README.md b/dev/Templates/Dotnet/README.md new file mode 100644 index 0000000000..3a6e849451 --- /dev/null +++ b/dev/Templates/Dotnet/README.md @@ -0,0 +1,160 @@ +# Windows App SDK WinUI 3 C# Templates + +Official WinUI 3 project and item templates for the +[Windows App SDK](https://learn.microsoft.com/windows/apps/windows-app-sdk/), +designed for use with the .NET CLI (`dotnet new`). This template pack provides +the same starting points available in Visual Studio — blank apps, navigation +views, MVVM scaffolding, tab-view shells, class libraries, unit test projects, +and common WinUI UI items — right from the command line. + +`dotnet run` launches the generated app with full MSIX package identity, so +features that require it (notifications, background tasks, Windows AI APIs, +etc.) work the same as they would in a Visual Studio F5 deploy. + +## Installation + +```shell +dotnet new install Microsoft.WindowsAppSDK.WinUI.CSharp.Templates +``` + +## Available Templates + +### Project Templates + +Get below list via `dotnet new list winui` + +| Short Name | Description | +|-------------------|--------------------------------------------------------------------------| +| `winui` | Minimal WinUI 3 blank app with MSIX packaging. Start here if unsure | +| `winui-mvvm` | WinUI 3 MVVM app using `CommunityToolkit.Mvvm` | +| `winui-navview` | WinUI 3 NavigationView starter app with MSIX packaging | +| `winui-tabview` | WinUI 3 TabView starter app with MSIX packaging | +| `winui-lib` | WinUI 3 class library for sharing UI components | +| `winui-unittest` | WinUI 3 packaged test app configured for MSTest | + +Each `winui-*` short name also has a `winui3-*` alias (e.g. `winui3-mvvm`). + +### Item Templates + +| Short Name | Description | +|----------------------------|----------------------------------------------------------| +| `winui-page` | WinUI 3 Page (XAML + code-behind) | +| `winui-window` | WinUI 3 Window (XAML + code-behind) | +| `winui-usercontrol` | WinUI 3 UserControl (XAML + code-behind) | +| `winui-templatedcontrol` | WinUI 3 templated control | +| `winui-resourcedictionary` | WinUI 3 ResourceDictionary | +| `winui-resw` | RESW resources file for localized strings | +| `winui-dialog` | WinUI 3 ContentDialog (XAML + code-behind) | + +Item templates are context-aware and only surface when `dotnet new` is executed +inside a WinUI project folder or when `--project` points to one. + +## Quick Start + +### Quickstart a new WinUI 3 APP + +```powershell +dotnet new winui -n MyApp +cd MyApp + +# dotnet build +dotnet run +``` + +`dotnet run` registers a loose-layout MSIX, gives the app package identity, +and launches it via AUMID activation — equivalent to F5 in Visual Studio. + +### Add items to an existing project + +```powershell +dotnet new winui-page -n SettingsPage --project .\MyApp.csproj +dotnet new winui-usercontrol -n ProfileCard --project .\MyApp.csproj +dotnet new winui-window -n SecondaryWindow --project .\MyApp.csproj +dotnet new winui-dialog -n ConfirmDialog --project .\MyApp.csproj +``` + +### Choosing a Target Framework + +Generated projects target `net{N}.0-windows10.0.26100.0`, where `{N}` is +selected at scaffold time via `--dotnet-version`: + +```shell +dotnet new winui --dotnet-version net8.0 -n MyApp +dotnet new winui --dotnet-version net9.0 -n MyApp +dotnet new winui --dotnet-version net10.0 -n MyApp +``` + +Supported choices: `net8.0`, `net9.0`, `net10.0`. If you omit +`--dotnet-version`, most templates default to `net10.0`; `winui-mvvm` matches +your installed .NET SDK. You can also edit `` in the +generated `.csproj` afterward. + +### Customizing `dotnet run` behavior + +Set any of these MSBuild properties inside a `` in the +generated `.csproj` to tweak how `dotnet run` launches the app: + +| Property | Default | Effect | +|--------------------------------|---------|------------------------------------------------------------------------------------------------| +| `EnableWinAppRunSupport` | `true` | Set to `false` to disable the packaged-launch integration and run unpackaged instead | +| `WinAppRunUseExecutionAlias` | `false` | For console apps — launches via `uap5:ExecutionAlias` so stdin/stdout stay in the terminal | +| `WinAppRunNoLaunch` | `false` | Register the package but don't launch (useful when attaching a different debugger first) | +| `WinAppRunDebugOutput` | `false` | Capture `OutputDebugString` and crash dumps; cannot be combined with another debugger | +| `WinAppLaunchArgs` | (empty) | Arguments passed to the app on launch (e.g. `--my-flag value`) | + +These properties are provided by the +[`Microsoft.Windows.SDK.BuildTools.WinApp`](https://www.nuget.org/packages/Microsoft.Windows.SDK.BuildTools.WinApp) +NuGet package, which is referenced automatically by the project templates. + +## Prerequisites + +- [.NET SDK](https://dotnet.microsoft.com/download) — `net8.0`, `net9.0`, or `net10.0` +- Windows 10 version 1809 (build 17763) or later +- **Developer Mode enabled** — required for `dotnet run` to register the loose-layout package. + Settings → System → For developers → Developer Mode → On. + +## Resources + +- [Windows App SDK documentation](https://learn.microsoft.com/windows/apps/windows-app-sdk/) +- [WinUI 3 documentation](https://learn.microsoft.com/windows/apps/winui/winui3/) +- [Release notes](https://github.com/microsoft/WindowsAppSDK/releases) +- [File an issue](https://github.com/microsoft/WindowsAppSDK/issues) + +## Contributing + +This template pack is built from the +[WindowsAppSDK](https://github.com/microsoft/WindowsAppSDK) repository under +`dev/Templates/Dotnet/`. The templates share the same XAML, code-behind, +and project files as the Visual Studio templates under +`dev/Templates/Source/ProjectTemplates/` and +`dev/Templates/Source/ItemTemplates/`, so there is only one copy to maintain. + +### Local Testing + +1. Pack the templates: + ```shell + dotnet pack dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj -c Release -o localpackages + ``` +2. Uninstall any previous version: + ```shell + dotnet new uninstall Microsoft.WindowsAppSDK.WinUI.CSharp.Templates + ``` +3. Install the local package: + ```shell + dotnet new install ./localpackages/Microsoft.WindowsAppSDK.WinUI.CSharp.Templates..nupkg + ``` + +For an automated end-to-end run that scaffolds, builds, and (optionally) +launches every template, use the included script: + +```powershell +.\dev\Templates\Dotnet\Test-DotnetNewTemplates.ps1 # full run +.\dev\Templates\Dotnet\Test-DotnetNewTemplates.ps1 -SkipAppLaunch # CI-friendly +``` + +### Validation Checklist + +- Run `dotnet pack` locally and `dotnet new install` to verify the local build. +- Run `dotnet new list winui` to review and confirm all templates are registered. +- Build generated projects for x64, x86, and ARM64 in Visual Studio or `dotnet build`. +- Test packaged deployments on Windows 10 version 1809 or later. diff --git a/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 b/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 new file mode 100644 index 0000000000..4eb1810e73 --- /dev/null +++ b/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 @@ -0,0 +1,488 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +<#+ +.SYNOPSIS +Validates the WinUI 3 dotnet new template pack end-to-end. + +.DESCRIPTION +Builds (or consumes) the template NuGet package, reinstalls it locally, and +scaffolds every WinUI 3 project and item template. Each generated project is +built, and app templates are optionally launched via dotnet run using the +recommended WinAppSDK self-contained properties. + +.PARAMETER PackagePath +Path to an existing Microsoft.WindowsAppSDK.WinUI.CSharp.Templates .nupkg. When +omitted, the script runs dotnet pack to create a package under -PackOutputDirectory. + +.PARAMETER Configuration +MSBuild configuration used for dotnet pack (default: Release). + +.PARAMETER PackOutputDirectory +Directory (relative to the repo root or absolute) where dotnet pack should emit +the .nupkg (default: localpackages). + +.PARAMETER Platforms +One or more MSBuild Platform values to validate for each template (default: x64). + +.PARAMETER SkipAppLaunch +Skips launching the generated WinUI apps at the end of the run. Builds still +occur. + +.PARAMETER RunTimeoutSeconds +If greater than zero, any WinUI apps launched at the end of the run are +automatically closed after the specified number of seconds. A value of 0 keeps +them open until you close each window manually (default). + +.PARAMETER KeepWorkingDirectory +Preserves the temporary scaffolding directory instead of deleting it. + +.EXAMPLE +PS> ./Test-DotnetNewTemplates.ps1 + +Builds the template pack, installs it, scaffolds every template, and runs app +templates for x64. + +.EXAMPLE +PS> ./Test-DotnetNewTemplates.ps1 -PackagePath C:/tmp/Templates.nupkg -Platforms x64,arm64 -SkipAppLaunch + +Installs the provided package and validates builds for both x64 and arm64 +without launching the apps. +#> +[CmdletBinding()] +param( + [Parameter()] + [string]$PackagePath, + + [Parameter()] + [string]$Configuration = 'Release', + + [Parameter()] + [string]$PackOutputDirectory = 'localpackages', + + [Parameter()] + [string[]]$Platforms = @('x64'), + + [Parameter()] + [switch]$SkipAppLaunch, + + [Parameter()] + [int]$RunTimeoutSeconds = 0, + + [Parameter()] + [switch]$KeepWorkingDirectory +) + +Set-StrictMode -Version 2.0 +$ErrorActionPreference = 'Stop' + +$script:exitCode = 0 +$results = New-Object System.Collections.Generic.List[object] +$appExecutables = New-Object System.Collections.Generic.List[object] +$dotnetPath = (Get-Command dotnet -ErrorAction Stop).Source +$workingRoot = $null +$originalNugetPackages = $env:NUGET_PACKAGES + +function Write-Step { + param([string]$Message) + Write-Host "`n>> $Message" -ForegroundColor Cyan +} + +function Add-Result { + param( + [string]$Template, + [string]$Platform, + [string]$Step, + [string]$Status, + [string]$Path + ) + + $results.Add([pscustomobject]@{ + Template = $Template + Platform = $Platform + Step = $Step + Status = $Status + Path = $Path + }) | Out-Null +} + +function Invoke-DotnetCommand { + param( + [string[]]$Arguments, + [string]$WorkingDirectory, + [string]$Description, + [switch]$CaptureOutput + ) + + $display = "dotnet {0}" -f ($Arguments -join ' ') + Write-Step "$display ($Description)" + + Push-Location -Path $WorkingDirectory + try { + # Temporarily allow stderr from native commands to avoid treating + # non-fatal messages (e.g. dotnet template update checks) as + # terminating errors. Real failures are caught via $LASTEXITCODE. + $savedEAP = $ErrorActionPreference + $ErrorActionPreference = 'Continue' + if ($CaptureOutput.IsPresent) { + $output = & $dotnetPath @Arguments 2>&1 + } + else { + & $dotnetPath @Arguments 2>&1 | ForEach-Object { Write-Host $_ } + } + $exitCode = $LASTEXITCODE + } + finally { + $ErrorActionPreference = $savedEAP + Pop-Location + } + + if ($exitCode -ne 0) { + throw "dotnet $Description failed with exit code $exitCode" + } + + if ($CaptureOutput.IsPresent) { + return $output + } +} + +function Get-TemplatePackagePath { + param( + [string]$PackagePathOverride, + [string]$ProjectPath, + [string]$Configuration, + [string]$PackOutputDirectory, + [string]$RepoRoot + ) + + if ($PackagePathOverride) { + if (-not (Test-Path -Path $PackagePathOverride -PathType Leaf)) { + throw "PackagePath '$PackagePathOverride' does not exist." + } + return (Resolve-Path -Path $PackagePathOverride).Path + } + + $packOutput = if ([System.IO.Path]::IsPathRooted($PackOutputDirectory)) { + $PackOutputDirectory + } + else { + Join-Path -Path $RepoRoot -ChildPath $PackOutputDirectory + } + + if (-not (Test-Path -Path $packOutput)) { + Write-Step "Creating pack output directory '$packOutput'" + New-Item -ItemType Directory -Path $packOutput -Force | Out-Null + } + + Invoke-DotnetCommand -Arguments @('pack', $ProjectPath, '-c', $Configuration, '-o', $packOutput) -WorkingDirectory $RepoRoot -Description "pack template project" + + $package = Get-ChildItem -Path $packOutput -Filter 'Microsoft.WindowsAppSDK*.nupkg' | Sort-Object LastWriteTime -Descending | Select-Object -First 1 + if (-not $package) { + throw "No template package was produced in '$packOutput'." + } + return $package.FullName +} + +function Remove-TemplatePackIfPresent { + param([string]$RepoRoot) + + try { + Invoke-DotnetCommand -Arguments @('new', 'uninstall', 'Microsoft.WindowsAppSDK.WinUI.CSharp.Templates') -WorkingDirectory $RepoRoot -Description 'uninstall existing template pack' + } + catch { + Write-Step 'Template pack uninstall reported no installed instances; continuing.' + } +} + +function Install-TemplatePack { + param( + [string]$RepoRoot, + [string]$PackageToInstall + ) + + Remove-StaleTemplateEnginePackage -PackagePath $PackageToInstall + Invoke-DotnetCommand -Arguments @('new', 'install', $PackageToInstall) -WorkingDirectory $RepoRoot -Description 'install template pack' +} + +function Remove-StaleTemplateEnginePackage { + param([string]$PackagePath) + + $packageFileName = [System.IO.Path]::GetFileName($PackagePath) + $templateEngineDir = Join-Path -Path $env:USERPROFILE -ChildPath '.templateengine\packages' + if (-not (Test-Path -Path $templateEngineDir -PathType Container)) { + return + } + + $cachedPackage = Join-Path -Path $templateEngineDir -ChildPath $packageFileName + if (Test-Path -Path $cachedPackage -PathType Leaf) { + Write-Step "Removing cached template package '$cachedPackage'" + Remove-Item -Path $cachedPackage -Force + } +} + +function Get-AppExecutablePath { + param( + [string]$ProjectPath, + [string]$ProjectName + ) + + $binFolder = Join-Path -Path $ProjectPath -ChildPath 'bin' + if (-not (Test-Path -Path $binFolder -PathType Container)) { + return $null + } + + $exe = Get-ChildItem -Path $binFolder -Filter "$ProjectName.exe" -Recurse -ErrorAction SilentlyContinue | Sort-Object LastWriteTime -Descending | Select-Object -First 1 + if ($exe) { + return $exe.FullName + } + return $null +} + +function Launch-AppExecutables { + param([int]$TimeoutSeconds) + + if ($appExecutables.Count -eq 0) { + Write-Step 'No WinUI executables were recorded for launch.' + return + } + + Write-Step 'Launching WinUI apps for manual validation...' + foreach ($entry in $appExecutables) { + Write-Host "Launching $($entry.Template) ($($entry.Platform)) -> $($entry.Path)" -ForegroundColor Yellow + try { + $process = Start-Process -FilePath $entry.Path -PassThru -WindowStyle Normal + if ($TimeoutSeconds -gt 0) { + $exited = $process.WaitForExit($TimeoutSeconds * 1000) + if (-not $exited) { + Write-Warning "App '$($entry.Path)' is still running after $TimeoutSeconds seconds; terminating process." + $process.Kill() + } + elseif ($process.ExitCode -ne 0) { + Write-Warning "App '$($entry.Path)' exited with code $($process.ExitCode)." + } + } + } + catch { + Write-Warning "Failed to start '$($entry.Path)': $_" + } + } + + if ($TimeoutSeconds -le 0) { + Write-Host "`nAll WinUI apps are running. Manually validate them and close each window when finished." -ForegroundColor Cyan + } +} + +function New-ProjectFromTemplate { + param( + [string]$TemplateShortName, + [string]$ProjectName, + [string]$OutputPath, + [string]$WorkingDirectory + ) + + if (-not (Test-Path -Path $OutputPath)) { + New-Item -ItemType Directory -Path $OutputPath -Force | Out-Null + } + + Invoke-DotnetCommand -Arguments @('new', $TemplateShortName, '-n', $ProjectName, '-o', $OutputPath, '--force', '--no-update-check') -WorkingDirectory $WorkingDirectory -Description "create $TemplateShortName template" +} + +function Test-WinUiProjectTemplate { + param( + [string]$TemplateShortName, + [ValidateSet('App', 'Library', 'Test')] + [string]$Kind, + [string]$Platform, + [string]$WorkingRoot + ) + + $projectName = '{0}_{1}_{2}' -f $TemplateShortName, $Platform, ([Guid]::NewGuid().ToString('N').Substring(0, 8)) + $projectPath = Join-Path -Path $WorkingRoot -ChildPath $projectName + New-ProjectFromTemplate -TemplateShortName $TemplateShortName -ProjectName $projectName -OutputPath $projectPath -WorkingDirectory $WorkingRoot + Add-Result -Template $TemplateShortName -Platform $Platform -Step 'create' -Status 'Succeeded' -Path $projectPath + + $projectFile = Join-Path -Path $projectPath -ChildPath "$projectName.csproj" + + switch ($Kind) { + 'App' { + Invoke-DotnetCommand -Arguments @('build', $projectFile, '-p:Configuration=Debug', "-p:Platform=$Platform", '-p:WindowsPackageType=None') -WorkingDirectory $projectPath -Description 'build app template' + Add-Result -Template $TemplateShortName -Platform $Platform -Step 'build' -Status 'Succeeded' -Path $projectFile + + $exePath = Get-AppExecutablePath -ProjectPath $projectPath -ProjectName $projectName + if ($exePath) { + $appExecutables.Add([pscustomobject]@{ + Template = $TemplateShortName + Platform = $Platform + Path = $exePath + }) | Out-Null + } + else { + Write-Warning "Unable to locate executable for template '$TemplateShortName' at '$projectPath'." + } + } + 'Library' { + Invoke-DotnetCommand -Arguments @('build', $projectFile, '-c', 'Debug') -WorkingDirectory $projectPath -Description 'build library template' + Add-Result -Template $TemplateShortName -Platform 'AnyCPU' -Step 'build' -Status 'Succeeded' -Path $projectFile + } + 'Test' { + Invoke-DotnetCommand -Arguments @('test', $projectFile, '-p:Configuration=Debug', "-p:Platform=$Platform") -WorkingDirectory $projectPath -Description 'test packaged test template' + Add-Result -Template $TemplateShortName -Platform $Platform -Step 'test' -Status 'Succeeded' -Path $projectFile + } + } +} + +function Test-ItemTemplates { + param( + [string]$WorkingRoot, + [string]$Platform + ) + + $hostName = 'ItemHost_{0}' -f ([Guid]::NewGuid().ToString('N').Substring(0, 8)) + $hostPath = Join-Path -Path $WorkingRoot -ChildPath $hostName + New-ProjectFromTemplate -TemplateShortName 'winui' -ProjectName $hostName -OutputPath $hostPath -WorkingDirectory $WorkingRoot + Add-Result -Template 'winui (item host)' -Platform $Platform -Step 'create' -Status 'Succeeded' -Path $hostPath + + $projectFile = Join-Path -Path $hostPath -ChildPath "$hostName.csproj" + $itemTemplates = @( + @{ ShortName = 'winui-page'; Name = 'SettingsPage' }, + @{ ShortName = 'winui-window'; Name = 'SecondaryWindow' }, + @{ ShortName = 'winui-usercontrol'; Name = 'ProfileCard' }, + @{ ShortName = 'winui-templatedcontrol'; Name = 'DashboardControl' }, + @{ ShortName = 'winui-resourcedictionary'; Name = 'Colors' }, + @{ ShortName = 'winui-resw'; Name = 'Strings' }, + @{ ShortName = 'winui-dialog'; Name = 'ConfirmationDialog' } + ) + + foreach ($item in $itemTemplates) { + $args = @('new', $item.ShortName, '-n', $item.Name, '--project', $projectFile, '--force', '--no-update-check') + Invoke-DotnetCommand -Arguments $args -WorkingDirectory $hostPath -Description "create item template $($item.ShortName)" + Add-Result -Template $item.ShortName -Platform $Platform -Step 'add item' -Status 'Succeeded' -Path $projectFile + } + + Invoke-DotnetCommand -Arguments @('build', $projectFile, '-p:Configuration=Debug', "-p:Platform=$Platform", '-p:WindowsPackageType=None') -WorkingDirectory $hostPath -Description 'build item host' + Add-Result -Template 'winui (item host)' -Platform $Platform -Step 'build' -Status 'Succeeded' -Path $projectFile +} + +try { + $repoRoot = (Resolve-Path -Path (Join-Path -Path $PSScriptRoot -ChildPath '..\..\..')).Path + $templateProject = Join-Path -Path $repoRoot -ChildPath 'dev\Templates\Dotnet\WinAppSdk.CSharp.DotnetNewTemplates.csproj' + $tempBase = Join-Path -Path ([System.IO.Path]::GetTempPath()) -ChildPath 'DotnetNewTemplateValidation' + $workingRoot = Join-Path -Path $tempBase -ChildPath ([Guid]::NewGuid().ToString('N')) + + if (Test-Path -Path $workingRoot) { + Remove-Item -Path $workingRoot -Recurse -Force + } + New-Item -ItemType Directory -Path $workingRoot -Force | Out-Null + + $nugetFallback = Join-Path -Path $workingRoot -ChildPath '.nuget' + New-Item -ItemType Directory -Path $nugetFallback -Force | Out-Null + $env:NUGET_PACKAGES = $nugetFallback + + # Disable the MSBuild server to avoid lingering processes on CI agents. + $env:DOTNET_CLI_DO_NOT_USE_MSBUILD_SERVER = 'true' + + # Generate a NuGet.config so scaffolded projects resolve packages from + # internal feeds only. The repo's NuGet.config has relative local-source + # paths (tools/nuget, localpackages) that don't exist under the temp + # directory, and nuget.org is blocked by OneBranch network isolation. + # We extract only the remote (https) feeds from the repo config. + $repoNugetConfig = Join-Path -Path $repoRoot -ChildPath 'NuGet.config' + $workNugetConfig = Join-Path -Path $workingRoot -ChildPath 'NuGet.config' + if (Test-Path -Path $repoNugetConfig -PathType Leaf) { + [xml]$srcConfig = Get-Content -Path $repoNugetConfig + $remoteSources = $srcConfig.configuration.packageSources.add | + Where-Object { $_.value -match '^https?://' } + + if (-not $remoteSources) { + throw "No remote (https) NuGet sources found in $repoNugetConfig." + } + + $configLines = @( + '' + '' + ' ' + ' ' + ) + foreach ($src in $remoteSources) { + $configLines += ' ' -f $src.key, $src.value + } + $configLines += @( + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + '' + ) + $configLines | Set-Content -Path $workNugetConfig -Encoding UTF8 + Write-Step "Generated NuGet.config with remote feeds in working directory" + } + + $packageToInstall = Get-TemplatePackagePath -PackagePathOverride $PackagePath -ProjectPath $templateProject -Configuration $Configuration -PackOutputDirectory $PackOutputDirectory -RepoRoot $repoRoot + Write-Step "Using template package '$packageToInstall'" + + Remove-TemplatePackIfPresent -RepoRoot $repoRoot + Install-TemplatePack -RepoRoot $repoRoot -PackageToInstall $packageToInstall + + $projectTemplates = @( + @{ ShortName = 'winui'; Kind = 'App' }, + @{ ShortName = 'winui-navview'; Kind = 'App' }, + @{ ShortName = 'winui-lib'; Kind = 'Library' }, + # winui-unittest is a self-hosted packaged test runner: tests run + # from inside UnitTestApp.OnLaunched (which sets DispatcherQueue and + # acquires package identity) via UnitTestClient.Run(), not via + # `dotnet test`. Validate it as an App so we still confirm the + # template builds cleanly. + @{ ShortName = 'winui-unittest'; Kind = 'App' } + ) + + foreach ($template in $projectTemplates) { + foreach ($platform in $Platforms) { + Test-WinUiProjectTemplate -TemplateShortName $template.ShortName -Kind $template.Kind -Platform $platform -WorkingRoot $workingRoot + } + } + + Test-ItemTemplates -WorkingRoot $workingRoot -Platform $Platforms[0] + + if ($appExecutables.Count -gt 0) { + if ($SkipAppLaunch.IsPresent) { + Write-Step 'SkipAppLaunch specified; WinUI apps were not started automatically.' + } + else { + Launch-AppExecutables -TimeoutSeconds $RunTimeoutSeconds + } + } + + Write-Step 'All templates validated successfully.' +} +catch { + $script:exitCode = 1 + Write-Error $_ +} +finally { + if ($null -ne $originalNugetPackages) { + $env:NUGET_PACKAGES = $originalNugetPackages + } + else { + Remove-Item Env:NUGET_PACKAGES -ErrorAction SilentlyContinue + } + + Remove-Item Env:DOTNET_CLI_DO_NOT_USE_MSBUILD_SERVER -ErrorAction SilentlyContinue + + if (-not $KeepWorkingDirectory.IsPresent -and (Test-Path -Path $workingRoot)) { + Write-Step "Cleaning up '$workingRoot'" + Remove-Item -Path $workingRoot -Recurse -Force -ErrorAction SilentlyContinue + } + elseif ($KeepWorkingDirectory.IsPresent -and $workingRoot) { + Write-Step "Preserving working directory at '$workingRoot'" + } + + if ($results.Count -gt 0) { + Write-Host "`nTemplate Validation Summary" -ForegroundColor Green + $results | Format-Table Template, Platform, Step, Status, Path -AutoSize | Out-String | Write-Host + } +} + +exit $script:exitCode \ No newline at end of file diff --git a/dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj b/dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj new file mode 100644 index 0000000000..e432695bf7 --- /dev/null +++ b/dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj @@ -0,0 +1,175 @@ + + + + + + net8.0 + false + disable + false + false + true + Template + Microsoft.WindowsAppSDK.WinUI.CSharp.Templates + 0.0.5-alpha + WinUI 3 C# Templates + Microsoft + Microsoft + Official WinUI 3 project and item templates. Install this pack to use dotnet new for different types of apps, class libraries, unit tests and common WinUI controls. + windows;winappsdk;winui;winui3;desktop;dotnet-new;templates;csharp + https://learn.microsoft.com/windows/apps/windows-app-sdk/ + https://github.com/microsoft/WindowsAppSDK + git + MIT + README.md + © Microsoft Corporation. All rights reserved. + false + See https://github.com/microsoft/WindowsAppSDK/releases for release notes. + true + $(NoWarn);NU5128;CS2008 + $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\..\..\localpackages')) + + + + + + + + + <_GitignoreSource>templates\gitignore.txt + + + + + + + + + + + + + + + + +(); +var commonExcludeNames = new HashSet(StringComparer.OrdinalIgnoreCase) { "bin", "obj" }; + +// Add one file -> one packed entry. Sets Pack/PackagePath so NuGet picks it up. +void Emit(string sourcePath, string packagePath) +{ + var item = new TaskItem(sourcePath); + item.SetMetadata("Pack", "true"); + item.SetMetadata("PackagePath", packagePath); + output.Add(item); +} + +// Recursively pack every file under fromDir into toRelRoot, optionally skipping +// files whose path relative to fromDir matches `skipRelative`. +void EmitTree(string fromDir, string toRelRoot, Func skipRelative = null) +{ + if (!Directory.Exists(fromDir)) { return; } + foreach (var file in Directory.EnumerateFiles(fromDir, "*", SearchOption.AllDirectories)) + { + string rel = file.Substring(fromDir.Length).TrimStart('\\', '/'); + if (skipRelative != null && skipRelative(rel)) { continue; } + Emit(file, toRelRoot + "/" + rel.Replace('\\', '/')); + } +} + +foreach (var t in Templates) +{ + string srcDir = t.GetMetadata("SourceDir"); + string configDir = t.GetMetadata("DotnetConfigDir"); + string baseName = t.GetMetadata("BaseName"); + string renameFrom = t.GetMetadata("RenameManifestFrom"); + string contentRoot = "content/" + t.ItemSpec; + + // Files in the Source tree that are VSIX-only sidecars (excluded from the dotnet-new pack). + // The Source-named manifest, if any, is excluded here and re-emitted under the reserved name below. + var sidecars = new HashSet(StringComparer.OrdinalIgnoreCase) + { + baseName + ".csproj", + baseName + ".ico", + baseName + ".png", + baseName + ".vstemplate", + }; + if (!string.IsNullOrEmpty(renameFrom)) { sidecars.Add(renameFrom); } + + // 1. Template source tree, minus bin/obj and the VSIX-only sidecars. + EmitTree(srcDir, contentRoot, rel => + { + var parts = rel.Split(new[] { '\\', '/' }, 2); + return commonExcludeNames.Contains(parts[0]) + || (parts.Length == 1 && sidecars.Contains(parts[0])); + }); + + // 2. Source-named manifest -> reserved Package.appxmanifest, if requested. + // An empty/unset RenameManifestFrom means the template has no manifest (e.g. class library) + // and is allowed. A non-empty value MUST resolve to a real file -- otherwise it's almost + // certainly a typo in templates.props that would silently ship a manifest-less template. + if (!string.IsNullOrEmpty(renameFrom)) + { + string manifestPath = Path.Combine(srcDir, renameFrom); + if (!File.Exists(manifestPath)) + { + Log.LogError( + "Template '{0}': RenameManifestFrom='{1}' but '{2}' does not exist. " + + "Fix the filename in templates.props, add the manifest under SourceDir, " + + "or clear RenameManifestFrom if this template has no manifest.", + t.ItemSpec, renameFrom, manifestPath); + continue; + } + Emit(manifestPath, contentRoot + "/Package.appxmanifest"); + } + + // 3. dotnet-new template configuration. + EmitTree(Path.Combine(configDir, ".template.config"), contentRoot + "/.template.config"); + + // 4. Shared .gitignore (one copy per template). + if (!string.IsNullOrEmpty(GitignoreSource) && File.Exists(GitignoreSource)) + { + Emit(GitignoreSource, contentRoot + "/gitignore.txt"); + } +} + +ExpandedItems = output.ToArray(); +]]> + + + + + + + + + + + + + + + + diff --git a/dev/Templates/Dotnet/templates/blank-app/.template.config/dotnetcli.host.json b/dev/Templates/Dotnet/templates/blank-app/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..481c8098eb --- /dev/null +++ b/dev/Templates/Dotnet/templates/blank-app/.template.config/dotnetcli.host.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "dotnetVersion": { + "longName": "dotnet-version", + "shortName": "tfm", + "description": "Base TFM for the WinUI project (for example net10.0)." + }, + "targetPlatformMinVersion": { + "longName": "target-platform-min-version", + "shortName": "tpmv", + "description": "Minimum supported Windows version." + }, + "publisherDn": { + "longName": "publisher-dn", + "shortName": "publisher", + "description": "Publisher distinguished name stored in Package.appxmanifest." + }, + "publisherDisplay": { + "longName": "publisher-display", + "shortName": "publisherName", + "description": "Publisher display name stored in Package.appxmanifest." + } + } +} diff --git a/dev/Templates/Dotnet/templates/blank-app/.template.config/icon.png b/dev/Templates/Dotnet/templates/blank-app/.template.config/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e450cb9b3bea5e6a01452434e66b5c289e97d6c GIT binary patch literal 13663 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Dotnet/templates/class-library/.template.config/ide.host.json b/dev/Templates/Dotnet/templates/class-library/.template.config/ide.host.json new file mode 100644 index 0000000000..2d4b488c9b --- /dev/null +++ b/dev/Templates/Dotnet/templates/class-library/.template.config/ide.host.json @@ -0,0 +1,19 @@ +{ + "icon": "icon.png", + "requiredComponents": [ + { + "id": "Microsoft.VisualStudio.Workload.ManagedDesktop", + "hostId": "vs", + "componentType": "setupComponent" + } + ], + "symbolInfo": [ + { + "id": "dotnetVersion", + "name": { + "text": "Framework" + }, + "isVisible": "true" + } + ] +} diff --git a/dev/Templates/Dotnet/templates/class-library/.template.config/template.json b/dev/Templates/Dotnet/templates/class-library/.template.config/template.json new file mode 100644 index 0000000000..d2091eac15 --- /dev/null +++ b/dev/Templates/Dotnet/templates/class-library/.template.config/template.json @@ -0,0 +1,106 @@ +{ + "$schema": "https://json.schemastore.org/template", + "author": "Microsoft", + "classifications": ["Windows", "WinUI", "Library"], + "tags": { + "language": "C#", + "type": "project" + }, + "identity": "Microsoft.WindowsAppSDK.WinUI.CSharp.ClassLibrary", + "groupIdentity": "Microsoft.WindowsAppSDK.WinUI.CSharp.ClassLibrary", + "name": "WinUI Class Library", + "shortName": ["winui-lib", "winui3-lib", "wasdk-classlib"], + "sourceName": "ProjectTemplate", + "defaultName": "WinUILibrary", + "description": "Creates a WinUI 3 class library for sharing UI components.", + "preferNameDirectory": true, + "constraints": { + "windows-only": { + "type": "os", + "args": "Windows" + }, + "sdk-version": { + "type": "sdk-version", + "args": [ "[8.0,)" ] + } + }, + "symbols": { + "safeProjectName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "safe_name", + "replaces": "$safeprojectname$" + }, + "projectName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$projectname$" + }, + "cliVersion": { + "type": "bind", + "binding": "host:dotnet-cli-version", + "defaultValue": "10.0.100" + }, + "autoDetectedTfm": { + "type": "generated", + "generator": "regex", + "datatype": "string", + "parameters": { + "source": "cliVersion", + "steps": [ + { + "regex": "^(\\d+)\\..*$", + "replacement": "net${1}.0" + } + ] + } + }, + "dotnetVersion": { + "type": "parameter", + "datatype": "choice", + "description": "Base target framework moniker (TFM) for the WinUI project. Defaults to the installed SDK version.", + "choices": [ + { "choice": "net8.0", "description": "Target .NET 8" }, + { "choice": "net9.0", "description": "Target .NET 9" }, + { "choice": "net10.0", "description": "Target .NET 10" } + ], + "defaultValue": "net10.0" + }, + "resolvedDotnetVersion": { + "type": "generated", + "generator": "coalesce", + "parameters": { + "sourceVariableName": "dotnetVersion", + "fallbackVariableName": "autoDetectedTfm" + }, + "replaces": "$DotNetVersion$" + } + }, + "sources": [ + { + "rename": { + "gitignore.txt": ".gitignore" + } + } + ], + "primaryOutputs": [ + { "path": "ProjectTemplate.csproj" } + ], + "forms": { + "safe_name": { + "identifier": "safe_name" + }, + "identity": { + "identifier": "identity" + } + }, + "postActions": [ + { + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true, + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [{ "text": "Run 'dotnet restore'" }] + } + ] +} diff --git a/dev/Templates/Dotnet/templates/gitignore.txt b/dev/Templates/Dotnet/templates/gitignore.txt new file mode 100644 index 0000000000..dd393563d9 --- /dev/null +++ b/dev/Templates/Dotnet/templates/gitignore.txt @@ -0,0 +1,54 @@ +## .NET / Visual Studio +[Bb]in/ +[Oo]bj/ +[Dd]ebug/ +[Rr]elease/ +.vs/ +*.user +*.suo +*.userosscache +*.sln.docstates +artifacts/ + +# Build logs +[Ll]og/ +[Ll]ogs/ +*.log +*.binlog + +# Test results +[Tt]est[Rr]esult*/ +*.trx +*.coverage +*.coveragexml + +# NuGet +*.nupkg +*.snupkg +*.nuget.props +*.nuget.targets +project.lock.json + +# MSIX packaging output +AppPackages/ +BundleArtifacts/ +*.msix +*.msixupload +*.appx +*.appxbundle +*.appxupload + +# Publish output +publish/ +*.pubxml +PublishScripts/ + +# Code analysis and tooling +_ReSharper*/ +*.DotSettings.user +*.dotCover +.idea/ + +# Generated files +Generated\ Files/ +*_wpftmp.csproj diff --git a/dev/Templates/Dotnet/templates/item-blank-page/.template.config/dotnetcli.host.json b/dev/Templates/Dotnet/templates/item-blank-page/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..07c0730f73 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-blank-page/.template.config/dotnetcli.host.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "rootNamespace": { + "longName": "root-namespace", + "shortName": "ns" + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-blank-page/.template.config/template.json b/dev/Templates/Dotnet/templates/item-blank-page/.template.config/template.json new file mode 100644 index 0000000000..80af991e23 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-blank-page/.template.config/template.json @@ -0,0 +1,62 @@ +{ + "$schema": "https://json.schemastore.org/template", + "author": "Microsoft", + "classifications": ["Windows", "WinUI", "Item", "Page"], + "tags": { + "language": "C#", + "type": "item" + }, + "identity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.Page", + "groupIdentity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.Page", + "name": "WinUI Blank Page (Item)", + "shortName": ["winui-page", "winui3-page"], + "sourceName": "BlankPage", + "defaultName": "BlankPage", + "description": "Adds a WinUI 3 Page with XAML markup and code-behind.", + "preferNameDirectory": false, + "symbols": { + "rootNamespace": { + "type": "bind", + "binding": "msbuild:RootNamespace", + "replaces": "$rootnamespace$", + "defaultValue": "AppNamespace", + "description": "Namespace for the generated item." + }, + "safeItemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "safe_name", + "replaces": "$safeitemname$" + }, + "itemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$itemname$" + }, + "fileInputName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$fileinputname$" + } + }, + "constraints": { + "winuiProject": { + "type": "project-capability", + "args": "CSharp & Msix" + } + }, + "primaryOutputs": [ + { "path": "BlankPage.xaml" }, + { "path": "BlankPage.xaml.cs" } + ], + "forms": { + "safe_name": { + "identifier": "safe_name" + }, + "identity": { + "identifier": "identity" + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-blank-window/.template.config/dotnetcli.host.json b/dev/Templates/Dotnet/templates/item-blank-window/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..f5ea9a9bd0 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-blank-window/.template.config/dotnetcli.host.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "rootNamespace": { + "longName": "root-namespace", + "shortName": "ns", + "description": "Namespace for the generated item." + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-blank-window/.template.config/template.json b/dev/Templates/Dotnet/templates/item-blank-window/.template.config/template.json new file mode 100644 index 0000000000..5845179f18 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-blank-window/.template.config/template.json @@ -0,0 +1,80 @@ +{ + "$schema": "https://json.schemastore.org/template", + "author": "Microsoft", + "classifications": ["Windows", "WinUI", "Item"], + "tags": { + "language": "C#", + "type": "item" + }, + "identity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.Window", + "groupIdentity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.Window", + "name": "WinUI Blank Window (Item)", + "shortName": ["winui-window", "winui3-window", "wasdk-item-blankwin"], + "sourceName": "BlankWindow", + "defaultName": "BlankWindow", + "description": "Adds a WinUI 3 Window with XAML markup and code-behind.", + "tags": { + "language": "C#", + "type": "item" + }, + "preferNameDirectory": false, + "constraints": { + "windows-only": { + "type": "os", + "args": "Windows" + }, + "csharp-only": { + "type": "project-capability", + "args": "CSharp" + }, + "sdk-version": { + "type": "sdk-version", + "args": [ "[8.0,)" ] + } + }, + "symbols": { + "rootNamespace": { + "type": "bind", + "binding": "msbuild:RootNamespace", + "replaces": "$rootnamespace$", + "defaultValue": "AppNamespace", + "description": "Namespace for the generated item." + }, + "safeItemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "safe_name", + "replaces": "$safeitemname$" + }, + "itemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$itemname$" + }, + "fileInputName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$fileinputname$" + } + }, + "constraints": { + "winuiProject": { + "type": "project-capability", + "args": "CSharp & Msix" + } + }, + "primaryOutputs": [ + { "path": "BlankWindow.xaml" }, + { "path": "BlankWindow.xaml.cs" } + ], + "forms": { + "safe_name": { + "identifier": "safe_name" + }, + "identity": { + "identifier": "identity" + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-content-dialog/.template.config/dotnetcli.host.json b/dev/Templates/Dotnet/templates/item-content-dialog/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..07c0730f73 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-content-dialog/.template.config/dotnetcli.host.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "rootNamespace": { + "longName": "root-namespace", + "shortName": "ns" + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-content-dialog/.template.config/template.json b/dev/Templates/Dotnet/templates/item-content-dialog/.template.config/template.json new file mode 100644 index 0000000000..b5ec18c922 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-content-dialog/.template.config/template.json @@ -0,0 +1,86 @@ +{ + "$schema": "https://json.schemastore.org/template", + "author": "Microsoft", + "classifications": ["Windows", "WinUI", "Item", "Dialog"], + "tags": { + "language": "C#", + "type": "item" + }, + "identity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.ContentDialog", + "groupIdentity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.ContentDialog", + "name": "WinUI Content Dialog (Item)", + "shortName": ["winui-dialog", "winui3-dialog"], + "sourceName": "ContentDialog", + "defaultName": "ContentDialog", + "description": "Adds a WinUI 3 ContentDialog with markup and code-behind.", + "preferNameDirectory": false, + "symbols": { + "rootNamespace": { + "type": "bind", + "binding": "msbuild:RootNamespace", + "replaces": "$rootnamespace$", + "defaultValue": "AppNamespace", + "description": "Namespace for the generated item." + }, + "safeItemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "safe_name", + "replaces": "$safeitemname$" + }, + "itemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$itemname$" + }, + "fileInputName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$fileinputname$" + }, + "contentDialogType": { + "type": "generated", + "generator": "constant", + "parameters": { + "value": "ContentDialog" + }, + "replaces": "__WINUI_CONTENT_DIALOG__" + }, + "contentDialogButtonClickEventArgsType": { + "type": "generated", + "generator": "constant", + "parameters": { + "value": "ContentDialogButtonClickEventArgs" + }, + "replaces": "__WINUI_CONTENT_DIALOG_BUTTON_CLICK_EVENT_ARGS__" + }, + "defaultContentDialogStyleResourceKey": { + "type": "generated", + "generator": "constant", + "parameters": { + "value": "DefaultContentDialogStyle" + }, + "replaces": "__WINUI_DEFAULT_CONTENT_DIALOG_STYLE__" + } + }, + "constraints": { + "winuiProject": { + "type": "project-capability", + "args": "CSharp & Msix" + } + }, + "primaryOutputs": [ + { "path": "ContentDialog.xaml" }, + { "path": "ContentDialog.xaml.cs" } + ], + "forms": { + "safe_name": { + "identifier": "safe_name" + }, + "identity": { + "identifier": "identity" + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-resource-dictionary/.template.config/dotnetcli.host.json b/dev/Templates/Dotnet/templates/item-resource-dictionary/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..07c0730f73 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-resource-dictionary/.template.config/dotnetcli.host.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "rootNamespace": { + "longName": "root-namespace", + "shortName": "ns" + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-resource-dictionary/.template.config/template.json b/dev/Templates/Dotnet/templates/item-resource-dictionary/.template.config/template.json new file mode 100644 index 0000000000..85a6963a3e --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-resource-dictionary/.template.config/template.json @@ -0,0 +1,69 @@ +{ + "$schema": "https://json.schemastore.org/template", + "author": "Microsoft", + "classifications": ["Windows", "WinUI", "Item", "Resource"], + "tags": { + "language": "C#", + "type": "item" + }, + "identity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.ResourceDictionary", + "groupIdentity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.ResourceDictionary", + "name": "WinUI Resource Dictionary (Item)", + "shortName": ["winui-resourcedictionary", "winui3-resourcedictionary"], + "sourceName": "ResourceDictionary", + "defaultName": "ResourceDictionary", + "description": "Adds a WinUI 3 ResourceDictionary for sharing styles and resources.", + "preferNameDirectory": false, + "symbols": { + "rootNamespace": { + "type": "bind", + "binding": "msbuild:RootNamespace", + "replaces": "$rootnamespace$", + "defaultValue": "AppNamespace", + "description": "Namespace for the generated item." + }, + "safeItemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "safe_name", + "replaces": "$safeitemname$" + }, + "itemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$itemname$" + }, + "fileInputName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$fileinputname$" + }, + "resourceDictionaryType": { + "type": "generated", + "generator": "constant", + "parameters": { + "value": "ResourceDictionary" + }, + "replaces": "__WINUI_RESOURCE_DICTIONARY__" + } + }, + "constraints": { + "winuiProject": { + "type": "project-capability", + "args": "CSharp & Msix" + } + }, + "primaryOutputs": [ + { "path": "ResourceDictionary.xaml" } + ], + "forms": { + "safe_name": { + "identifier": "safe_name" + }, + "identity": { + "identifier": "identity" + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-resw/.template.config/dotnetcli.host.json b/dev/Templates/Dotnet/templates/item-resw/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..94f4ee1014 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-resw/.template.config/dotnetcli.host.json @@ -0,0 +1,3 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host" +} diff --git a/dev/Templates/Dotnet/templates/item-resw/.template.config/template.json b/dev/Templates/Dotnet/templates/item-resw/.template.config/template.json new file mode 100644 index 0000000000..f1bfb76767 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-resw/.template.config/template.json @@ -0,0 +1,63 @@ +{ + "$schema": "https://json.schemastore.org/template", + "author": "Microsoft", + "classifications": ["Windows", "WinUI", "Item", "Resource"], + "tags": { + "language": "C#", + "type": "item" + }, + "identity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.Resw", + "groupIdentity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.Resw", + "name": "WinUI Resources File (Item)", + "shortName": ["winui-resw", "winui3-resw"], + "sourceName": "Resources", + "defaultName": "Resources", + "description": "Adds a RESW resources file for localized strings.", + "preferNameDirectory": false, + "symbols": { + "safeItemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "safe_name", + "replaces": "$safeitemname$" + }, + "itemName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$itemname$" + }, + "fileInputName": { + "type": "derived", + "valueSource": "name", + "valueTransform": "identity", + "replaces": "$fileinputname$" + } + }, + "constraints": { + "winuiProject": { + "type": "project-capability", + "args": "CSharp & Msix" + } + }, + "sources": [ + { + "modifiers": [ + { + "copyOnly": [ "**/*.resw" ] + } + ] + } + ], + "primaryOutputs": [ + { "path": "Resources.resw" } + ], + "forms": { + "safe_name": { + "identifier": "safe_name" + }, + "identity": { + "identifier": "identity" + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-templated-control/.template.config/dotnetcli.host.json b/dev/Templates/Dotnet/templates/item-templated-control/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..07c0730f73 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-templated-control/.template.config/dotnetcli.host.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "rootNamespace": { + "longName": "root-namespace", + "shortName": "ns" + } + } +} diff --git a/dev/Templates/Dotnet/templates/item-templated-control/.template.config/template.json b/dev/Templates/Dotnet/templates/item-templated-control/.template.config/template.json new file mode 100644 index 0000000000..c851c3ce83 --- /dev/null +++ b/dev/Templates/Dotnet/templates/item-templated-control/.template.config/template.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://json.schemastore.org/template", + "author": "Microsoft", + "classifications": ["Windows", "WinUI", "Item", "Control"], + "tags": { + "language": "C#", + "type": "item" + }, + "identity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.TemplatedControl", + "groupIdentity": "Microsoft.WindowsAppSDK.WinUI.CSharp.Item.TemplatedControl", + "name": "WinUI Templated Control (Item)", + "shortName": ["winui-templatedcontrol", "winui3-templatedcontrol"], + "sourceName": "CustomControl", + "defaultName": "CustomControl", + "description": "Adds a WinUI 3 templated control. By default also creates Themes\\Generic.xaml with a minimal default style. If your project already has a Themes\\Generic.xaml, pass --IncludeDefaultStyle false and manually add a + + diff --git a/dev/VSIX/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.csproj b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.csproj similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.csproj rename to dev/Templates/Source/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.csproj diff --git a/dev/VSIX/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.ico b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.ico similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.ico rename to dev/Templates/Source/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.ico diff --git a/dev/VSIX/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.vstemplate b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.vstemplate similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.vstemplate rename to dev/Templates/Source/ItemTemplates/Neutral/CSharp/TemplatedControl/WinUI.Neutral.Cs.TemplatedControl.vstemplate diff --git a/dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml similarity index 90% rename from dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml rename to dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml index a4827ebfaa..2266654ed8 100644 --- a/dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml +++ b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml @@ -1,5 +1,5 @@ - - + diff --git a/dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml.cs b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml.cs similarity index 90% rename from dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml.cs rename to dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml.cs index 3134a41a44..ff7f2afb3e 100644 --- a/dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml.cs +++ b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/UserControl.xaml.cs @@ -18,7 +18,7 @@ namespace $rootnamespace$; -public sealed partial class $safeitemname$ : UserControl +public sealed partial class $safeitemname$ : __WINUI_USERCONTROL__ { public $safeitemname$() { diff --git a/dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.csproj b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.csproj similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.csproj rename to dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.csproj diff --git a/dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.ico b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.ico similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.ico rename to dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.ico diff --git a/dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.vstemplate b/dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.vstemplate similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.vstemplate rename to dev/Templates/Source/ItemTemplates/Neutral/CSharp/UserControl/WinUI.Neutral.Cs.UserControl.vstemplate diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.cpp b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.cpp similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.cpp rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.cpp diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.h b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.h similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.h rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.h diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.idl b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.idl similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.idl rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.idl diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.xaml b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.xaml similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.xaml rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/BlankPage.xaml diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.csproj b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.csproj similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.csproj rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.csproj diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.ico b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.ico similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.ico rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.ico diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.vstemplate b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.vstemplate similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.vstemplate rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/BlankPage/WinUI.Neutral.CppWinRT.BlankPage.vstemplate diff --git a/dev/VSIX/ItemTemplates/Neutral/CSharp/ResourceDictionary/ResourceDictionary.xaml b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/ResourceDictionary.xaml similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CSharp/ResourceDictionary/ResourceDictionary.xaml rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/ResourceDictionary.xaml diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.csproj b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.csproj similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.csproj rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.csproj diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.ico b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.ico similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.ico rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.ico diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.vstemplate b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.vstemplate similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.vstemplate rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/ResourceDictionary/WinUI.Neutral.CppWinRT.ResourceDictionary.vstemplate diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/Resw/Resources.resw b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/Resw/Resources.resw similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/Resw/Resources.resw rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/Resw/Resources.resw diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.csproj b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.csproj similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.csproj rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.csproj diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.ico b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.ico similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.ico rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.ico diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.vstemplate b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.vstemplate similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.vstemplate rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/Resw/WinUI.Neutral.CppWinRT.Resw.vstemplate diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.cpp b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.cpp similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.cpp rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.cpp diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.h b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.h similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.h rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.h diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.idl b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.idl similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.idl rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/TemplatedControl.idl diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.csproj b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.csproj similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.csproj rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.csproj diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.ico b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.ico similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.ico rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.ico diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.vstemplate b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.vstemplate similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.vstemplate rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/TemplatedControl/WinUI.Neutral.CppWinRT.TemplatedControl.vstemplate diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.cpp b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.cpp similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.cpp rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.cpp diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.h b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.h similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.h rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.h diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.idl b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.idl similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.idl rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.idl diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.xaml b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.xaml similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.xaml rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/UserControl.xaml diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.csproj b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.csproj similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.csproj rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.csproj diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.ico b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.ico similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.ico rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.ico diff --git a/dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.vstemplate b/dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.vstemplate similarity index 100% rename from dev/VSIX/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.vstemplate rename to dev/Templates/Source/ItemTemplates/Neutral/CppWinRT/UserControl/WinUI.Neutral.CppWinRT.UserControl.vstemplate diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/Class1.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/Class1.cs similarity index 63% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/Class1.cs rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/Class1.cs index 805fc0ab24..26970a3c16 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/Class1.cs +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/Class1.cs @@ -1,9 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/ProjectTemplate.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/ProjectTemplate.csproj similarity index 77% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/ProjectTemplate.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/ProjectTemplate.csproj index 5440c6391b..15d7a5bc50 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/ProjectTemplate.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/ProjectTemplate.csproj @@ -1,10 +1,11 @@ - $DotNetVersion$-windows10.0.19041.0 + $DotNetVersion$-windows10.0.26100.0 10.0.17763.0 $safeprojectname$ true false + enable false \ No newline at end of file diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.csproj similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.csproj diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.png rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.vstemplate similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.vstemplate rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/ClassLibrary/WinUI.Desktop.Cs.ClassLibrary.vstemplate diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/App.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/App.xaml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/App.xaml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/App.xaml diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/App.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/App.xaml.cs new file mode 100644 index 0000000000..8470b455b7 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/App.xaml.cs @@ -0,0 +1,57 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$; + +/// +/// Provides application-specific behavior to supplement the default Application class. +/// +public partial class App : Application +{ + /// + /// The main application window. Use App.Window from any class that needs + /// the window reference (for dialogs, pickers, interop, etc.). + /// + public static Window Window { get; private set; } = null!; + + /// + /// The UI thread dispatcher. Use App.DispatcherQueue to marshal calls + /// to the UI thread. Fully qualified to avoid CS0104 ambiguity with + /// . + /// + public static Microsoft.UI.Dispatching.DispatcherQueue DispatcherQueue { get; private set; } = null!; + + /// + /// The native window handle (HWND). Use for file pickers, + /// DataTransferManager, and any WinRT interop that requires + /// InitializeWithWindow. + /// + public static nint WindowHandle => + WinRT.Interop.WindowNative.GetWindowHandle(Window); + + /// + /// Initializes the singleton application object. + /// + public App() + { + InitializeComponent(); + } + + /// + /// Invoked when the application is launched. + /// + /// Details about the launch request and process. + protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) + { + Window = new MainWindow(); + DispatcherQueue = Microsoft.UI.Dispatching.DispatcherQueue.GetForCurrentThread(); + Window.Activate(); + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/AppIcon.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/AppIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..235dad2c569272e9a3c7158ce4f93042044ea5d1 GIT binary patch literal 370070 zcmeI5f6OdbdEfV9n`^*u9U$OHH1Add$te!CfkbWtyiQ{hw;_>}Siupdaf8)5lmsaJ zffS_sCMJQlQEU|oq;YB|xW!5!MuLQ!0OoZ}V-j41lgS@keBR{JOXu5nzF;!>>g&&&Os9VP!pY=UZaHsqAxp`-@!ZMe zMZb04SPm5Cz&GLMW8kW>&ja{yDYzdvgK=Ov zP&o(g-QVBm&41(j5bGO(9q(=Kb5{42>psnyYUmAPnE|kM0)7!VgK=Ov&{_`cjbRQT z-a76(gK=Ov(0UFG`aFPme;2TGew+WC)qd->FHWBr>h%C@(|P|sa0cVRa-g#ucwmU% z1Bmw(7W2+x?u=XGHkAWc4`~j-E*<-I&(hVz=NR`9gK@A$IiQ?(HSzI*)&JA+L(eVL z^=HP|>5zOfTa1CO7$DdGE;sfwmbSx7(_H)z}-`wy&-{YJO?oM~NK zY@9JLLlh+swrukfwpVk*TYuTzxUbZfVPv< zhA#BsDpmFwkY~`x@BV`uG0Z z9MDPTn$V^UbY1&C|F^pSJqI=iG)-0;-zo!r)V|OCt*?L2gUtc0X0QpX%RpbX@AKa3 z-vc2war@9iyjhzGVP3PeH8*4G|g?IE@Cv=YRF7VP+ zcm}zOjf1Ow5rtiL{I8KQ@U}5?0KQxTR7W%5Mhe;ftKgCv;p}t>HVv}& z+>Le)!1nXOjo`DuZ5VX!as#-qW@uX*h7E(QeL0DJR{ss64S%DW1H8Sru>2d~HXQO% z=LFAh5aQZH(L3ncmt)vy^k1FyZ!0qD{(U+2@VMLdiw9fKRyMF~x{n(w~*Zk=zu3#e{g zi+DG(E~si0V@6r~@)O&w{;LK&vOnB*J_n#f$NU4}T7ZtNs;j|2PZvUft(O9Q4{7VX zK=WSooJZf$*1kBzeyjhGOdTxYx05*lx#xnngEqeBe*!sIgY!F}pcj$YE7##vl4V z#P&wizJh}eqdTKi4QIM8(AM)qGh|K2LIk#2{jWJ#$`>#Lt^w|4 z>}c|C&6F>x|J0{G^*s3dYyHEi_Zx;y9D>_x z@b4Hi1EZ>a(S^-c{|)n|t>MH%-$h+T=r^p>wrtpTIdG}_`{LA9#9)3STP240X!T!( zu#Wl?2R*y)YGTH?X-B4QjaWFW^K6e}T)?$sBMaND{?{BdVxZr%HhHd3`8Na8HM=re z^>Ej;_8l@5!|2}*4uLG}wfbLUAmINyfSxgTEntR>=^EV`rD`~9qxKzggc->F&Cn3Z z!B(sPH3bIlb^rO3z_o}OvZiZtX>@Ags?FMW$P+#RR{nN)C`4hW)&H7;0rzhQt^>@F zIbD-mqfrY-UDUoquJ8+EAObtB{?`yFc-QZEt2}pB^_uhy`O`JHHVTz+Q>XT;#6Yoq z+0e)@ao{CPVFaLGWJg3A~B=ipr6aYKCAy8 zGZwz}%*A_vi^P5OOLB;%%>fN#1&6h3U#b-g@EPDD@xF#8cRCy&to}P?_^@#Ju5#Y5 zXVRaSmcX{n0ck=itixTS+7GIH45EK8u)n`Q*zW=OV)Y*a+wl^vb-h3KykFlRugWut z{Wb^W5wl_+oV8N>K?U-z1TGQ}&~K361F*~LKLoYoC0xHXGG841{_QGrXtz0F6+x*s zxN5cbgJ|9}`VM5fNW3wO8`2Wnt^Rum2t4aKpV;fiI$o6CKcHTR;3A-T;*v0K2utj-`tL9h z@T+70?Z8FgVfxg%PQ*By1AH9eqPN-CgodfWF zEw!(>aUDRhj;SR_zu#>m)@{g$w0SV^Ho@LofGfcu&atpD_Sj$PnqOJm(YtkX06wp+ z_Cq}UwLph0WzcniX&AT8C3eKjSyulwf&{nk0xkl#)eygO2s*cB4#3y7*M0~Fw%i^O zZ%3a&)D(7D{fFSSxP;el12Omeb?kqBi>eo*kh}4706q?;_C-AQTnu9F2P!veUF%&0 zxP=vLu=;O-$E*l=y#crgw0`VQ+k*a$odfV~P_-}KD_#fq7wK57V;v5y{#zybcS=SOCt^QjkA5OmuxCnf@Wz~h^uw`TB0DKv2 z?JEHO93b|+ZfkuW2rjMu3#+DH1DwWQ_q(p1hI*qmVGbC2?T5%<=heVP;GJR2I+oaH z_1_}#@OcExfGfdcw3q(Ir$y5eQRp1)c>uN#`naEt6}CPF#JnS5mLAvlIyPGUw@5mC zeh+XFSo!9po1F(5CwI2w_=BV>Po(Jsw8c?t)yTnGT|12pDw&8ORxCp$o zfttocv2QeU0Je^<_7xzm1H>K+D*xuIaRPV&aBKD75}9y00WsJ8A8biwBQe-I_&ER@ zM_Ky{47MKuF~1A?T%$lX7>s>Z{|)#{4~0v;LLdd#{bCeMg_Qp8IFr#Gb*;0oXM9+858{#6Q3n7lGGgpr-So*uSF^ly9j}#le6?V1ln8w4d=5azM%TWG#z)}$e3Jt6CYcf1CX^wsT~_~13bDCe7T{T!3@XG zx^uum2}fBDXVNto#~T=eAFBVD=Rq{WplKhQeXYz5m|c_1DmysNwirXAW?T zi^Yt-(}}*ktwJkZ?G>1-KFn=5IbVbaycvf4iCkW|F;7v>_|_ zbSH2n==JY{V2jm%!~BB7TT5ce=$>G}G_u0_BsNt$x zFaxe8Gq8i=sB{6lh?>AI4 zsNwk2Rqcx_VFspya=L*r_%Z>X1g-?X&_GS)q1a;eUzxST1Ni;VjU_Qv%-8aM=fjq^ zvxP5pYJbK!!Bv3zPusD2y;AVw2>5g0O7JiHv=m#c{u>e=`TO6$X{crp!^xMrwXbIb zgc)!Zp#IZAIN!hsd{F(zyd&x-8mOr}6q~I6E3$@fP4p(D(hn*mJv|&T(n*yWqOD+7HembF1b6{JpLuXC3WN1b+HjqSKE54atT> z)&Kp#m0)zw0OC*UwIAq4_SVb+_!{%up9careJ!!e>c0iD;qi9hO7QU(RP`nTUplM( z-~>80eh$FL35dD(XMg`ABu2p!9tU^+FH^DWt-zJwu>!XSw;Mk?ul?XOx;A{36DC*`*K8#dwsuC z6_>DmZM7fl#D!0#^pU=k@xGSD9PbJDA!Jwqnyp%mMfj`)ufIg71AU zvCrziCBoq{_Bp`8{2g#?9$f8*aA4c$=Ky?&dFPL#U$4*or8u_w4`ei462l3Ic@F5| zhN@Z_j;({O{oo)rj&=^fcAfh_1Y8L|7yRveiCtFzEs_qOG0%DFUe8*83xJ)2ul*1f zY#rqsfZdk?7lE~%4`Q3ue@L_zmhc(-eQ#~g0%PN7YCnVon@2YXU~|lSp&b3zb}T@* z)qhB`7MAd-bG{jHCHO1a&u>9xB@yTxUF`=4v3)di0Jfe7Vy^qof`98+Vx!f6%f!QJ z>@}aOTUNbN9CnSi_Jd>iFp4<fD^}Hwj?rlkBsTg#P zzV?HY_%i4@0Q*!|`@ltDtn)qfzP#U(j#J#Z1|^j#(B-?-WjVZyh;%>me?x&LJ4POT_2Vh5)WB*#O`=z+E`VVBZyd)p=Jn$31m7&e+0O;D9+7BVa z=e5rP*znyT=Gd=3&kwe*bBP^R{~ZPZe(wY>0v~O|4D@VW?FZiQeQk39x^?W2dB>Nd zU$1}TFYuGM#1^anJYrhf$9sWdp8-`~G=$L&Wc8oPoh~-v`8~iz;E5{N0+DC6Ul1_3 z>3j}A$E6_VnxCWJTHf(fKu@w8o2>p<5!6x}JnLRS%-?@>^m_o5eh;9J)qY8Q;Ha}X zKrsSe04@T$-@lf3e5|4fo2>p<5!7NET)!zIPn_?w^8PS=to9>g16Q5Q0mzO0eXpbM zTO!TvwHtO>{rAK;Tvs_>C}(ot2hV=1{faSzvsUK-ld%zMHe{e=5KaxH+R)qcbHz+s~~K(PRy1uhcrZfJ6+!|}oDzf*>ng~PdWXa-y) zK1e^S{bed^?SaeMa{y!SjEtG1pU(R)sAXhNgRsx)zbCHKYT#Yp17e>EaP*D(Eg}8X zSD1lmTBog_WkB3`jvUKa#NNM=yg{G$2PUx7>OYXt^Ahgg4qOMAA#>WZJEK!4j)1sw z9pD$nKnQ+Y{jVuda6bW`Y&rL4$eXUorO~MsS3sP(7V!yW4f1+_HbB^E^`9lB$8Gq( z2+V+M0g^NA(fo~2CC-4jb1mS}d+xbsaL@S^1qy$y{)@=zX+JS|DX4NSz|lX88T+O^ znY?jo#2pZat^pLowY|%~PEfGd>c0+gEsr4%S2xJJ8Dpm{o3wS}#32xut|qP-8)^7y z^*@lH5sNC%lZG7CHR;u2K7*P>Xgd|rE~#9+78{{VtR9O~TPSKbMFKA`mX zLIZGf&?bmOQ04x2nt`Xj1!*@xtf8^ZK-VlXStIV(=N@ z8eqoQ>6m!IUaS8#1`Ph&sC|bVLC>ULwMKVFsT$6%^xQd?O)*2pbSy+*tJVLSf(7?& z*1khtfUYCh_kohQiX%|xnoHohXgNdfDCPj{wE8c}lP;R!y{p=H$QB-`@*bfsd>pb& z__-8(0l1DZL+*6Q9LP3owEFKkNO0bD?K^Y`dInwZrn7SaA7gO=_CV9;EgUk+Fr&}3 z=k%(i4*RVBD>2rrGkn*nedSS;^VEkK|Egw|kAE~ATn!F@s|m$mR&lKQPlw7Lwpso6 z6dbs&Tl-1=F#a0Q*Y;VjQ zfG;up+}uTc>d3_2TYxJ;>wizPj;&z~wzg9HDS6LE=7|yxTuHm;fjc-KIF#E#$C#J+ z)kfWmzfXYN-}113Bjy17u=?*X+2Oa<+7G58_gwHcpgML9vCsJHz$kvR8aPNVv0c~o zt_Dq?;c>{&`F`o|_vthGIRGE5{?m!n;yT=RQu}EW(V_PUJp^0}&~xv)#x=yM|aj(QHjeyjg|ua{#tm{f9zoX$hyj)qdJ!^tO2};E)&a80&X{8^FbBoqeoJ zr`LTa%eId54p{*YupWKP&-0n_qnrb<+v-0rpf&fw=UQq%n2Y{%!COI{->^Ey#X$4H zCxOlnt_PZTo*itcyOa!|^LfdX>=Qt`Tu0Dvr{4rBAM^8kM9%2u0BpAU&kJUaeQ>$f z+E1H|Evlv80BwFJaL8K))zd@ZGeCKDE4T%ymiIigu6?(I4*~Vnm@4nqb@XonUEg~T z$i23o=CSHJGDkHBV6WAG)gb5ehsVLxe%d_jdOo-f^f?bW^bHkvVOyu)VURzXIRIO& z{?i3hV;v3$S^H^MuyLE`0Uhu4j+9H&oOHR4u2IYZ*lG3OAQ9ki@U@?I4|_EaybE-B zeZV1q2#}BZuF?8=ewx#wb@UE?4!}mM|Dphv?1#Hi)qdI?Y`@^{yYIe%<$b_y806FS zpq1--Y2K=?W5b~50PM5+uNqYP!`ou#iw?K-dN^t*kQyO?ck8tfc^ zZC3v=K}_|5vyG|!lv~Lv=LEX{wg>b+!J%I>l#TC@%~?N&wvC;GoCC1S>c2v=z}Lps zewGG&eKxgqEz9?VFN1Z@2eRS)-lnyDr_XX!WgFWEHwR#o)qi9V;c9DYKaUdpzYtsr z-U{vjI{tQX9Z}B$NcQbOx~>8j=Gip1efTk`IRJaC{v(nIp0>L7S5X8v&j$M5@G5X4 zcssZS==mSb6UwnPv`@9IXMxmLW3C30(fB#SRkjYH4Ic+H2Vjfh;!3d9zyF6DtNkGq z&IZ{)P7PuXzz(bb6?tW~zk(cVYQ(@0<^Zez;t*Qx7jt7R?J%(JIl$^aKaN)W`MlWP z_8C~`9ANdo98atLWln5Qw+yUn4zT(^99OIT!+h9Qe+;Z+4zT(^8(*vavs~EPdKl4L5^1|36^Shh_wz2-L_P3~bHpJDg=74Rhf2;isDTpm}ql-CU zo9f?ce+!Fd!(48A4%n9Zx7y#ZLfB$=+MENnq5iG*x42j~)b+OJfK9J|tNjfv0CQ{7 z#vHK8^>4LrMY8D(G@S!Bwf?R4H$C&szra9~IbcKUU+<1R0ImXN^qmGyZD|aQi2>y< zP!78aQ2+ZQ`j74XpDx0ube|dhr(=q@*=h`A8Bh)b<+5uTn_U0mYntWKwvB-?GN4=r z%4ydkhE)IWXwk13vZiBo`0;e`L<4_j zjGYd}AG5<4=#l~DI#ABLn$X{Ty`W1QtH|c~Kf#`l)%3+NPWJ}We~Zr6jgL*w0p+}M zzYacHr9S)Uiy!)XuyuT~F~*zaK(!pWqK}%cqJ!GkIlyOt#nL#i9Oy0wK3%0Q`|Qj2 zfXk@=Cf5NhZ@SAH<97VqsB%0X7F( z4z!vB$JbHIb#)SZod?)=f%cC9&g!bwx*9s4s-aOF_p@^ac3%wkfioBfmIIY@;66CJ zG+S3=+s210fSwP~a|_O399Rw%=75g(9|f-(Tb-BLi%;i+D}jD5@D6Z`!8ouSNNPbf zq1qVCbA4s?Z0*K?F<=ZB1IBX8(fH7bU7z4(DF<=ZB1IBX8(fH7bU7z4(DF<=ZB1IBX8(fH7bU7z4(DF<=ZB1IBX8(fH7bU7z4(DG0=U#iR--m!pTlv`>DzK^Y)AK2{<{q zXx{$3NiG2glgsDr-#N)8V1M$qdHc@Xj;sxPlT*HZFPDJHkh;?FV@T zoSqyF?I-gHI5jyI+F3m;TU!hY?TA`#M`>usl;w7e4(%?F0GwX5=Mlh|MSBhb(z$5Q zAwV`S+H(ky&x`gP0yJdNo1$Q&$fF4lBs4M3sH8q z-4l?MdXhAW#$$+!%iMYi?dR&tl zTF$o5&6y9MDBBW)&$cH79E5hVDRDT}uI)YAo#Q_|OpHjiOCBvKm6L8xc&Z(HXh_m< zpKkMjrP}f5RALxbvz+^zYG=p6WL{>td34TKsvUv*A|DK7C+lSIcxe`?PER@qN?nixN4ES zReM-Zx9|Iys6DKw+xL#7Y;Y>M`QINf080kw=4gSC#}l0gQV}FcJg<3-cGKb z%(kDI9GmAfUC8y5iLBK4)1fA4Pip13Iwn@^?XY?})D-I|Vw06r`>Dz9ye8R=p*ii; zZz3*<{+T2gsqr#65J11&c27W}CrRe?cw~D5lG@)>fK%-Uw0i=Q+TS~xX(u4_NnzeC z+rCfxd{UXK+0TsEwkIGlQ~lHWlm2r85;qSr?TNlQ0ZFf=cKMS?o@+TNE>r#`{w4&> zt<1J3d?y6Vz07S-n&vE>QUayqC*u>*bCz@46Vv8V%Cw)E=cZhnJ9+xBeBZ9NIZ3CL zpl9{_c4T{!m)hy>GgFZvR>u#IXVYhPQu>+pWRn4lDmim_yl;m9pJe&%7&mvHT-Z(P z_v3MH?*4MS%o90t_lw%Y%u>{T5RL*%`seb)%m&T7hwYoUpPD3rW+T6yS(tJ9PfVLnP}%vlY<@30 zKB#>zc}~F6@ulSWq~l5AzCR2m_MDwx-9gFmQU3U;FUf#O=J=}P_dGIlGqdfAm!JAH z!!I4*Pcd)!sZafK+IPMCiJqnNi?Z_*1bX*6b*em;Wl2Z_(}E03Qteu;@r$&$}r&i6C+g+rhJihG#9$?ETiB>&3qmlP#m zOXuoYndfRMJ|zFaWPWTW68^hDs-3Bi2=7RMmh)OkwIh%SCm!yT3G<^ss$I2@hr3B~ z58{Il0b zbKFldAdJs(KRH^5_B{8A_2T+&p8F~RKmI#IVW-_!2E1*aU(Zu6E`Ju+r!Sh%=Gh*L z>)RKS3OS#}_3=f{9qtt71Csvu;gX8(fH7bU7z4(DF<=ZB1IBnqH<}gdm#6f1+ud`EeBRp*-9(1h>gAC^Mg&5B17Nr zB`b}hdB<{~Dd8)|6N6Q;&x^@bE5t=Lp))W3I`$~mE(ewaQOs8B1kbBtFU}PcmqAzY z*SVhTu^gxt##+5S*G0$sq~7SGn79l&i@zK}m*qgMh{g}{9IuSMk45kC_j)Y{;=@^~ zXKd`(8Gp-xN+FHzTqXAFj=$wVbXcQ0R*n4-;%_++7248Hbz(o1_*)K?hIeI$y0ITp z{4EDohPbe?N$iIff6IZwFy}Tjjr|bgKa?DR+vfs3BlTwR9`F%xFZd#O(Bn&fpW4*t zUxBN@b8-XL;!bqv`*Z2{`!bctSj+eS2)lZ{J^&BT0M~%u1YZHJAtXbxeiA&r%-<^Q z$ZI9`(uu4=#^2l4X%67~lfbLMhrkoSbp*-&Fp#cutHe6nm+`H|-g7+I_;-~9aCiaG zTs;G>XM7cXZvs!r#2jK6?;EiC_b4iZ&JUq_+hrpkKeUCq7`9FZ# zTt)mZ`pcFlm&HBB!HEJLA7_89=V%x===u-b$Uh)IT@Fh9XN;alQLJ19{*pew1%4L% zL-1|Ej-sXdfXl(_fyPRPi-2up;8Xu-!X7Ia3y${_IH54 zAGm3{lq~RzAm)7XKhp0RS)J_bEcTw$(Zt`|8$A!e-S?Jo|1H{;Pd@;jl;ysyZDbz- zntwhD&Hz^cof~{_(93$KvG;tAD*oQ)(j0)hp8-z*R{+KRC4uX{mgu|;{6T?Dj{T>= z^`P_Ek2U@gIiR`R72px}|43i)F4BVyKMZET72q!l_A75|o$KY z@m~6M@;kR+QmjfNoTATCJ_91r@;;-{1w*sBiPMXIi>)5^O zTrc?bGfi|9jYapU8IokMRyYAUN0$c_~ z^XQ;*0Gn6EKFKT~Et?Z_;*hp3hSJ4l)P4Z6{c|94zvaHhnM1>$CEHL6sap{^;V5 z&AN~G5O5j1FYP;RgUbPLQ)%pjAM}4;#z)7t?qfyWHwWF!MN9gxEeE{rTCtZu%mF&r%^UxwB7bA|BX>0M z$JTSfBfzDgbH2-B{H0&-IpB5X#m>>TIM*w)pT7D|^DW>~n6cjIzBS{=6n{NG=`#5J zGVaptjO{H4yspNvm;Ec|fLEpctGbSjV~YQWGO>4T|4Ord zd?>WnSt4r`@yE`mgC{b+Kf*SDsi^vgah>IWm)&aYan;d|>j;AOTR`(Quv^^Bs+;F{20b%~s@#Q!%lK8u6K&uSv0wH)xW zI*YwxE1!YO;MS^f5B-rd`1oU^{LapMkFu}U+#h@oOXM`p0WYJ|*vnq@2-#=LzY=_@ zx9Djedik~rk z(NQ@E{FvTiFF(+!-=(+=YQ3`)8Doh5n=`)3_se5qTD1>yqjSLb?KSp3{@;ggmqD#- zfyfv`{Qq6XSNZw-n-#a_=`HeRvm-BRXLEhC#*+b&#!7rx<7U){@LHM z-ka_dyN;YO#Q%%f=~DQ!SpS;#LuYIb^b-5v4|aVn#fM}4i=nN`l5t~*|3evH|G0{e zP5Yv|EC+gxz5KzZdor9nSjSIfSo}+f^YK5C;oGIQ*Af3ePU)8|n;ie_{QtR=lNeu>_ZHC$pK=f`9J%6w_3-p!bvuVcchbHYw@0NvYm{U`64 z&+n^~?`30rTvx_E$XHhnp!ag%GI(>atI84?*Jk8MZl{0$rHXy(i#>UNOYX+1a?1Ln zXVtl0ZcY0!y&enDsdtRI3~I#;8DoflU-y5b>OPxCaMz%`l8$Rk+bBDNx)rpJaR&7p1@b3^DOCI*)zOhi%f;$~=G^odf*=a2agV@4ude@3V~mj_s&t0qNIU z?Ay)(Y`+X--*@s=_BH)`5~G>_ef|DCKD!J~1ip)w^zS|P!4|K(_B_CN)&3s>mqD#( zK7(CaB5zdj_wU2V`}++)n)WNbj*n}LeXzsZP%8%*t9J#v4D=3+%6~&7*b|n>7*+gb zH#YxVh6~5`BYE$`VE@`-{e?;4*k)klSR5%rVBl=>1RcPji89gNc2x z%i9#41N8rO;4*lK?X7+PleonHD>Ixpzny;n+lhic;=hyk>4rG3T1q!4%>nx8H_zE~ zK5bY2&Rb*;vPM_`!53`59k>kiT)f_$ILO$iY%j|J`5<3h2EQ3(w6R3?nB%Yazv>#G z%OLOFsp_-Vy3fW7dsgMZ>5NaZ{}E98T@P9P+D6`J*_wyea{xV~j6Zg-iha?sK%CA%qkCp;jaXKZfzHc8-n|^henB?NcKIk@Tn-W+tLQE2 zi|kRwAA3tOTZpd6!twon9ha_pS8|`w8GyK(>BQ7|VL+ zIe?DQ#NYE##9?ktFhEfb7A?-}_%X_9-6EL)IHX-rtXK>|X_ahg2Qwch`UHp?7dR4AkZ- zLeDVhK6cc7Jop6hT z!N%YF+iL97JR|=cpl54-2k5-pbp*-&U7+VzYdx}GtcIe@%D#^3wdS?mL!Vaao4 z`h9_}!|8gAzI&IQFFN|Hf@J8t^BTzxdfHebv$Y&R*5Kmr{p&6Ec`?C;ZwGqbUgrz{ z4(PWBI_^IJ9`yJEOTCBb!$5s>OwoB}t>0qi*-^9)9j)X5at0ND@7G#mU&Q&)_P3D( zLyEt}zIui=&4HoB-(p`q_F+Vm92i3UE%qUj^_O*XVBPVz*w>GFc4VC#SZDk#_SpzF z->#Yi>x#d{zIm*RBvi?Pb;RFdUlh6a_Q&Qx-|@HDw-@6wNijLlbNuyOi(T6(3tWrs z5jmikxD0B&OE7IV@~+Crl#aj7*{A)v&u*mU*?N5j;CI!v;=Gu&5r16=S8U5*v9BN6 z=#j)>RSslhRO@farHw(~3qe+HcH3f~CavRj;t`tz-`&&{bm`uD-rN#$Ky5nq=>C(T zKMutCs<`O6q;s0aU*nN;6L5x6ad5ni*h_|gSI>X9_>U(3damKAZN*=5kT(UE1H+#O z75izMu@AD8Q(zD1*y0R>;y~vD`i(;6=TSp^W0&Z761W8DyP>WR7}m#uVxU;Ga;_Jf z1J=(NFb0ePW55_N28;n?z!)$Fi~(c77%&FL!+=}&=Tw@j9p?_x+ee+-Pj8>&++KS7 z$nti&c`|Wsg3RzarR`&3%ej-;|^nY z(%Xb!H@!^=j-TCj^L$v0XItc_w-ZW(eA*90`HJmq|ExTPU?Cq<4%u^@)H`f%)}O4u zhxmZMLwqgqnc@2s`JIl(QoJ(p%*H#L57~Ul=9A0h8`TDxseD|@|4cq7B6SN)O= z8h^GPvh|Xc=kp(}$@pwNX6qI5>3X)Fv-O^x53=(Gp*%F7kb3F)M&zgGqwIW@ozLXw z{4<~L=H6@1d_E-e{RhM02lf6lpHETmKgoQXosTEUuGZ&+xDL^U)0_*e`F_P-H9nYx_SI4vKvD_BZl>=p3x_ zy)FOS;s9Hp3%(z`7QEg=>)Q8R>8bKzOlf`6r*Zs)O)>gHUoGi>1iS*g7w8?%t_13% zz8bUgJ#=$nT7h%cL}%;xD@pKvYuo80kHJGX7)YPx2cc%x)dbqg^4qBe+qSnKItW6TlZh` zk-KCE`)&Z=0M0{y$6yz%%;k)|lCAtt{~dxS*nS;Y(wQEcx6YVO{FknbJ!!xHCv88H zXHS)Vk^v;kc?2EN=cJ75%>NVz!7kaUeEs$+ey-{(Sze}NDM(lJxhQ?R_Fp;gQizVt zD!)S;a??2<^xP2I%a)Aq%ztFR5U4gCP~7Fa)?48KIceV|^RvJK>Aa-OceT^66aSH` zV_cZ$Rinz&ti92Bn)M}5me&#H1LOt=_SJ{|uW6TlIY*VRf9G)upWB}Q z>G^NzT23Bk+6QmxyiamIZ(q^)?0&|sYyNvKx}C>19{&`}N4)=AcmCsZIeq?H`27Qp zmU2Fu$6>o-U&UZ8=fB?nm;3lTmfQIKC;k2R6Cs9S2`ABU4`afzY%J}Hy{;=eu$J$? zvK8IBzablhAC0v?^joz=ULk+d1)RsLSIJQu{aQW$3Hp$`?(1KFA{&A|Ma!=Imp)|c z`e(TIt!tCD&*$^(M_x7$!u3z-T-+1N8yoh~uao$v*4cFS9lFKD<^C-rqm|-H1x4(J% zR@vCZ|5bAH>{#c%B3tYFUnFmxK9=duv$>}KUt(N1uZup{DzmST_8bo6ivuy&zi;(@ z)n6Eu?}1yct3t-Y4UiyBf(WH+Hl< zb?oH)T^Gk5PhP`taP#9gY5zSpKYovvH{JaBfuqaOn;$=Ud@?z6?B>T$y=*dh+0M<6 zpT6jv{fl;Qe*Da2=hWo*&5t|1tHH7SMaRF?((gZ`ce2p$%tgDWFJgK6Wjm)X-(~rV zV<+FPz;XAw1LVSift9{mK{lD%&0S2spo}f7kn^+uPt+$|l+NM@4$o29z`MS++aBJX$oS ztNrLb>U9SjWRq-*v0pip_FZ|^n-9_jLM|scz_x6PwqLyF$?1ykAQzpvyw$Nk`ZC&A}Ew61+>`;K61c1c?{XBIK1tup^XK4Wt^NwvR(J|6~80O#>dmXCR8 z-Fc`6)%VbSVz!rZCdk*4_S*LQ@k{cNc?|pq@GX!3!t&?93&D9ozt;UewdtN;=>O}i zOU6om+OR+6L&&AyNAG_F4*V&2IaqmLN;0^Pq+|Tc{20elG9*julD)_o^$#ERH{w4f zM_dJcj`e>Ho*dd^mm1^8I+lWD79MM8Ys-GcTbwzMWPXdaJM?30I%gzHGLMD!?2@*& z>{re@Al^eR6~;Ylhqf7)oo6J=fnU$-@5eN@ANel^-vY{a#XrrVjyJivo3=@PfciR+ z#Ezw8Nv34KB;7x(v%iu3j2Ca3_oU^N=H*3^C-n>2T8 z{yQ|!u$|3^r8t!J@$-^o>lkuT)(7@Awg0uqaNy^&vOPbmxQ&XDWP2S;@3UfmQ~P!N zcVO|nN!AbAmh5C-ps;)yJe#xo=$Gc)v7O8_*?!q=`pN&tz~^(?n%e(gB|9rOZ<~HYw14dRqi2U4=(2ua z=yh~azpwSO$2x!N_@!gZpYXoL){kGv)p@m!Uphv1as1NUpy#E&1s1<6XMJhT&#P(e zqi?#d51lX3_HrQEot!^-{ra9L9bKNk9r|7wxIky4`72_o?X(`7XQ+#?|RPT->@9T_ebnZpWDcX5C_%6%d_)RmP2jRPxFl4 zaiK8|i1)yUV!3qg?Z-9ZUvfeAdy{fW^`M#-H2>)wSm%+8^E|EleQHym&|hOEBb`f! z=B2;^eQMiZCZBeFuhe(5^!2OLZ2xZ$tve6((L8+Udm`IQ`~=&Z@bBeDodeTX$GF!5 zooncPN#}fm*0oP*%dZPopk-=p1msK4T%x>+Y=gKTjgtM1>8;r{85 z6~z?)bbOQ#io=lZUCS2P^y8q&eA{mfRA#^>p9v3P>2r2@AW57FE-jDi4@t3qm#34o z+~FxPmVc=~(e*=<$)iUPjvm~{@}|8b_h`9)WbYg;^(UjWJh^-N*rDalsbo8}-^*~d z-+R+N_iB0HJvTj?EDw&(mnV-U%Lh*F99rJz_um)#`Efx`kQ?-z^m?=Qg!W)}@WcBR z{0x3CcnG`{@aB@wS$@N|p3|CwE5PD8tqbirE$GPoF#o*>+zr0iF{I-~StHo@Dd4~d z!B2Js$#&rG9R2cJ?cV^`WZRo=OQx4C9be4K(>@@-L%-H+NXzs(3iZpbbpNcKVVgeB z0WbD=PS~GaW@WK0A6M#^jO;kS@44*P?|r`l9QeN;TGu|cEo@Cf80xPJy7 z2g=`9gT?RlweI&Rht)@YmvnoX(fU(1{68zOVB1E1B`J`o+Bii#!i<*tf7Dy&l@b zQe%Mw>6(nyues%KgRJb5wqV0Iw4QC(Hv5IY1&eFXtjFrVOk?xpdf8p;UpN12%|Fj^ z?fN5jvcGoydHp)xXdY`a|15If%Z$oD_0TIWFmgryS`M1v99FPs-s0&E81E0$B$Uc4lk_}(%7^;z_ z?_XJawq<*My@0)gHkl`U%Icx{(mbFG&=wQ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/LockScreenLogo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..33f889e106984ab9d522a6fca51b036fe85d0ffb GIT binary patch literal 1090 zcmV-I1ikx-P)&b zxMup`R-qg+6mnXG?R5g=!vhZ{B%T$C3{J*#jNh1hW8OF6FkFY~o^r2s_a+uf+(H0QDRr*g(#0 zlNu*NgVilaJ32($r5Ipc0eTGq>2FnqRYZ%onM&!&F2sOn0qO#)x4-h+VnwvMO7&nI zW2AFM!LkCcUPp=kgDw$~e*VUvD+U$;2mI4^3}_Nz2vYZYjrMGoIB@7q(18`) zQrt#(_7TsHBodYtpqqP+>FBS77>@@azm)ewU?)=IKome^?cJ{BKfxk^USdC{qrc}9 z;>4cL6$Oicm6R^7b$LUBO$c_hwFilWML^+AP>UvSV~7(@e|9>H3KjvaKDx_Q#)v?B z7R=R&XaVZ~S19M}X%r+t0;-lsIsP@&xj^B#^HV1Us$-UFTSgFbmL==)$X7 zNFuNTbAO!hlpBMTl=3x)#pLu9d}}k-S<*o|0hI6fnd=xF>og^^vu0#(2J4*TRyvZ> zGqG-|LYy>{cKC+$gMCq$d2#O_;mx0=rl-+HT<2|c$-ii-d8O@@VKNw1M}mueyr4q^Y?K99ZS~GvB;sw9V6)LLn(_)H8ti+qJx5d;4Q9hrD=uhL6ovL*69u$^)}Bjr*$0tZfSyz5qg33VntAWsAl z+lB3+5ih(>`*SZV?-Bm`_ireG7N5)e|780HlFwv^9X<|!09gBj2F|(qf&c&j07*qo IM6N<$f=X5F2LJ#7 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/SplashScreen.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..802c79d6d7f4a181514f1cac16931cbfd654ea5d GIT binary patch literal 12625 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 Rd16UVXrIz5IA(YCe*qp{r`G@g literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square150x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ddba42adbb45821d1123a424657ea248ad7a411e GIT binary patch literal 6357 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..e51416a8e42d483453d06da68f57aaa2c5db4671 GIT binary patch literal 574 zcmV-E0>S->P)D!2S5_J7ldulh3Kr$xyeFkPI7_d zdA`B>2VVEkh3Fo(61wVh&N8th;R#sKfm9ez&?)S-6|usQVq9a4$Wy({3^Vw zphDr%m8mNO1$s);V1kfmw{TFTYjzf3jMPH_D)6sNgGmedoAHL%o&}K9nd``Q&i`D6 zm!43A`v9_oZhakUgCOHn*3cjTIN%0i=LLB>)Bq{4DQ@wd4F-_N6=_b_LV-PpDSRM( zltjK$*w+UgEq55-w7HchQO=CFGWW|p^_;?CkMpjH_$->@HG#egU;^8N1GNI%hF6LE-sc{=N^MNf+#(=^ZVR_`JM)0Zh{x&phK0(*OVf M07*qoM6N<$f{>Q)_y7O^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000000000000000000000000000000000000..bf063eb4d6c4d14763d5d8ccca84c0f39fc6c350 GIT binary patch literal 1091 zcmV-J1ibr+P)%;e)Mb+oQkl#NdTRmo~A<(;gjdxkT%sBw>93j2n~5)+||jpL}EC7HA9`KV42*9;xWPn@+QXxK< zzDg^3Ky?Ou$jm!0>xAOrw>^};O)v{!2@uPX@EORkZDRdI zcwl7<;v5}u*(DiZT>)4PV$$F046BF^Ycr$Dl3kDiY5`&b>)BuWWm*wkrcx{z`bcCf z6)Y?8Vs(V*e^59(jh(;o$I`$e;1GYht^sW#3{L7^o@&cx@dHQR0Idi;wjd>ilfpLQ zwvXI4Atfv;05kWbspzi+8LtOSenD@Sz+S}o0Tr0Y+IwBo2SF`>XB0Qe15I6j&qw$P z%>GJQS1*8P^bb`gu5)?A0~_J&aMm733Ck8Ly#X50W^D|9!pYBGV^PB*pwmY8nM#ca zE>DB8dZ88|_J7IgJlsZFJKrS&H&NcEh!2)szJ_822yh1i`73W=QzX?Ug7aqH7;2aT z8r&LrP+Yby%d$j}?kFM*Y;blsU-j%~WI&7`_`+$$O zI;r=9n_rcpKlRHvIl_7A<>6LfW3Lv0PX#nJb zz+=0xJUqmOSLq=4qVfUZpMU>`0&wCpdi$U3&;ar&?Xbi9;V;i{h8m1}(AWR~002ov JPDHLkV1ke!=|TVi literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/StoreLogo.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be865f0c378b74ecc9dc740f45452b9763e59917 GIT binary patch literal 1106 zcmV-Y1g-mtP)LZf|FOXf6EvNm$pnQ7pc6nR046AJ zg2DvQ0XXs|D4l?Gg0>4lC9D)bV<(oO7w#V4oz96ZEB>%7*#_W_JN^q=`pagsiLv;K zlEUp`h4MMevO=$XFqFQ)iNp_--*7v4L`hJ(C~cHXZ#0Q?wdVu9BlE_|pr_ElH(FI{ z>O^KmtJT_KL6RsNM;*< zxf+@zBPBt2sA{CnXf)G|5}8V)*q-k9`)(9PPxu;xiZBHzm!L?PWB(kkNTQaAFB$&$ z5M@LIM-rx)n9DB881)M*=O_z3AB2)1L_SJYZnj>pY4AIg39CP&^iVq3uT=`Zzvub| zs9Bn@ox!Cf2xexd-0^}2Qk$|P6b?YS4H206e4KX>)Njb7W}tFIEeT>yy8Pq(L#=D+ zu((%xrBm|rkfiB~PP}d?U{JewR-{A* zpnkP^Ss@|g5n^X-e+WW&6QPWaMU1=Sl^LOY$oS+5em~|J{@(S80G|PHcl^!PSVcyd z>~b!X!B#`i9;nH!Ci9wdJw_L^`fHx6zsYf2{wo1=JW(R_8hvv3VAb?~>I=;F* z*q%|{6DB)R2$syqFJE0=6HB9dDa;Q)1-hacIT~i4cfzu;J0Qz5&r!=7c1<9^1X;Q-dh>t~9 zaU8yg2;*!oBuRE2WcqA>0YXTL%z*bo^y>*T_7N^J97HCd67C#?5E0=)OhNr>6kdbQ z*fuh7x)PmAPMak{PKYyHkPCQy)b%Ez*)hq)D9>0whX90}5ZkyQ-)U8C5N2VcuZ|BP zhbn^fglMh_TKqA}4%^0c$x^pN`uO;rZ7tx!8%^(96xYJWdU~coO;ASozQU5W`h~v1 zWReNqLZ)zvPUK$nr_Ic;Uwflz!s}kEE;?!VROL~)4%GMT9?T~S2H$IWCc6UEj7<1s zm$H7FiIIN6vT`N6kh^9tB7u1#2jTX@=pRJJx!6NUTniz$Ggcx^k|-f1VgXID}tkx!s@xO65+;5P9B0avPb-0{}& Y7w}?(qQZ`_82|tP07*qoM6N<$g5HGdP5=M^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Wide310x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..314d297f20b765ee16ca15c4d3a066e0b7233c62 GIT binary patch literal 5843 zcmc&&i$Bxt`=78<6sg14t7=|2c-^zKp>H;SIn=2 zK>IKt5TDusFz_Z;ap5EIPbl!p&0rAdkoew@5A>|yB=C|i__~!TsJdTz7I+ZwHL*1T zfyfz$wr>dn&xb=SU?ENcw?o2j-Sq)k`uSpS6_In0AkYcBtL7#*?(uQiUxHYcJ$ycp@QqK@TN{XZ2 zh_ejYo^y<}SM<_waw@f+&&HC}@u2q|GeDk!g5#+*>6DHTSwRg&1vF_(JJ7XyNR?2*X_$Et=_8a(bGV$i@vosz_*-RUl|cS zT47$l{|gpmC5F+s&kbv)HA&Sao@oQc-r809PPAEFA#XC13Y|EYm;O}(bVthcKad)-E+>L^(6@xMKOW05gfdkOF{~?-`|`#J>kb1YL`3!)p@#? zzXvE}d3UE9uMpgSnbaYf4E=tE*s(1H)wxLTE=baXfjhtwr{!4gS*fU{N&5JwfEQDJ94nA(CTD>PSn1+L;hL zmVi(t>D^hKQXfr79m2`b@>7fwS>Q`+N{}!a913I!S(>g1h^9Oa-Kgu2~KkZ#euA>KAJxEQa^;}-DS5l!?3AZj;6 z=q}~jZK)n5RY+Nv*@kmgv1#kGAB=|=@7OIWF-p{dMPQQYE|x>p!;9;A_RkIf^1#bo zYuPy}AsZo%9+Z7;e(Oulo5)KsA67XdHF4Gpzl-p4NJ;YA-=TV*Z=Z?(15?57#xbH740*RvATI{?5K4fMFK9KeXUJ3>PK@t?c|HaR-2J3F7&CT_E3vFt6cPCu)47xJO{?bbN`X`=vy zh$zM(|C$B-=3;)0ZIsk-q(rku6eMn*0F7*;+-2W9T<`Byzr9At>sJYLdQne4RADP^ zLgdT$#vLrwXL`29?zBW#owX$0EtyWocy$#M#%QU@bLr9Sh202A$+@+^2&X5jmnX7+ zj~90v)gVM>+yw(ED{q^)y3<=LrjZce9N7_D;SB2B_sj<6vO5uyR=Lw&+_ z5*kJr^1L*(mff@TO4=jq8*=U)OC=0`U-%$G0p0#c0CL0sCrY)Gub|;xmjA%>)sti%QI|frOCgHqV-cGCsx6)z=!Pk3W6=r8wr-vMQs* zq}=>(6NPfCBa6X$G&`>;BdMotKSDxA>I)NKI7=ZY>Z4F8wss3Wab6j=9eSrnd4M~j z>F@ZqB1sFC=Z#CWJ&xtM)uBReaGiQpMq8A>*Yw1I8u-nNN9C0!wgal-cVEglBkB_-ELIto*KSOfT1#L2LqYFpYo~@ z3%HFey0DHjR^kCYS!_j8oguH~L;Uhw)c$l)%wYU6iILe4nJh?a5dj?-; zR&F_BIaVS9=nX=y`ZcXU1HOpuzoX8ylR+0=(9-+%<5rf4)Tz;uyJt0)*upL`Kd|*I zvr^7^w`6K?7qiIV>sWY&P#IMU3fkyY?`4HO{*^h$BG zxB+3iT+;&a%8a=Q|kP)xVc5c zcZnYR9TWlSPZBav%0IeL(d`ZSF+zCu;v|{Z;sP`Gy z(z^Cf2sp@efU_kp$he(=thD~J_phc?Ghv()a@)0l$xo#YazHGzt^aO?HFKlr#`%pF ztm_EuK;~n|s5d4)0P-kxjb=)4wi-$r%~|`9>dhHNe)LNTcifJt0M&J2wrlfsk<++4 zLT|+^7f*fI?WV21x%PMPbxI9?WeSknEOhQ>x%oiT=%jpZ3iZWa#AmtLoY9hV2_ip- zqITR?()tTnjb&8{u)f4?;Ss(YW+W32M$DP#8x0xxx~>%Gqv)H5sWd;X{NiD?2Y^LP zJ&PtWdo#V7s~<{nK89w8VhBaUK&0j*6N~EVYT68M1A|l7ccy$ghK~CEX?c;>b*4Q5 z$WR}yOvO*2dcorN*K$178mZ1nU2q0{0JQ> z<96+OYizGdyvoU2xJY885iJiWAfzR;bP2`*;*VP|KrFjg0;`E!Y1Iip{B3E@a!5_D zyAQ0wlw@MK=~=J~ITV(Ff=3fQJUn*BmlyZfNATqUsWE&dXPd9Vyd!s$e{Tb1Qd<(a zX5!{>TQVbD1mYmn0ZzX%jNDDOmKMWWGU6?cV%o1`rvi~i`zOBw7>{UX|Mt3p=qzt2 z#QC2z4xjbCb6oin;8XwAy&&V$482e0@MqtD!$G#9n0ADXD7x^KCDTYTy!8>|`DZnryX_kj8!*#|v+$0%bQUtmEt00aaow8KIH>C)+5fYZ>c{@xy8VsUj~< z7RaAps?~rpns!mAn2DY1O7SYdKAIoQ`Vc?tLIwexvtkLwNng0%Cf>dekh}|Pj`=nI z#MRZ+tLwe(ade?unfeZKD}jssv(1l>{k481Cb~U!+rkzA5ve~ys$UTDUS*Ouu4yIx zl|d25n(ox)R`C`EUyuHL;7?U~K>7Rg*~+Y!$SS96love|*+6E@AA`ADd_Rat%YML< zbt(2r2;>$n1qkCx%H!~uLr0zjAe8z6KL<;>3x;xWggA+Pm5JWCUUv_V)}OjQhL1R- z=K#$YmT=x!m7Lz0ox>+RaJ_*30C3_ef=qJpb^WGgSa!Inl+TVY$XN{IP)rk}&NVk= zHg>xC`q6U`m@62-=bnyDW7sT!5~-L4&3YI|O_8}Ypk^Ds*0lx+*NNW*K5&}Ig5m2p zI%SRBZocw#=wBgR=zqY$jSt>*k+QozPiEY_OcBZNr5!2JOAt}H6zCRW7|72kQ&VK< z1*cP2v|Q+IlkFkOH>^n}t%<~A2D5kQFS^`(@pLNNKLA`12DzLK>^TQ26GNzo4S&_O z|5|!oe?h5wMzshGlga*reAz0)rEMz(IY@4V4Q7_i$aka|a`fc|*;TU+mASw+h>Shu zj%Af$>N?$i4AEVxJvfC;c24Dw3@p8G0S82_t2<`J{;4gr*9A@tJtv8sX4W|m_?>`U zo(6meTtOMAD(IGdl0p|=GiULQRI>#fv;YXy_s-(_q}_-jhW5)~`CSwJdk0Qd0@ML2 zoSf#k^``D9x-i%RzFAPgZ#ClH3Qsi{)|97F-&_xW_cbGY%>%c`8?H2Nbqv0wdl_$=k=KI6E#WkO z?D3sgjV3S_xMlNJOn04x;qj#LjDzGg60)qSWg^N7H;SEFbOPD()Z$OX6yqll^}9?n z|M8ZHTHaKKv5Pz-a(Y4cp=)gTOv>Q=wykhnY_Y(gv;tWKzc z^+64gf%BPrtnMAaWy`*f+?BIg`?f_M=Z1B+CNG*p06O3!4%E%;d`&Za|3dbU(-XD` znI3WM-esP?2U@S$UQxLfSEIBOs+=XA`?P}w6wt5p@F-j&V0KUlft^?m+0LPLhhDlJ zaDy9Bkcj%jKi?<8w&V{_JV9jRb7#@5m@iD~wqXwXQ+L`cna%AKK-HJ;64HhkxqlTrv>=F)F}e^WU9i~nNh6%*5{DNr$n2gaEO-vwx|VriI>O_`(QkB$bUEkbg6*8;Coo&$ z;}ys+c?FEaOD6!R)2K1|G#A>8kymtE%3@K@l#gUY-{at7T6atVEV;7>XlKK2QSp8) za?X%o{%{3sJMA?HpW~^#b?TcNc-~lQTEI>L8mo*dUS5*=6bAz@7Pb=uF(tWY;7mJaKA2708;SitYhW77f5y0;pdzs z(;~S66}yU5lC%5xx4#*hh6iCGpzJ&|BDYT=W%ga_(Ix1qfKpFhRA1DqD*K4m!iNV2 zp#Yc6g9BfPJw+;osah|ekgfepo4U-4+R*J6y|ZNw0UC;qw;yyFYtt`>Lfm`KeWqpj z;G3p*pg5op=ZlBqSsXDuJBZkCYn>~6{r*mDg_JS93jfpzBM z*yj-~?4WE1_)uLZY|G(hNg$;8USH~d2AP$r9#FgJ?B3mmlt4wWGRMa6n^5*pNzFk7 zXz7ny*7TCw^0|7yn*x|wcMI4(#ak`x0j)tJOUj>df=xPkO;fR8zHiakM@mbsxW{YV zb?c)ndcjBs%2O_jN6@*r_5d~|?~-B420X>XkO%1C zRbV0$j7T?2f>u8D#z~5!)8v^YMtc(%VvsQX&&0(Hk$x5sKk~-qi=l0DN!>RS*jk^ z#%fOnrcN0>`wLVV4S8bpuy+ekjVIo?2r;z#=Oh%roeinu(s;sZ`@ebIQYo&Oe{}sC=qZ35 z;?@e-h%D^!c)C_zrWiDj@igyt>JiwR?SRRvpr^q6>hDXXBq6#bYrMyeR}b17#&r%I za`v=c51n&im|Pp*ozIQqZ-3za5BN+-czC#YGuOz4Z#A-QraLwv5Fi8nC3Ce@Jln{{ yOHd7d7^t+2t&o=9fIe%#|H + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainPage.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainPage.xaml.cs new file mode 100644 index 0000000000..352f251a18 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainPage.xaml.cs @@ -0,0 +1,20 @@ +using Microsoft.UI.Xaml.Controls; +using $safeprojectname$.ViewModels; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$; + +/// +/// The main content page displayed inside the application window. +/// +public sealed partial class MainPage : Page +{ + public MainPageViewModel ViewModel { get; } = new(); + + public MainPage() + { + InitializeComponent(); + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainWindow.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainWindow.xaml new file mode 100644 index 0000000000..29974c45fd --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainWindow.xaml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainWindow.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainWindow.xaml.cs new file mode 100644 index 0000000000..fc24f9ed43 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/MainWindow.xaml.cs @@ -0,0 +1,27 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$; + +/// +/// The application window. This hosts a Frame that displays pages. Add your +/// UI and logic to MainPage.xaml / MainPage.xaml.cs instead of here so you +/// can use Page features such as navigation events and the Loaded lifecycle. +/// +public sealed partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + + ExtendsContentIntoTitleBar = true; + SetTitleBar(AppTitleBar); + + AppWindow.SetIcon("Assets/AppIcon.ico"); + + // Navigate the root frame to the main page on startup. + RootFrame.Navigate(typeof(MainPage)); + } +} diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Package-managed.appxmanifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Package-managed.appxmanifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Package-managed.appxmanifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Package-managed.appxmanifest diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/ProjectTemplate.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/ProjectTemplate.csproj new file mode 100644 index 0000000000..a4beb3c1d9 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/ProjectTemplate.csproj @@ -0,0 +1,76 @@ + + + WinExe + $DotNetVersion$-windows10.0.26100.0 + 10.0.17763.0 + $safeprojectname$ + app.manifest + x86;x64;ARM64 + win-$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant()) + win-$(Platform).pubxml + true + false + true + enable + enable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + False + True + False + True + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-arm64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Properties/PublishProfiles/win-arm64.pubxml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-arm64.pubxml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Properties/PublishProfiles/win-arm64.pubxml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-x64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Properties/PublishProfiles/win-x64.pubxml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-x64.pubxml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Properties/PublishProfiles/win-x64.pubxml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-x86.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Properties/PublishProfiles/win-x86.pubxml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-x86.pubxml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Properties/PublishProfiles/win-x86.pubxml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/launchSettings.json b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Properties/launchSettings.json similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/launchSettings.json rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/Properties/launchSettings.json diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/ViewModels/MainPageViewModel.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/ViewModels/MainPageViewModel.cs new file mode 100644 index 0000000000..8bb9363346 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/ViewModels/MainPageViewModel.cs @@ -0,0 +1,30 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; + +namespace $safeprojectname$.ViewModels; + +/// +/// Sample ViewModel using CommunityToolkit.Mvvm partial property syntax. +/// Uses for change notification and +/// for command binding. +/// +public partial class MainPageViewModel : ObservableObject +{ + [ObservableProperty] + public partial string Greeting { get; set; } = "Hello, WinUI!"; + + [ObservableProperty] + public partial int Counter { get; set; } + + [RelayCommand] + private void Increment() + { + Counter++; + } + + [RelayCommand] + private void Decrement() + { + Counter--; + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.csproj new file mode 100644 index 0000000000..ce99462535 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.csproj @@ -0,0 +1,91 @@ + + + + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + Debug + AnyCPU + {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {C3D4E5F6-3333-4C7D-BE0F-3A4B5C6D7E8F} + Library + Properties + WinUI.Desktop.Cs.MvvmApp + WinUI.Desktop.Cs.MvvmApp + v4.7.2 + 512 + false + false + false + false + false + false + false + false + false + false + SHA256 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + Designer + + + + + + + Designer + + + Designer + + + + + Designer + + + + + + + + + + + + + + + + + + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.png rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.png diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.vstemplate new file mode 100644 index 0000000000..57bca3d069 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/WinUI.Desktop.Cs.MvvmApp.vstemplate @@ -0,0 +1,73 @@ + + + + + + WinUI.Desktop.Cs.MvvmApp.ico + Microsoft.WinUI.Desktop.Cs.MvvmApp + WinRT-Managed + CSharp + true + App + true + Enabled + true + 2 + Windows + true + WinUI.Desktop.Cs.MvvmApp.png + true + csharp + XAML + windows + desktop + WinUI + + + + + + + + + Properties\launchSettings.json + Properties\PublishProfiles\win-arm64.pubxml + Properties\PublishProfiles\win-x64.pubxml + Properties\PublishProfiles\win-x86.pubxml + app.manifest + App.xaml + App.xaml.cs + MainWindow.xaml + MainWindow.xaml.cs + MainPage.xaml + MainPage.xaml.cs + Package-managed.appxmanifest + + MainPageViewModel.cs + + + SplashScreen.scale-200.png + LockScreenLogo.scale-200.png + Square150x150Logo.scale-200.png + Square44x44Logo.scale-200.png + Square44x44Logo.targetsize-24_altform-unplated.png + Square44x44Logo.targetsize-48_altform-lightunplated.png + StoreLogo.png + AppIcon.ico + Wide310x150Logo.scale-200.png + + + + + + + + + Microsoft.VisualStudio.WinRT.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Microsoft.VisualStudio.WinRT.TemplateWizards.UpdatePublisherInManifestWizard + + + WindowsAppSDK.Cs.Extension.Dev17, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + WindowsAppSDK.TemplateUtilities.NuGetPackageInstaller + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/app.manifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/app.manifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/app.manifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/MvvmApp/app.manifest diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/App.xaml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/App.xaml diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/App.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/App.xaml.cs new file mode 100644 index 0000000000..9b38e0006b --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/App.xaml.cs @@ -0,0 +1,38 @@ +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Input; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Navigation; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$; + +/// +/// Provides application-specific behavior to supplement the default Application class. +/// +public partial class App : Application +{ + private Window? _window; + + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + InitializeComponent(); + } + + /// + /// Invoked when the application is launched. + /// + /// Details about the launch request and process. + protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) + { + _window = new MainWindow(); + _window.Activate(); + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/AppIcon.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/AppIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..235dad2c569272e9a3c7158ce4f93042044ea5d1 GIT binary patch literal 370070 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/LockScreenLogo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..33f889e106984ab9d522a6fca51b036fe85d0ffb GIT binary patch literal 1090 zcmV-I1ikx-P)&b zxMup`R-qg+6mnXG?R5g=!vhZ{B%T$C3{J*#jNh1hW8OF6FkFY~o^r2s_a+uf+(H0QDRr*g(#0 zlNu*NgVilaJ32($r5Ipc0eTGq>2FnqRYZ%onM&!&F2sOn0qO#)x4-h+VnwvMO7&nI zW2AFM!LkCcUPp=kgDw$~e*VUvD+U$;2mI4^3}_Nz2vYZYjrMGoIB@7q(18`) zQrt#(_7TsHBodYtpqqP+>FBS77>@@azm)ewU?)=IKome^?cJ{BKfxk^USdC{qrc}9 z;>4cL6$Oicm6R^7b$LUBO$c_hwFilWML^+AP>UvSV~7(@e|9>H3KjvaKDx_Q#)v?B z7R=R&XaVZ~S19M}X%r+t0;-lsIsP@&xj^B#^HV1Us$-UFTSgFbmL==)$X7 zNFuNTbAO!hlpBMTl=3x)#pLu9d}}k-S<*o|0hI6fnd=xF>og^^vu0#(2J4*TRyvZ> zGqG-|LYy>{cKC+$gMCq$d2#O_;mx0=rl-+HT<2|c$-ii-d8O@@VKNw1M}mueyr4q^Y?K99ZS~GvB;sw9V6)LLn(_)H8ti+qJx5d;4Q9hrD=uhL6ovL*69u$^)}Bjr*$0tZfSyz5qg33VntAWsAl z+lB3+5ih(>`*SZV?-Bm`_ireG7N5)e|780HlFwv^9X<|!09gBj2F|(qf&c&j07*qo IM6N<$f=X5F2LJ#7 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/SplashScreen.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..802c79d6d7f4a181514f1cac16931cbfd654ea5d GIT binary patch literal 12625 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 Rd16UVXrIz5IA(YCe*qp{r`G@g literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square150x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ddba42adbb45821d1123a424657ea248ad7a411e GIT binary patch literal 6357 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..e51416a8e42d483453d06da68f57aaa2c5db4671 GIT binary patch literal 574 zcmV-E0>S->P)D!2S5_J7ldulh3Kr$xyeFkPI7_d zdA`B>2VVEkh3Fo(61wVh&N8th;R#sKfm9ez&?)S-6|usQVq9a4$Wy({3^Vw zphDr%m8mNO1$s);V1kfmw{TFTYjzf3jMPH_D)6sNgGmedoAHL%o&}K9nd``Q&i`D6 zm!43A`v9_oZhakUgCOHn*3cjTIN%0i=LLB>)Bq{4DQ@wd4F-_N6=_b_LV-PpDSRM( zltjK$*w+UgEq55-w7HchQO=CFGWW|p^_;?CkMpjH_$->@HG#egU;^8N1GNI%hF6LE-sc{=N^MNf+#(=^ZVR_`JM)0Zh{x&phK0(*OVf M07*qoM6N<$f{>Q)_y7O^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000000000000000000000000000000000000..bf063eb4d6c4d14763d5d8ccca84c0f39fc6c350 GIT binary patch literal 1091 zcmV-J1ibr+P)%;e)Mb+oQkl#NdTRmo~A<(;gjdxkT%sBw>93j2n~5)+||jpL}EC7HA9`KV42*9;xWPn@+QXxK< zzDg^3Ky?Ou$jm!0>xAOrw>^};O)v{!2@uPX@EORkZDRdI zcwl7<;v5}u*(DiZT>)4PV$$F046BF^Ycr$Dl3kDiY5`&b>)BuWWm*wkrcx{z`bcCf z6)Y?8Vs(V*e^59(jh(;o$I`$e;1GYht^sW#3{L7^o@&cx@dHQR0Idi;wjd>ilfpLQ zwvXI4Atfv;05kWbspzi+8LtOSenD@Sz+S}o0Tr0Y+IwBo2SF`>XB0Qe15I6j&qw$P z%>GJQS1*8P^bb`gu5)?A0~_J&aMm733Ck8Ly#X50W^D|9!pYBGV^PB*pwmY8nM#ca zE>DB8dZ88|_J7IgJlsZFJKrS&H&NcEh!2)szJ_822yh1i`73W=QzX?Ug7aqH7;2aT z8r&LrP+Yby%d$j}?kFM*Y;blsU-j%~WI&7`_`+$$O zI;r=9n_rcpKlRHvIl_7A<>6LfW3Lv0PX#nJb zz+=0xJUqmOSLq=4qVfUZpMU>`0&wCpdi$U3&;ar&?Xbi9;V;i{h8m1}(AWR~002ov JPDHLkV1ke!=|TVi literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/StoreLogo.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be865f0c378b74ecc9dc740f45452b9763e59917 GIT binary patch literal 1106 zcmV-Y1g-mtP)LZf|FOXf6EvNm$pnQ7pc6nR046AJ zg2DvQ0XXs|D4l?Gg0>4lC9D)bV<(oO7w#V4oz96ZEB>%7*#_W_JN^q=`pagsiLv;K zlEUp`h4MMevO=$XFqFQ)iNp_--*7v4L`hJ(C~cHXZ#0Q?wdVu9BlE_|pr_ElH(FI{ z>O^KmtJT_KL6RsNM;*< zxf+@zBPBt2sA{CnXf)G|5}8V)*q-k9`)(9PPxu;xiZBHzm!L?PWB(kkNTQaAFB$&$ z5M@LIM-rx)n9DB881)M*=O_z3AB2)1L_SJYZnj>pY4AIg39CP&^iVq3uT=`Zzvub| zs9Bn@ox!Cf2xexd-0^}2Qk$|P6b?YS4H206e4KX>)Njb7W}tFIEeT>yy8Pq(L#=D+ zu((%xrBm|rkfiB~PP}d?U{JewR-{A* zpnkP^Ss@|g5n^X-e+WW&6QPWaMU1=Sl^LOY$oS+5em~|J{@(S80G|PHcl^!PSVcyd z>~b!X!B#`i9;nH!Ci9wdJw_L^`fHx6zsYf2{wo1=JW(R_8hvv3VAb?~>I=;F* z*q%|{6DB)R2$syqFJE0=6HB9dDa;Q)1-hacIT~i4cfzu;J0Qz5&r!=7c1<9^1X;Q-dh>t~9 zaU8yg2;*!oBuRE2WcqA>0YXTL%z*bo^y>*T_7N^J97HCd67C#?5E0=)OhNr>6kdbQ z*fuh7x)PmAPMak{PKYyHkPCQy)b%Ez*)hq)D9>0whX90}5ZkyQ-)U8C5N2VcuZ|BP zhbn^fglMh_TKqA}4%^0c$x^pN`uO;rZ7tx!8%^(96xYJWdU~coO;ASozQU5W`h~v1 zWReNqLZ)zvPUK$nr_Ic;Uwflz!s}kEE;?!VROL~)4%GMT9?T~S2H$IWCc6UEj7<1s zm$H7FiIIN6vT`N6kh^9tB7u1#2jTX@=pRJJx!6NUTniz$Ggcx^k|-f1VgXID}tkx!s@xO65+;5P9B0avPb-0{}& Y7w}?(qQZ`_82|tP07*qoM6N<$g5HGdP5=M^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Wide310x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..314d297f20b765ee16ca15c4d3a066e0b7233c62 GIT binary patch literal 5843 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 yOHd7d7^t+2t&o=9fIe%#|H + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/MainWindow.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/MainWindow.xaml.cs new file mode 100644 index 0000000000..7fa6bb2664 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/MainWindow.xaml.cs @@ -0,0 +1,54 @@ +using Microsoft.UI.Windowing; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using $safeprojectname$.Pages; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$; + +public sealed partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + + ExtendsContentIntoTitleBar = true; + SetTitleBar(AppTitleBar); + AppWindow.TitleBar.PreferredHeightOption = TitleBarHeightOption.Tall; + AppWindow.SetIcon("Assets/AppIcon.ico"); + } + + private void TitleBar_PaneToggleRequested(TitleBar sender, object args) + { + NavView.IsPaneOpen = !NavView.IsPaneOpen; + } + + private void TitleBar_BackRequested(TitleBar sender, object args) + { + NavFrame.GoBack(); + } + + private void NavView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args) + { + if (args.IsSettingsSelected) + { + NavFrame.Navigate(typeof(SettingsPage)); + } + else if (args.SelectedItem is NavigationViewItem item) + { + switch (item.Tag) + { + case "home": + NavFrame.Navigate(typeof(HomePage)); + break; + case "about": + NavFrame.Navigate(typeof(AboutPage)); + break; + default: + throw new InvalidOperationException($"Unknown navigation item tag: {item.Tag}"); + } + } + } +} diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Package-managed.appxmanifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Package-managed.appxmanifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Package-managed.appxmanifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Package-managed.appxmanifest diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/AboutPage.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/AboutPage.xaml new file mode 100644 index 0000000000..9077189545 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/AboutPage.xaml @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/AboutPage.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/AboutPage.xaml.cs new file mode 100644 index 0000000000..895e6396bf --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/AboutPage.xaml.cs @@ -0,0 +1,14 @@ +using Microsoft.UI.Xaml.Controls; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$.Pages; + +public sealed partial class AboutPage : Page +{ + public AboutPage() + { + InitializeComponent(); + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/HomePage.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/HomePage.xaml new file mode 100644 index 0000000000..ab4b74135e --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/HomePage.xaml @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/HomePage.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/HomePage.xaml.cs new file mode 100644 index 0000000000..3c546496b8 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/HomePage.xaml.cs @@ -0,0 +1,14 @@ +using Microsoft.UI.Xaml.Controls; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$.Pages; + +public sealed partial class HomePage : Page +{ + public HomePage() + { + InitializeComponent(); + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/SettingsPage.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/SettingsPage.xaml new file mode 100644 index 0000000000..7dca11a1c5 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/SettingsPage.xaml @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/SettingsPage.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/SettingsPage.xaml.cs new file mode 100644 index 0000000000..e2b1112ba2 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Pages/SettingsPage.xaml.cs @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Microsoft.UI.Xaml.Controls; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$.Pages; + +public sealed partial class SettingsPage : Page +{ + public SettingsPage() + { + InitializeComponent(); + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/ProjectTemplate.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/ProjectTemplate.csproj new file mode 100644 index 0000000000..7589d99c4c --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/ProjectTemplate.csproj @@ -0,0 +1,75 @@ + + + WinExe + $DotNetVersion$-windows10.0.26100.0 + 10.0.17763.0 + $safeprojectname$ + app.manifest + x86;x64;ARM64 + win-$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant()) + win-$(Platform).pubxml + true + false + true + enable + enable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + False + True + False + True + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-arm64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Properties/PublishProfiles/win-arm64.pubxml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-arm64.pubxml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Properties/PublishProfiles/win-arm64.pubxml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Properties/PublishProfiles/win-x64.pubxml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x64.pubxml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Properties/PublishProfiles/win-x64.pubxml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x86.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Properties/PublishProfiles/win-x86.pubxml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x86.pubxml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Properties/PublishProfiles/win-x86.pubxml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/launchSettings.json b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Properties/launchSettings.json similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/launchSettings.json rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/Properties/launchSettings.json diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.csproj new file mode 100644 index 0000000000..de1bc9cf8c --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.csproj @@ -0,0 +1,98 @@ + + + + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + Debug + AnyCPU + {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {B2C3D4E5-2222-4B6C-AD9E-2F3A4B5C6D7E} + Library + Properties + WinUI.Desktop.Cs.NavigationApp + WinUI.Desktop.Cs.NavigationApp + v4.7.2 + 512 + false + false + false + false + false + false + false + false + false + false + SHA256 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + Designer + + + + + + + Designer + + + Designer + + + + + Designer + + + + Designer + + + + Designer + + + + + + + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.ico new file mode 100644 index 0000000000000000000000000000000000000000..624c2be0d11f883c94f0002a58fca09b3a5e55e3 GIT binary patch literal 117018 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/WinUI.Desktop.Cs.NavigationApp.png new file mode 100644 index 0000000000000000000000000000000000000000..211e75744b117edf522405e12a9a17a6e0591390 GIT binary patch literal 127453 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 z%0A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 + + + + + WinUI.Desktop.Cs.NavigationApp.ico + Microsoft.WinUI.Desktop.Cs.NavigationApp + WinRT-Managed + CSharp + true + App + true + Enabled + true + 2 + Windows + true + WinUI.Desktop.Cs.NavigationApp.png + true + csharp + XAML + windows + desktop + WinUI + + + + + + + + + Properties\launchSettings.json + Properties\PublishProfiles\win-arm64.pubxml + Properties\PublishProfiles\win-x64.pubxml + Properties\PublishProfiles\win-x86.pubxml + app.manifest + App.xaml + App.xaml.cs + MainWindow.xaml + MainWindow.xaml.cs + Package-managed.appxmanifest + + HomePage.xaml + HomePage.xaml.cs + AboutPage.xaml + AboutPage.xaml.cs + SettingsPage.xaml + SettingsPage.xaml.cs + + + SplashScreen.scale-200.png + LockScreenLogo.scale-200.png + Square150x150Logo.scale-200.png + Square44x44Logo.scale-200.png + Square44x44Logo.targetsize-24_altform-unplated.png + Square44x44Logo.targetsize-48_altform-lightunplated.png + StoreLogo.png + AppIcon.ico + Wide310x150Logo.scale-200.png + + + + + + + + + Microsoft.VisualStudio.WinRT.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Microsoft.VisualStudio.WinRT.TemplateWizards.UpdatePublisherInManifestWizard + + + WindowsAppSDK.Cs.Extension.Dev17, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + WindowsAppSDK.TemplateUtilities.NuGetPackageInstaller + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/app.manifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/app.manifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/app.manifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/NavigationApp/app.manifest diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/App.xaml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.xaml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/App.xaml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/App.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/App.xaml.cs similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/App.xaml.cs rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/App.xaml.cs diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/AppIcon.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/AppIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..235dad2c569272e9a3c7158ce4f93042044ea5d1 GIT binary patch literal 370070 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 literal 0 HcmV?d00001 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml similarity index 50% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml index 5c061d1cbf..2dde673831 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml @@ -1,19 +1,29 @@ - + - + Title="$projectname$" + mc:Ignorable="d"> + + + + + + + + + + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml.cs similarity index 85% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml.cs rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml.cs index ef074a16f3..4b2e0e2eb5 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml.cs +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml.cs @@ -18,13 +18,15 @@ namespace $safeprojectname$; -/// -/// An empty window that can be used on its own or navigated to within a Frame. -/// public sealed partial class MainWindow : Window { public MainWindow() { InitializeComponent(); + + ExtendsContentIntoTitleBar = true; + SetTitleBar(AppTitleBar); + + AppWindow.SetIcon("AppIcon.ico"); } } diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj similarity index 94% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj index 2ad24222f0..67cd6291fd 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj @@ -12,6 +12,10 @@ enable + + + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-arm64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-arm64.pubxml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-arm64.pubxml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-arm64.pubxml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-x64.pubxml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x64.pubxml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-x64.pubxml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x86.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-x86.pubxml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x86.pubxml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/Properties/PublishProfiles/win-x86.pubxml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.png rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/app.manifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/app.manifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/app.manifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/app.manifest diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/LockScreenLogo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..33f889e106984ab9d522a6fca51b036fe85d0ffb GIT binary patch literal 1090 zcmV-I1ikx-P)&b zxMup`R-qg+6mnXG?R5g=!vhZ{B%T$C3{J*#jNh1hW8OF6FkFY~o^r2s_a+uf+(H0QDRr*g(#0 zlNu*NgVilaJ32($r5Ipc0eTGq>2FnqRYZ%onM&!&F2sOn0qO#)x4-h+VnwvMO7&nI zW2AFM!LkCcUPp=kgDw$~e*VUvD+U$;2mI4^3}_Nz2vYZYjrMGoIB@7q(18`) zQrt#(_7TsHBodYtpqqP+>FBS77>@@azm)ewU?)=IKome^?cJ{BKfxk^USdC{qrc}9 z;>4cL6$Oicm6R^7b$LUBO$c_hwFilWML^+AP>UvSV~7(@e|9>H3KjvaKDx_Q#)v?B z7R=R&XaVZ~S19M}X%r+t0;-lsIsP@&xj^B#^HV1Us$-UFTSgFbmL==)$X7 zNFuNTbAO!hlpBMTl=3x)#pLu9d}}k-S<*o|0hI6fnd=xF>og^^vu0#(2J4*TRyvZ> zGqG-|LYy>{cKC+$gMCq$d2#O_;mx0=rl-+HT<2|c$-ii-d8O@@VKNw1M}mueyr4q^Y?K99ZS~GvB;sw9V6)LLn(_)H8ti+qJx5d;4Q9hrD=uhL6ovL*69u$^)}Bjr*$0tZfSyz5qg33VntAWsAl z+lB3+5ih(>`*SZV?-Bm`_ireG7N5)e|780HlFwv^9X<|!09gBj2F|(qf&c&j07*qo IM6N<$f=X5F2LJ#7 literal 0 HcmV?d00001 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Package-managed.appxmanifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Package-managed.appxmanifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Package-managed.appxmanifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Package-managed.appxmanifest diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/SplashScreen.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..802c79d6d7f4a181514f1cac16931cbfd654ea5d GIT binary patch literal 12625 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 Rd16UVXrIz5IA(YCe*qp{r`G@g literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square150x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ddba42adbb45821d1123a424657ea248ad7a411e GIT binary patch literal 6357 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.targetsize-24_altform-unplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..e51416a8e42d483453d06da68f57aaa2c5db4671 GIT binary patch literal 574 zcmV-E0>S->P)D!2S5_J7ldulh3Kr$xyeFkPI7_d zdA`B>2VVEkh3Fo(61wVh&N8th;R#sKfm9ez&?)S-6|usQVq9a4$Wy({3^Vw zphDr%m8mNO1$s);V1kfmw{TFTYjzf3jMPH_D)6sNgGmedoAHL%o&}K9nd``Q&i`D6 zm!43A`v9_oZhakUgCOHn*3cjTIN%0i=LLB>)Bq{4DQ@wd4F-_N6=_b_LV-PpDSRM( zltjK$*w+UgEq55-w7HchQO=CFGWW|p^_;?CkMpjH_$->@HG#egU;^8N1GNI%hF6LE-sc{=N^MNf+#(=^ZVR_`JM)0Zh{x&phK0(*OVf M07*qoM6N<$f{>Q)_y7O^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.targetsize-48_altform-lightunplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000000000000000000000000000000000000..bf063eb4d6c4d14763d5d8ccca84c0f39fc6c350 GIT binary patch literal 1091 zcmV-J1ibr+P)%;e)Mb+oQkl#NdTRmo~A<(;gjdxkT%sBw>93j2n~5)+||jpL}EC7HA9`KV42*9;xWPn@+QXxK< zzDg^3Ky?Ou$jm!0>xAOrw>^};O)v{!2@uPX@EORkZDRdI zcwl7<;v5}u*(DiZT>)4PV$$F046BF^Ycr$Dl3kDiY5`&b>)BuWWm*wkrcx{z`bcCf z6)Y?8Vs(V*e^59(jh(;o$I`$e;1GYht^sW#3{L7^o@&cx@dHQR0Idi;wjd>ilfpLQ zwvXI4Atfv;05kWbspzi+8LtOSenD@Sz+S}o0Tr0Y+IwBo2SF`>XB0Qe15I6j&qw$P z%>GJQS1*8P^bb`gu5)?A0~_J&aMm733Ck8Ly#X50W^D|9!pYBGV^PB*pwmY8nM#ca zE>DB8dZ88|_J7IgJlsZFJKrS&H&NcEh!2)szJ_822yh1i`73W=QzX?Ug7aqH7;2aT z8r&LrP+Yby%d$j}?kFM*Y;blsU-j%~WI&7`_`+$$O zI;r=9n_rcpKlRHvIl_7A<>6LfW3Lv0PX#nJb zz+=0xJUqmOSLq=4qVfUZpMU>`0&wCpdi$U3&;ar&?Xbi9;V;i{h8m1}(AWR~002ov JPDHLkV1ke!=|TVi literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/StoreLogo.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be865f0c378b74ecc9dc740f45452b9763e59917 GIT binary patch literal 1106 zcmV-Y1g-mtP)LZf|FOXf6EvNm$pnQ7pc6nR046AJ zg2DvQ0XXs|D4l?Gg0>4lC9D)bV<(oO7w#V4oz96ZEB>%7*#_W_JN^q=`pagsiLv;K zlEUp`h4MMevO=$XFqFQ)iNp_--*7v4L`hJ(C~cHXZ#0Q?wdVu9BlE_|pr_ElH(FI{ z>O^KmtJT_KL6RsNM;*< zxf+@zBPBt2sA{CnXf)G|5}8V)*q-k9`)(9PPxu;xiZBHzm!L?PWB(kkNTQaAFB$&$ z5M@LIM-rx)n9DB881)M*=O_z3AB2)1L_SJYZnj>pY4AIg39CP&^iVq3uT=`Zzvub| zs9Bn@ox!Cf2xexd-0^}2Qk$|P6b?YS4H206e4KX>)Njb7W}tFIEeT>yy8Pq(L#=D+ zu((%xrBm|rkfiB~PP}d?U{JewR-{A* zpnkP^Ss@|g5n^X-e+WW&6QPWaMU1=Sl^LOY$oS+5em~|J{@(S80G|PHcl^!PSVcyd z>~b!X!B#`i9;nH!Ci9wdJw_L^`fHx6zsYf2{wo1=JW(R_8hvv3VAb?~>I=;F* z*q%|{6DB)R2$syqFJE0=6HB9dDa;Q)1-hacIT~i4cfzu;J0Qz5&r!=7c1<9^1X;Q-dh>t~9 zaU8yg2;*!oBuRE2WcqA>0YXTL%z*bo^y>*T_7N^J97HCd67C#?5E0=)OhNr>6kdbQ z*fuh7x)PmAPMak{PKYyHkPCQy)b%Ez*)hq)D9>0whX90}5ZkyQ-)U8C5N2VcuZ|BP zhbn^fglMh_TKqA}4%^0c$x^pN`uO;rZ7tx!8%^(96xYJWdU~coO;ASozQU5W`h~v1 zWReNqLZ)zvPUK$nr_Ic;Uwflz!s}kEE;?!VROL~)4%GMT9?T~S2H$IWCc6UEj7<1s zm$H7FiIIN6vT`N6kh^9tB7u1#2jTX@=pRJJx!6NUTniz$Ggcx^k|-f1VgXID}tkx!s@xO65+;5P9B0avPb-0{}& Y7w}?(qQZ`_82|tP07*qoM6N<$g5HGdP5=M^ literal 0 HcmV?d00001 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj similarity index 97% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj index 2147dfdcd2..4f99481659 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj @@ -67,6 +67,7 @@ + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Wide310x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..314d297f20b765ee16ca15c4d3a066e0b7233c62 GIT binary patch literal 5843 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.scale-200.png Square44x44Logo.scale-200.png Square44x44Logo.targetsize-24_altform-unplated.png + Square44x44Logo.targetsize-48_altform-lightunplated.png StoreLogo.png Wide310x150Logo.scale-200.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.csproj similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.csproj diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.png rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.xaml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml.cs similarity index 88% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml.cs rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml.cs index f2a43695a2..c61137c92f 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml.cs +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/App.xaml.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.ApplicationModel; +using Windows.ApplicationModel; using Windows.ApplicationModel.Activation; using Windows.Foundation; using Windows.Foundation.Collections; diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/AppIcon.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/AppIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..235dad2c569272e9a3c7158ce4f93042044ea5d1 GIT binary patch literal 370070 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..33f889e106984ab9d522a6fca51b036fe85d0ffb GIT binary patch literal 1090 zcmV-I1ikx-P)&b zxMup`R-qg+6mnXG?R5g=!vhZ{B%T$C3{J*#jNh1hW8OF6FkFY~o^r2s_a+uf+(H0QDRr*g(#0 zlNu*NgVilaJ32($r5Ipc0eTGq>2FnqRYZ%onM&!&F2sOn0qO#)x4-h+VnwvMO7&nI zW2AFM!LkCcUPp=kgDw$~e*VUvD+U$;2mI4^3}_Nz2vYZYjrMGoIB@7q(18`) zQrt#(_7TsHBodYtpqqP+>FBS77>@@azm)ewU?)=IKome^?cJ{BKfxk^USdC{qrc}9 z;>4cL6$Oicm6R^7b$LUBO$c_hwFilWML^+AP>UvSV~7(@e|9>H3KjvaKDx_Q#)v?B z7R=R&XaVZ~S19M}X%r+t0;-lsIsP@&xj^B#^HV1Us$-UFTSgFbmL==)$X7 zNFuNTbAO!hlpBMTl=3x)#pLu9d}}k-S<*o|0hI6fnd=xF>og^^vu0#(2J4*TRyvZ> zGqG-|LYy>{cKC+$gMCq$d2#O_;mx0=rl-+HT<2|c$-ii-d8O@@VKNw1M}mueyr4q^Y?K99ZS~GvB;sw9V6)LLn(_)H8ti+qJx5d;4Q9hrD=uhL6ovL*69u$^)}Bjr*$0tZfSyz5qg33VntAWsAl z+lB3+5ih(>`*SZV?-Bm`_ireG7N5)e|780HlFwv^9X<|!09gBj2F|(qf&c&j07*qo IM6N<$f=X5F2LJ#7 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..802c79d6d7f4a181514f1cac16931cbfd654ea5d GIT binary patch literal 12625 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 Rd16UVXrIz5IA(YCe*qp{r`G@g literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square150x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ddba42adbb45821d1123a424657ea248ad7a411e GIT binary patch literal 6357 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..e51416a8e42d483453d06da68f57aaa2c5db4671 GIT binary patch literal 574 zcmV-E0>S->P)D!2S5_J7ldulh3Kr$xyeFkPI7_d zdA`B>2VVEkh3Fo(61wVh&N8th;R#sKfm9ez&?)S-6|usQVq9a4$Wy({3^Vw zphDr%m8mNO1$s);V1kfmw{TFTYjzf3jMPH_D)6sNgGmedoAHL%o&}K9nd``Q&i`D6 zm!43A`v9_oZhakUgCOHn*3cjTIN%0i=LLB>)Bq{4DQ@wd4F-_N6=_b_LV-PpDSRM( zltjK$*w+UgEq55-w7HchQO=CFGWW|p^_;?CkMpjH_$->@HG#egU;^8N1GNI%hF6LE-sc{=N^MNf+#(=^ZVR_`JM)0Zh{x&phK0(*OVf M07*qoM6N<$f{>Q)_y7O^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000000000000000000000000000000000000..bf063eb4d6c4d14763d5d8ccca84c0f39fc6c350 GIT binary patch literal 1091 zcmV-J1ibr+P)%;e)Mb+oQkl#NdTRmo~A<(;gjdxkT%sBw>93j2n~5)+||jpL}EC7HA9`KV42*9;xWPn@+QXxK< zzDg^3Ky?Ou$jm!0>xAOrw>^};O)v{!2@uPX@EORkZDRdI zcwl7<;v5}u*(DiZT>)4PV$$F046BF^Ycr$Dl3kDiY5`&b>)BuWWm*wkrcx{z`bcCf z6)Y?8Vs(V*e^59(jh(;o$I`$e;1GYht^sW#3{L7^o@&cx@dHQR0Idi;wjd>ilfpLQ zwvXI4Atfv;05kWbspzi+8LtOSenD@Sz+S}o0Tr0Y+IwBo2SF`>XB0Qe15I6j&qw$P z%>GJQS1*8P^bb`gu5)?A0~_J&aMm733Ck8Ly#X50W^D|9!pYBGV^PB*pwmY8nM#ca zE>DB8dZ88|_J7IgJlsZFJKrS&H&NcEh!2)szJ_822yh1i`73W=QzX?Ug7aqH7;2aT z8r&LrP+Yby%d$j}?kFM*Y;blsU-j%~WI&7`_`+$$O zI;r=9n_rcpKlRHvIl_7A<>6LfW3Lv0PX#nJb zz+=0xJUqmOSLq=4qVfUZpMU>`0&wCpdi$U3&;ar&?Xbi9;V;i{h8m1}(AWR~002ov JPDHLkV1ke!=|TVi literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/StoreLogo.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be865f0c378b74ecc9dc740f45452b9763e59917 GIT binary patch literal 1106 zcmV-Y1g-mtP)LZf|FOXf6EvNm$pnQ7pc6nR046AJ zg2DvQ0XXs|D4l?Gg0>4lC9D)bV<(oO7w#V4oz96ZEB>%7*#_W_JN^q=`pagsiLv;K zlEUp`h4MMevO=$XFqFQ)iNp_--*7v4L`hJ(C~cHXZ#0Q?wdVu9BlE_|pr_ElH(FI{ z>O^KmtJT_KL6RsNM;*< zxf+@zBPBt2sA{CnXf)G|5}8V)*q-k9`)(9PPxu;xiZBHzm!L?PWB(kkNTQaAFB$&$ z5M@LIM-rx)n9DB881)M*=O_z3AB2)1L_SJYZnj>pY4AIg39CP&^iVq3uT=`Zzvub| zs9Bn@ox!Cf2xexd-0^}2Qk$|P6b?YS4H206e4KX>)Njb7W}tFIEeT>yy8Pq(L#=D+ zu((%xrBm|rkfiB~PP}d?U{JewR-{A* zpnkP^Ss@|g5n^X-e+WW&6QPWaMU1=Sl^LOY$oS+5em~|J{@(S80G|PHcl^!PSVcyd z>~b!X!B#`i9;nH!Ci9wdJw_L^`fHx6zsYf2{wo1=JW(R_8hvv3VAb?~>I=;F* z*q%|{6DB)R2$syqFJE0=6HB9dDa;Q)1-hacIT~i4cfzu;J0Qz5&r!=7c1<9^1X;Q-dh>t~9 zaU8yg2;*!oBuRE2WcqA>0YXTL%z*bo^y>*T_7N^J97HCd67C#?5E0=)OhNr>6kdbQ z*fuh7x)PmAPMak{PKYyHkPCQy)b%Ez*)hq)D9>0whX90}5ZkyQ-)U8C5N2VcuZ|BP zhbn^fglMh_TKqA}4%^0c$x^pN`uO;rZ7tx!8%^(96xYJWdU~coO;ASozQU5W`h~v1 zWReNqLZ)zvPUK$nr_Ic;Uwflz!s}kEE;?!VROL~)4%GMT9?T~S2H$IWCc6UEj7<1s zm$H7FiIIN6vT`N6kh^9tB7u1#2jTX@=pRJJx!6NUTniz$Ggcx^k|-f1VgXID}tkx!s@xO65+;5P9B0avPb-0{}& Y7w}?(qQZ`_82|tP07*qoM6N<$g5HGdP5=M^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Wide310x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..314d297f20b765ee16ca15c4d3a066e0b7233c62 GIT binary patch literal 5843 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 yOHd7d7^t+2t&o=9fIe%#|H + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainPage.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainPage.xaml.cs new file mode 100644 index 0000000000..6fc70d7281 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainPage.xaml.cs @@ -0,0 +1,20 @@ +using Microsoft.UI.Xaml.Controls; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$; + +/// +/// The main content page displayed inside the application window. +/// Add your UI logic, event handlers, and data binding here. +/// +public sealed partial class MainPage : Page +{ + public MainPage() + { + InitializeComponent(); + + // TODO: Add your initialization logic here. + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml new file mode 100644 index 0000000000..29974c45fd --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml.cs new file mode 100644 index 0000000000..fc24f9ed43 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml.cs @@ -0,0 +1,27 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace $safeprojectname$; + +/// +/// The application window. This hosts a Frame that displays pages. Add your +/// UI and logic to MainPage.xaml / MainPage.xaml.cs instead of here so you +/// can use Page features such as navigation events and the Loaded lifecycle. +/// +public sealed partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + + ExtendsContentIntoTitleBar = true; + SetTitleBar(AppTitleBar); + + AppWindow.SetIcon("Assets/AppIcon.ico"); + + // Navigate the root frame to the main page on startup. + RootFrame.Navigate(typeof(MainPage)); + } +} diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Package-native.appxmanifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Package-managed.appxmanifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Package-native.appxmanifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Package-managed.appxmanifest diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/ProjectTemplate.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/ProjectTemplate.csproj similarity index 63% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/ProjectTemplate.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/ProjectTemplate.csproj index 4c6b8df175..5cfe00875a 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/ProjectTemplate.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/ProjectTemplate.csproj @@ -1,16 +1,17 @@ WinExe - $DotNetVersion$-windows10.0.19041.0 + $DotNetVersion$-windows10.0.26100.0 10.0.17763.0 $safeprojectname$ app.manifest x86;x64;ARM64 - win-x86;win-x64;win-arm64 - win-$(Platform).pubxml + win-$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant()) + win-$(Platform).pubxml true false true + enable enable @@ -20,7 +21,9 @@ + + @@ -37,6 +40,22 @@ + + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + + \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..cd995617c0 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,14 @@ + + + + + FileSystem + x64 + win-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + + \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x86.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x86.pubxml new file mode 100644 index 0000000000..a70c69425f --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/PublishProfiles/win-x86.pubxml @@ -0,0 +1,14 @@ + + + + + FileSystem + x86 + win-x86 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + + \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/launchSettings.json b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/launchSettings.json new file mode 100644 index 0000000000..e25cd6a4f8 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "$projectname$ (Package)": { + "commandName": "MsixPackage" + }, + "$projectname$ (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.csproj similarity index 98% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.csproj index 7051d6815b..9641aaf7f3 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.csproj @@ -73,6 +73,7 @@ + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.ico new file mode 100644 index 0000000000000000000000000000000000000000..293c93c712b60cc247af947c4db96abfdb218ca0 GIT binary patch literal 447836 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
  • H~cwwt-e9 zz2LQy_k*#|`x-U=!R7Z2dqAIca9>{@!*VK*;N4(yBl+1d%2F`{-aP52Q!DKMU-te> zLRgLuh1G+#j@P3)&AxCLe^e*L0pakE`&??c_m&n5Sm})k@VpokwB8r&hufDrQPm{u zz3}q?8+e}JwP0S4DeY|)iZ_*d~-H(4j44bYt zAUJL`8`5n_59hsK*bH*7_c*_mdAlCk%qZ~BZ|3bW5%-J*Ot@@1faj$#G0H2#J-hh& z^6zr(&HX6H{}`WveoHXs7$0&yIou{zZ%uHFCEjDk=l31^yoZW^H#d1|hciO<2j+9FCRzi9)$YY-S$Q+2@o!+v5M z^PE18;>v?f;!)ohgnjwX#5Z)0aC~V#5c_#H>3NNg=dWY@^L;YJ6*^Wq^Ge9&=(xO| z^B8ui8;VipX=u~9U$F3fG}M)2q=eD|uH$c-zv8yGKRCd?f$-CU_RiJA9}L!IyT2@f z+pi+wpT8OQ&HwS@-{x^FAKn8y9OZ29@#FLRrW1y_8JlJX#;^+Zfrw#psp0{79C9JC z{L1)OnPJK1qu~PLN z*TZqWIxXxh+~=EF-${!ZU+McV4)F08dRoXa6@c?_g1kecitum0;~0D7g$(~z;&_Y= zZo~41aOaG#5C1%Z?+v+2+w}1)Z|r-s<{gReU>tLqxX`>hY=Qa!8q)(A#UckF}%K6sN*cyx=9r(m|Kk-$+7&6c&Bhaln=q}`J1*oVVoS=7f$5&3NWMhpYZ@=V%iG!t583UeQz*5 z_{*cJe~bmJUMwA3Hv>TNlQy>gl#(Ew_S0JN6-CsuQc}pUgq@N z*yr`x^F8xmKgf%3j4+_*dT__~*OFoVbr2BUIhOtXqusCXHib!M}G~ z!@ZS;{ZJ+9;6vLM-zm5qzqf|W2vaZ9&3NhhtzKLZqwMoS+%k^T?;d&ZQ4#LVPttw^ z!06@Oo9KOZa1_3uKt<1rbyS}QHsGEi_l11_QFRXZXC1eup|6GFzkHjw#XF;Z9i{D8 zj2BpEyDrXazX!B!{erRRIB}nf>KFVwc)YIR)Qjm@=V=GLw!n^QWw36b9@GJ!+lF=& zmM_A#FF^)jecV?H6RXkRu>LoEca~!>(+8k`Pk%uD91l(mFIEya+(vx|?8ALIK2&-R z#yiBM{U&gZV4Os|O#JJ2w{a}>|8ac9F8ndpf#=seEAl>!e--B;>MljwI(QAp z|L7D#hl1;6%fQ^PyLazCA{d9E@VqbU%qDnC>Ok;$QLi}uJ@yp(NC{6|CEdx&+3?w7Ov* z!~c~P?61C!w=U6aA8H%#F*qM;o8Wb*Z%4CRc8^1qaRmNv?*N|(+tj`I$FmIhgkU|6 zL$)UP`5wq+)TyuAk0qdwtf%QFOa6}XzX!4&`*7?nc&D~D>uH$x`rtPIzkTxYv)dhD zu7J;k&kN6d4_UQpRSo<$Yaj3s6=(AJI8TpYpNI9Lcy)mF+_r5SRhVKuo*fDVIwrr30p388< z(!1X3<}K+9VY~0_c(Il^etY+L>>E=O>;CTc3sX~5>+m?<`g*S;&i}!P`|T|o{`m~; z*?FHQ=eZ4jI~&jXT`ccapAqc00{cG*%pAevdCy_zH9wgp*AZJ3t0U)aKQ~^u0?Vpu*!{(2p{nD< z`i-Hs#|@nvYCUeyhoRQv28CLU8xgYlKHmr7)`z?-pYQsRm*w*{3b#Jw<@$Vwhg-if zbp30GTR%DU_SIuu|6%CkB*eNt^kL#_<98r_2jX`ieh1=rAbtnpcOZTTs_Gs1FwBL= zx_)w)QFTOY=6PYAa@Ok7Ys%=+44;*RQJ;*^AN>%+uBzR+OpLrkT`|{(I#9WY-?L-641s6; z^*ByoQq0`oK`ZIx8JxbA;fxC%vtXw4s3g3!vR$J^}O=K6*%RpueY|5 z-j;IJ*IWAmfO7-mdhdj~aHoystB);wIB-Vw0#yGToNEN+xdhbFcM9fwz8i|L5TAZ? zcffLc;Y#ENHLr=Wn5rQ+cr&)^30VliPf_R8L*>~I$U4+38?qe2@zbtF&a)Qg^&0G2 zSaO{=N6Y2-bZFlJ=GFO3`7DFQp8cjxn`&XcKjeVm?_eAk*Y*j<0105)uGR3&WnM3H z`SIz{y#s7#3591qTMC}@lLrHD2kRWb>n+5r;n`dAdgFLLbg|552U{Glx%O=BxnjA) z!NS?WJP-8uzg|r9dhMFIp7ZhP(7OZPXKGkx$>)i3ufA=DeGdtr1bX~FuhT2MA9ha; zy{B2VYfN7DK1;(h*MYxYKzT^ua$o9+Yrffg4{V&_=)xvJoq*ZH~k z`n~x0E#TQ(ADg%Ovb1%fO7C`6W!~-suNTj6uf7Y9eGh5;v*Co-Z})KAUkU5D*k6-)NR#(l`dwa17}yo=AV!#Jh|#;M3J#5lYv7(*LlUF=`6V|z-R zljqhtL^&=%h-)0^wd3CBPru_}P3Gqq9=*6_ohn-It#?(Q$G!YJ?m_fe=D4RAcQn5U zW8q=kE{;G-afe(vXeG~yuRUlT@-c1-f9-{>UlV_Z}>Ni|vL(=3ssUWD{g#6%xM3vl623zM!la(;VLj*fIQa2qfYkJ4MjyuKL4zP@nLr1mK$E z^+q?23$Gdcyp(vsd`SC#pzv(xV`+HxmfqiO9&KP8Gv{wu?gOd#dBwL0bB`QOCSHh} z-0V!*G36Us^?n^$_z=c^ejM^7YqMYfw4+gVr)+pjBCzv6$SGuZv%6| zg5S7q%{$lzvN}lCxWBD=7u%R%n_t~|mMYk89nXn+{PJjZNt)w)LzBZd#)@ft%RD4U z?@v7QSYE6~n#U!Ox4(~LazE=HeGHeEcg<)kEB@t^<-pG>@S48ZxAr4$pCD^Lsun`3yXz7p>C*(+it&FZgR9$J z>y!4^_+(y}e*+56aFCAg5%vA(7>qCDYT}T*y0=rfm^1i%TqcfD9+2ay{R>eB5_pLD(5C!PNUTwm>z_0#$*ra9zkEHNVR`+LKf zVcE)k#dDOHz8~i=uJX7$P%vAOo+ z@;Eij8eUnde2Nl646pyRhDwr_&iW+$=12{v{Je&20+y4%ttsQ5Ns#V;^-1r)`=r<3 zeDd=jebW67yq1AFbLjK}3*BRy-?5YhF4!{RU<~3dXZ78?Ga9w2M{EE8BkFl0FQU zmq4Pn8{xJ^eFW_)f-%1YdZ>c&9;LDhuaVcw>kfBM%CCo?f$#Cq&&b-gSk}YGNJ8wl zfjA|9f+LkrUB1+L;By1M>5~M%dOiGW?qibV&Id{yi`#6#HxW00?>Bu8QM}fa&A{pw zV3xSu!ub%g{agCY)n)JlKIsE49&jJzeqb79f8%KQAKm}rlOHej$&O#=DW>-#Hr#`w zai0R~h}m!xe>1<^#cp6fx4-WE^7lM?T=O|nh+ks1s!qgpRG4Oe3=}QuRE`CfHv*emTOTF6`!#c=Daxy5cmJy;rGFF1RVuq#4rn52LvMim zQ8pvrw&lxevIXCy-U_jDEBs?eob_A3Mfp{A+1av&%zwL{^ngFn4_rJDSRQzPLIBVG z;79kpCqa7M<-~^ln;(sDc4qODT5e7{YV6D=F1;AGd15pip1F+|%U(RY$J;9`8-_7f z=N=HoIE%7o%^DdycB~8;GDJFc>LeXIb_@uY4`s1y`SHgerA3PtGJE!HL3@GnbYxy| z@^j?o^yLF23GE`AfYr@kR(CnGmcyaoO>*dF;EPz_01nPu_zph&GY5MvgDil|h0KP` zLZV>?ewzlF3Ymg+SeB)dzw~w40)F0#ZzmG3+r9&4A=@}l{JQJ5v;3xp=9<&G93%OQ z@0CFhAQpsQF%Y~w@PP#7X>zpJkM52fUWcY=v+VZ?&WH9O=xHpmA@0@uU`%_lO6+8GDA7hZUwTz1)Iis!4ZzFL|#Z7R*0HB*ce=aoTt zJ(pj8xn6U(Zr$`bQokem8;k+rj?vFZo$|hHhL5`yc-;!DZ9^`>IFlSotZjo2OK#o% zeNFMF0Ix;hV`4ddxcJk6_>Hm!G3NGfeZVYn>teSR z@EasMzIV7erP~QO{_8l-%Oc57$pij6+wkheGUv(PEcrX|8ctq}1@;_{Tp=Wf5N2wbx!N7hQCbTyn`Jfm_1+6aJo-<>zuUcFH#J<5u_) z+rFtL+rO*naHWf5<<0Ma@vp(%z+>jPf54wuDv~o9{5u+W8v#5IM+sggrd7br#B@5! z{6t`SsBDEFvmM_ePi|RL@w)>U-r3rfA5cR^!XZwD+_MJT?em|x=TNb@c}2s5WG)e z@$Ba3$j!Tl-YwgJ)8ucAH)|`V6jv^9?)bjCY)2foqfGI zhra=y7UgN;8l0RCY-a=S`4c6z=b5_y&Q^%;fZJVd>Zo|Q6z6WDNPyX)dKj>#Z8BxX9w}WHJ zlQWMcrVY>D(y;C=-8^>Gc{x5KZ@ky4RV%sl(o6MO8ji_V;hueEThD8yzjWSt=gEsN zzKEyhOp*O&;GEy7$EGAYXcTlgm3=fltAg+dlS5;ffa6Yc+6+ zI1hN1jByS}XBej8LmRF$f$^dlQndU7#pllN;dlQ~3pfU5e{}G?8>LEHx8!dvv0W>4 z)7kg}F#M{>hG!s8h-`wSJ|{VI?vQTqk^7*n+so1FM>E#}oU@Ik8}fJbJAR$iQ*TPF z`8$^jaIvAkbMM8mXZ~Gxzwlh*`ZmO}#eCf7?YG~Sv(7q8Z7iQ@Rl>39CApcg0pr{i zD^}=pqwR{!&B)Iobk4`tyL(+G$?%DHwoCwT5^Ka+8GmwqXRB(m1AcW{Kln0*i@?qE z;WtkPH`9+8?_wHuA)UU*DDi`33i~OBo@*U#U%gr|L!LbkD1EFtX`$R0gSVo_H`RiZ*Dval^xZ(=+ zkE4Tv29I>3a=qK3;oRSZBx2YB2$z3j2rYLs;yHO`kd&SobfHyqQnPt`<1{5738pbs%*mtv$p_%oEGb zx>}L~Ue4%t3~&oSV;h7VodkYPg0Hb2Sl;+Je2{0PXxZJ!-+_nWOM5w*?JG{c192lb zx(8xM_9>m;{Y||;dy&6WzXRXksb?4tEHdFC{*FF0 zac#K{Vw(Mxdb{~M#)hd|e#JGQYO&|5w8H{!b#;D?w~drzD1 z3i&eir<#%qzD)b68vG3SGNtRl&2z<{MSh+JOiy)rdXkH2;u?}W9ox^7+%bQWRB(HG zyXunO5jZAxAsLiTj%5DqmK|$LI_i=;d3t#f>kPi!VMjg*o+8Pd!y` zy6GmnJ(|A^e=nJzL(T(R=Vqly>W{!Fv8ucYZX{m_?*~pj4HYmbU z@#o9|p3(l7H6ws&ecr7c&U_b>j}OEmLVCyDsgL)@pFC2AdWj@9V82q z-KnNzw?_=P>EH01KZYrwuR%Q1e|{b~_Hs1vya|&2tR#=TRyn#acsSs90L$ic(2r(6 zY4UU1D{(#Blk|QS7W-q)-vP5-iCyBDm}W_V?{HZ7`(EZxlWQ#gOH54En1@&-r&fez z!*R1~nyEczE{ho8ez)Cro7{8HJ#ycD_i4Ke+g=Vex##Y?<bksHU%8TenfY@a$!G^|MNXo4V-M_=BL4j4Aoc|~z&zj@x#w)~bT)W88@@+2aGeDo z1KchCbyBjfm1I&EIwku`D6o4@OL1KuAS z)mEQ4QkF4uG_d)J7tgM*QEHeCSCX6Q4|4ka^UpQ@qrX6`M&f4v&Ne~%5o{}a_uY48 z_s(5<9Q#vRTp~q$e;Mz$ABvKni!mf1#fWR7>O;pdh4Ac%=gi)xN)~brS)FRQoJqcP zxKjC&+(}NQFFW`m?18#F0U|N7_KQWyH&MpMzGbTuG-#LT(kX}Z6+1@8N@R4SM)8o?bOMzf9_Pw@fmV*B_}IevNN+JDqR)wLSPt}&W3NHJPoeS!+QTFDVp=Nqmp5*CQ@e zOg{pj1AM*VK^X*2?uGmuV?)h#xcp3>HjZZhyPvM|$;`I!UobJ#5M%#4wu7H*z6Rz$ z+w-26`ON&y%gx_@`>o=cIE}>3#>;Fc`^#VcA}f}GD=?9ZbF*^-*i}3jE)K;qEnPAo z7-S?mTgfr8Ktvq#EvIiIhc~;_Qoog)ncLmrN&2uVovTaEPvEa9|G?c#!vo(046lIT ze&!(_Bv0p%r{PP3tA$*hhxroZJ_?pe9&{n^XT*>_>q>qvVAmrBy$-{A;`lHrgp~Ae zC^D#_zIQVEQS={r(kG)I^2wOT;ODG`uaN;intAAOap8J!^ZG}Dc}Ut*$lo=V?r3A_ zi}=ssXz;UQ+G#UnY^eS3z|Y-~6WP5PdWxw4<2}XrPWY#WXW(^dMR>NH#;#qvtuV6voAeJdR!6BbIZZpB3{m@s9i)2#DOAH{}V*MZO}p zO9HsEzH+5c-qkb+g% zcDodgZX)@>bAFFn%Du#`N*|{zL|NF^k>dV`i3~klwzaM+V;}d)_@{g_;c1jlV4N8E z(R1EA9>fVhddGj^Lj&8&(eyc0lZ>ZI~ukE6)Af(RMgc3c8`4x;wbNPkkxs z(-3l)BfxM`Uo2DlVII8fhtEvEdB#5z6vLCA@yVoT6J!E#JqBDo3>=%Y2!2KOCk{tz zTU1OC1DifTuT}fs zMLAv=xLFo1Tv!dh#>o|7nY?2;x>sI#McWI=z2Ra&;=F0IrrIB;<@euf-AWKARXQw# zpUKVHc+Vy(ZsxObxjBErT~YwvEa*`)z?-!9^k2!D1;{TH_Npy~z0=H{io(8TJ)ATqa2Qgf5H5n<~xwHGe0`;{w(r$UBKm>(9DGU8hsyWDYg)?}6We$I{Jxa0mV3FHUyxjJz{2?I))5*En3Aw-OH@xW+mJZb;F! zlw$bI#l5Qow+$4tB?BGoma=rEbl~B@GI)9T5mF3XPkjOSg^w{A<1$WuE!%W(YNC<<>^c&#k4{bSIX}&W#{e%-vkVw9U`OVCKeD>*QS||D$ z%w1GUJOkHy-=g$2a`}wbbe1CUZc(pl;L8RMPm(*8H^H5p?+Z@t0zYHIjX*NcTnda9 zZ3UhY3l?kuZVl6GaX@l4{128TzzUs8~Q_ zM@2xTsUQ}l_uji8UApw%*$P|V`G4P;IdAXI&U^b7LD}6IxO?YKy>riZzI)EOckYaT z5ST_%OoO9G!R{E0@kZot+1LzWmgl^9bb_O4bNmzhOpb=_OuukB@Vo}N-tl*t+vaTb z4Z8!ko^MzhkLLTc8VK1ijTp4r9X98Ekw zPz!d4&(Xl(P{gJ4W`l<}KMkC+f8`+`&%R%%{e^!Kq0K>#UX8T-ewo+yY#pn_m|f8B zuyf^EBI+-uX7~X}AFO+ARJ)`=? z_*}KMHPDAbTvrOu;G5zvA!FjL&q0WfHP9Ft<7A2TzQ9;_?4Njx)}iuqF}WcZDW_~I z0@igK_TlJwHvGY!IJY;_prgRO#{sV=Ae|^O{A7_4NFz@X8QsuJxtyHivTby}r%yXW;oknb+nl z?O)OP4WJk18*kp5bhX9v9@-nlGr?!DZKZd85w`bzfn_(5Q+sA8&&KmNdpM2fgMWctO|U_V+yon= z7{7T8F})C6(hJugi0ceFR%9sR#)@ZPTJcOwpX%Xx>}i;q<1ESUd4i0FT|6FkGO?_9 z{uk^HB( zA94(?4V@T@ybPAX&7**2rqK;W#-5IL;7m+AbFQptb(o9=M^AzeI0-mrnxGu*+tI-K zFyL`0`oSghRrrH1A|6Nk8T_2EIV^TZOw%uf9laJ<-f_Qt{oc9q*)PG#;9|}b#`$M@ zA*bD;eTLZnIk3)H^|TJ?qrp-ce=rq}ZJ�j^#`T&wPKdrr=ro1}hP-%PU5+yK^P@ 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[Yioy%_$*|){*9$E%|zs0#P_wCx1C&XaO*g~vYp=bgIOq0su2Io35uW!wmWi#>@40;Nt<(T$t$VM{kDD=>~VfS&F&q< zHMiS$X_H=S4=`HUYq37e7TKG16XAL9V%YFwcuMec3XJUD1=;R~ow*x!W`2htsLIH3)8+gulH@w4=Yn;wncc} z2YB|eM6P80CX)y8N$e22QX1Y;d$Qag?2i}572BzY5SCk2m0-X zV$s*Bx$Ec3n_s@IW#~4)d*a^lf_Tzr()0Zg#_DaWrNgXF^5od3rOotrMJ%*|a_?(Q zyLkS?AO4V5{Q2B-&y|iHqWH75<8DqYGmfR)6T;2JU|~K4YkUkmcc0%w&hB)+#NMbS zu~%XedlBgcKfR3n^_U#i`bfEdSd-H8pbE4Hl46?oMxrg9orUtCt?KM>~r$?l@sL1HpfWpS;(EZeIq8d-aJ6+zIC7+@b*Dc7peAJ^(5A^w!~h=e&Pez zehb`bi{c~XUWVP>zD*le9xI>f7cRJ9)51hqGTyA~-5X`%eUEwfc<+|r+91c;`3pBK z^7QZ}oYS(7e?D{+n5I6e&OncY=UX|_$cy0{Y^mrt#c!kc77%E&8XWc6`fVNGEFU|4%)~RtK7`>}+jLLt^1{TIB-RWVc`c?qOxYjW`iKe> zu}<78zQB3E?D^}2|Fx$WAsz*OCYR&iKUwV^V%W+<-O@G!_xt?oZhBmigGcXt-7GhE z|E0vBYxP!8~PCM;19orW+ zW|ch6?N?oOm7EVAU%hgbme1?Y-@86lmD3MknPVEluuPdVHo;}=it!%D0?WiEjs4WvXY{&k%lD)mXL-%`J*EBWS~ha3m4)}C{X;vt^X!lHUK;DbGx53H z^Kb2So7zo$F86%ePP92*oAQQt{+`>=gV4YKd_{O>|2h|ri#q=JkAPB9IgAkJp^ z@ejjUGI`UsAm&*fmW6hT+8W+)G&!xqS=wfl!}Hs~GkEutd7r7gsXIK6c1D~r8vp#; zdf%aVcKMySuJ`uAs(Xx?=;EKx`?FnPnW!7d%5B?$<>uh$yX<$eTy@O5liC}!Cumo= zcC))~Hpf+0Uge)9!m->{j#C|5;oFv-cn<43p`6S6{%5Jy?o`0T`lXJTLPL>nT7K483si!o4K@N5? z?5@-1;F#*qCQxvOidu&*y4`w+2WB7`Vre`5J$Y(OGkIp* zbJBdmi}?M%9E});`EtCzC2b4f6W-qYchYj|Tk`z)7C7(uL~4QaUz^fW&in8}ElbcJ zuyX#Q$F1__)VKBgX1MPYqo0)F%SKqS)b2@zY2dUm4zBIiZ?bi>p~sCICyXzrvN?!t z#yR+|!4+3rA>+o5)iM=8b~VyBr0txDIhT#^GXBG57Hk5=Ys*^7#fBB~pYk%|aTk2l zSa#-S>hbQMCLDrw=IX1imfi5{xln$@bd9p7 zfoDE1`!9m^YP{HfW=F*WV+Af=$YmB^X8)ir#2&g_tdE1+j(hJU&$ew<>Z=jgstdr= zUj}>eJMF`BY*Au^+qlplqhH3j3Uz}R<@ro(Ggub4Y^FENsYm2l9%tvcIk$6v((|FW z!SfkkXWK%2AKvCD$;Fsz_LsWxK({`D=Q;QtgWd76yFF~(wK+O=?5G?~n<819gB;C$ ze9w_F>tFxs*Rpi+60NtAqGGkDb0FiIfNPCA<5^jU!MY`1a(Qgje^hQkKTz9paI?nV zcp$J$c@l?etN3QZhjThBj|R`L&-gGn@8T|(^K8`vm*33ZAy$rTd#oNy99o>)#q4*z zPVB2KLZ1P8_Ue?^^%2Mc!FuFx;JFYfmYtn_e%SutHj8uYMBJ${`b;jlqDU zhCe#;ajiGT^$d^9jo$|^9ir#gdK3Ka*c^I3@O(yxbG&*7uiN>Qui_axvORmd*A9T2 zgZ`RZp6_~{m{#8beUN`0{11JGFq_G+N<3pdhCFWDlI7$Vd-tn#>(+ACS!e0{=BYT^ zFioE3JB}A$e6cirw5e=Zx8AE?|1UXP$32pFs#&7WGLa8lo5RKPzu0#MyMTQSE@p^t zwztj3J*zcE{JVHm+ZTH#ub$$?tzl~tkHi7(1H}Tk?T)^`*Ykt+Mi@UI;P5lA!{nAJ z)w&%Y%u}5c+~=O_*;}wV5KE^I%q0as1I7tFzmyEe?sns7`iH;x#V>R`2kqo^FwK7Q zE3dp#<0I6Cr_g^sbjT1{v21ynab#NPYWjzMh}CCh@cgvjFG4)q`OFQE^yRMm{KwuH z4vhC9j@eJH{uTIrJSgOeWCGMz4)IU4N%_};eZHk@` zeYW%JGTuo0nf@f6X!uL{q@($ZNI)ve*gR5>pL(U$5&kvpXrug-XhJKHB&s12dr-Q2A+8h zvpKSJvpozy2l>;lgUpqX$Vet`;yJKwK&gK3240x7ai~4B&x%QUTqvhb{R#;a&1E;h( zKDK?Sa*K8F1}$5*)IJvSF0pFZO_h_&c`W&wwl&Ya6gqM7B^S#@7hj}y32l?=kT@Rk zlv7TTyY9M6<>9`kyf^SnIjJ4!$0&G{G0Vrw^AlRg+tc3h_?sKS-?Zn#uVEMjb4@&FlZRM58ujzUJoAk2guOs%% zu^AV9*jR0J;@{N=_4#oAuX^7u@6Bi@uS|JOcy99vFUSY8J}8aj!1rZ)6!r|jY+4AX~Vl>+s8N0CC^u>Ln&IDrn&wu{2oPGA$dxUAjc6H3D zo8)NfJQsIfl)Z^(%81va%!x~4o8#On!f{Zx`OpiV!}A$O(D;kb+b3{*9pWG4Q{z|q zZt8QwHW-JoRJwpiId&s)KJdt8PseYtACAu!ENkHR?f9L*vtb%zjt&YOm-ITsw2h6< zLOkmB+izE%ru{%UR^%gANBjn#iS@wP=68YTbmf-rai$-%Rk$SjY{Kx2_`~SsWAr%c z0?*Y1j99{i(E{8RfOH z9X#i;#~#zZ7RIL2iF*X)U)_FJWjs@!-rC)Iw2Y)noS<&e#RUGW$kB-|4YYyhW|;9{WkV9 z&!yeMXW%ncWPgBzZzQHMUbGC34d=|k-AyWbes{mt1$;wy;arh-+;NBYCDM+hZB3t_ za%Mck@Le4-&S#NWnHgA{JHFSSmN2@&%f(?r{0JCKRlPu zFnGz(QiOx|Q(+pUM~1_S#&0C+?@nM5SEsDc=a_l+ z4I*A(iCFS(9*zg%+}??LVEDiE9T`2B{dDZxLu^^cCZqp6S^uEM?5ux}=eUXI!%kuU zqWdnaaWwn7*~hK(i?AP($Mbx|09g+9pP^_9%_0A`yL&s{jpIz4f8lR_#qZ z6T=!0gI)2nFMjS}5q)iZk3`2l5F1EiSB%s9lZWm8Dj(>SjemY=@~fUM08=*42W<&r zjhG^j(!MYpx;bqSj!osUJg02(&&Sy8War!X4aV;DT)ac(=?LcMAg=NLjoMO(WiuY_ zK7*|TtFt^bdw;QAd79X^L_BjlDr1i^&HEA8hHY|`jnngxT{Hetr&$M9|CQnAipJN` zMo@n9$9obV#F)OH0=~Yr=WSZa$;Q`_qZ@WOQ+bh?l9RG}VpL4x&36956yBFIBEg9^Oe?A~|{PUR|&(-r83wGOU<#%x2)~v0b zO`-Zw+W+Tb?fY0KzLlpjF6q9Z59l-SJ@sVRbMee|#-5qNFpX=(fI(vV&1Bb$wwHZB zu%h~)-_GUHQI9Jg$&HkuVTblA$DI8ZzLGA!Uq?(PYz^$7jm&Xrq36TiNQq}$Gb=Ys z^?;w|l7gR$f_Ua{^j(+3H2K+V56FmkzYD)p&V5&r zETjFqyto2n)P;BimO|ej?w{^t)v|QL81nXMk8^8(M@!NW1 zjyjHi=D1_}VHV@?eMI6ah-czl$3HWM!MFs^aTB+p{CuyMKBL?I@LCDIV|)ZUoj8{< z8kPmRZ2oM}{trA$yD&W4HuALD(T3w-4x5m6Hs_?t3tYQgy+!-W+ahW+cqWJP66GH3 zZ%Fuc!~|r^d09S~^O3$oOU!y$siXYpVolp>98VlA*t9_L?2fH4d61)tWm~>l_mw<1 zp}E{Yw2Ay{_#^T--qqz?7`!%lJ7|lLPg$;i47nf2JtYqfe^izW&U!t5`U+N31U^cS!z2!){nko_4vJ>y}(x zGbXdCO?$;M&Kfg@rp$eZLmecvBEc}p+M z%g7}K9#{_bEgc)iJE`=q&R-Yk57GN@{yLN;3-8CITJ9NmZ#kQYxK@1thkrP`bNK0K zJJJ~cyc2$R7>vtpBVL0(qKjv)^B5)+h_*?~2-oGgI9Z)odmk?>k;B>?sn}4T448Cz zjMyQr$=_yY630Ql6B+$Jjr_mTg|;pA)W>+#GXjr|_g_Bhoa zmtT1=wP|1*EZ?@m!y|Np=Q62np62-H#JtsLDtIn!BbJ%r+E}9cDKtD~r3`?EAvqMcOu$8(&BJo$ryuPMW{bv(fo1b`4_M#y{WO zz#yLdPJ z$ycziKi0oQz7lCQ(yD5jzQJ=XK}yKm)+u*l&c+0>KTyX!z%DH_KR@J847kZ`5N-E4 z{sD1`M7$dKV7txh+r282yLddkve-w@g}o&96z-$3yL#Te89xCx|MZKSy+T7Jd5(Kc)l=+Uv2D2*1BCBK9reoY z^<}et(QzmNeQ>W6Sl^hLnRybnC9q6I z?eH!tF>CQ%#)g^v*eu7gJWWOZ{nGHL7x#iljw_y@LU$pR_8uP|HtGL%qdS|NXNbTJWFBI-{N=sp2oKa zIj)m^V;UgiZ*Zr4@`mIdXzALEZham?o+-uBhvay9Q` z*hU#^q`hIdvE0YcilEHg-^3AdK%A6&?}YMq7aYPE3Hh-iPUbyOj`0=~V3{ZvKd1ka zXfJF%f$6aLG};o41y*3!D5ingatq4NXRH9r9Me?}%Z4q>_Z6O_>v}c7_R3=SrqhNW z_P+uzV+}LOa$U%fcv!^ zC`)DUOON*9aY>NsFx4S4P_ z-rMkDIk)-SM}1f2N#{N&-!8K=!Z7S^+qcq;uFe`DrfGi>H-;HEM|__92Bjn0Z*vUp z@d&z)Dzx{8z zr!ueTJlx}fpp9V|VeXcP>#%WaAup-ux)tpI*5ip$wqN-Ev(}S~XVz)7e1A1SxmY4* zTs#@3z&9sg-;fG$lD5r(>rPp>ZXM@vOWe;e;ohJ7g9*nSk7FwQwoa0=&cL(sTT|VV z?62qJz;@M>6%En~IeN5n!7}9p6;C;e=XW_W}{r8ykeI{JzCTv@q=K19Gc8t9s z*JNd6d0B2N`}Z%+s06G5%E#nlvN4&tIps+|2y#3L+y9Q=9RI?(BX%Mgmaw{OCQ>&X zcR#LoIPG!#PGHrpNjw-PXm`5z=J9T_bC`2GagB4&!|(R^{T1>eMy0p;k z4a;rU&9QpH?Qw5=?cnxeZ+k{?d%m|F_bhwg%nG(Q4;;VBKR(&^8v@6V^N(-nZTE}k zZ$##AZ&A9%TRU8j_n*?)>20^CDcw;|k6%@~!C$Mb+gpThFMs)129GaS%9yvk{B2_~ z9&eTC-i6y&xf}fT=GZ((U6ykH0up+3hVtuhRfsqhU+(?O{hp+oBqXY9OkCs0N}M zh-x6Jfv5()yBcVb;9MJbjybAiE`U|(ua(8 zB&`9fJLYcvavgQfKA^oK%e{1+zE)1R+_sHnj+XRmAXy!<9I+;u1h_#FFkF`QM`+}ExBR`w3gIF~~?3{d{b z`oH!R7h(6QuG^qj>zq1Hfdh^g-&ZL;?m=0PapgeS?@jsJ^(=SqRUOx%H+(-jwaodh z0N;DzyM1`S1XCC6y~OMBy14!>+{eRLs`BWVzXS)EoGg#@y*xjr!Y%48x$N=o#qNS4 z$;bOcn0`fHi{oppOxUEk{r)yNUwPtdOT5o+&abFANR9zu_HKJ7le^`Wl|OBYWOjw! zBbej<^>9CqKN*Om{+zgWa@p+bebjjfhH|H@GgnTN)t~>LEP1UV(kZg! z^;2c3r8ffW{EhU@8x3V?OXQkty`gSj){^-tvb@!~vbOtOlD%Rg?&94G5P+?ha$dhO zwxG%0@^mpko59Wr$~gEN#~p>#0qOgb$-b7kUEh~Ib#fP;cj419nSF0e<~@ixX&y#; z)JqGR#zfO&$epwh>kA(bN&m(+q(zo+%p#=4xX!YNVlwi+I+C58r#L{9kP-uwg)1Zc zR#|cz^|_+O&UMeTZElYJS0d$OTlJT_J|j3E^V(7N*_)QjynlEyU-TsA*TNhuOP)o- z{2WU#2Sy_2x}TOJUy6AJG-3T4td~hG@SBO-kuO79gSkEyVxEn*SH+~wMKRgAd5vNq zzo-OlLGpJLaZthzaAj7J{M}=@9);GcX`Ij;2 zbOX}$UN->S9kmOS>)y1WEcx5o^DqtwJ3eIF7uZ%q^xb(*+Iwj8X^(9f*hCgR0v&~} zFMBaVmP1~YugP!u|LVvJ$dz*BK1(ZJ!uFSu{Cp+XU*WdevJ$zaRj<~O)vwi&jc?bL zxy@=z=U>O+UU-u&^PqLlU^+VCqw(6+ahvmhVrC9H>)`X1 zuhf#&kg>}7)w(L{)vwj{enakSUaun?FelR1Hg)Cm-^Ju}$o`8vW6}-lU49Xh_b!b| zevvo9M?QRz6nwx7mOb=2Y4gGErtYt8cfKq`drw)edbPI7O!HSVWF_YPSq@w*Lwn6*EG_3cwk?OP zxB{H93g@nVwU)|x?HhGv4bobClWYwV^R;i(ku9xi$rNx**WbjX#~+aX7?bY6z-PCk z4Y)2Qga30mO5>F&l|O)I`dd(*{B82a{*>~^{&Pd?#Nh(go5@@YRYm{s8OlE^xC;h1 zbw3;55nBd(T;=x~bog~ocB`?zlDZDr?;P?Q**&kh?3(>F(tl<5>?dT`tbZd%n){>_ zEqhfqcR5$qV7|?D(DAkSw%)q8kg&dv>yZCC%%hgoxq*EC`&!ERJyrf0iUV>$*IV$t zuOGx@!{TXL(-ql*kPqK?O6ax8K1|o$ZCF3Ee0`K{16XHxkE5K#d-m)p4?g&y+;GDU za?UyDNP`9q1hWGozuK*4C_NCJ5kkCxT2>(}F3%j?m;Z)kOZ zY{7(%;M0@xPXjegeG*|M!IcCph2^%$JVspWj&r*YsjdyD^VQxw4nl zQF6Fqz~pbg!}5ySd+I#i^U?d;pD9zO$gQ{Ds^45a{q)o2f(tH?i!Z)dF2DS8x$3H` zgx|g2Uy^@OEvL+Xl#PLo3J&dQ4ozxAuo3&PF3K3NnYRcMcTUfo&>(;Gkf< z6s>G6YvJ2(d<%GKbAW7aTTj!LcfEX5s|?wIIS*y!eIlD5#rgjNo!l**ehAwS?Y_$a zv}fCA(yUoCIri9NRqoVn z%G_l9lb`%V_Qym_l9Nt2;e>>3T2A+!81J?Lzn2ZL?KZw0lg+Imw>I@;6ZBT)1zpbU z_hVECbU$x0bbTZe^j|Rm4%ms52TaJL*iyy?DO1Rs z{(Hjy3(6m|ZIG_)Z@J|bA44%q&lzenBQg$7^) zbbm8+b~F4jlbgy5+cts|q;}9VIB^$v0gGuc29dyHsRQ9Z8KzB zyZW-d{eiNreSNGSDBJOSTO05`t|wccMS$UPjN!Z==^r9nkZ-?FK1AH-^V>Z6lLzPv zm_OJSalyRY9DSDjLVklQi67(Z^!DxB8NW;LfUWy^c9{HwoPW_p7pYxGou@vzbsStb zKG+}f>#x6FZ4%J80*{C`E=QWHh=58wPfr2kdvl*D#y*R`*u$TSIc?; zWtzlQ{$ooqKrG}>1@}*rEzo<)ct`sKWM_v1We3vEjt6PJqkUc34sOVwcoS~;JgDSh zOppw@uYmm5{2jPzBHw&`iFElHpzj?c@r`F^~p zY+d-6ac#YuZn{Zjf6X=5gvy?Bz5$pZCs5a}x%OJ&vER4tch%Kb$)%TGDkq(ElJxJ7 zwiyfCGGe<_{#a+9JND(Q8Y^32+ih=4xz$60t}?YdK(@bwZSO%}B@2e*LW$>m2|2;` zOJHCOY(Dq^@CR~-{#50=vqK%(+37&Z>~xT1et`7hL6Y^sfs)le19?5%@Ga>6lhAv} zf2A+~m46f22psHsNWOp#@EPpB9?*Sa;0wsV8`=c*2QP+wGN1PY9HrCc%mEw8{z1qkCvmp$8_XT zN68_F9HMrgJx@8C5B}aR#P}$G%6CU=`1Bp>LRae}L1#N5e;>LGPAFdWF^<{@+06Fj zpEDU8KnzTPERh#|E%7b=WINjRtoBGB)|af04n{givO6D)bdcnBK2Uaj5R;<$ka5l% zX!D=&<=+JQ4{lij{a+0X?0i7BkNKH=h(3TXVEd^*Ksx|f_?-UWPmy2`aw$ft$RG6O zoRB}}Z961P_Ac))S+YcqJMK7b?fj1=s)D2 z;DEoPi2)7@9+sgG)R#|wiFP1h3x4uz_=8u(WNt6-JHzStgOE4Bv1)bz`;1fSKJC25 zjTX5Vc1R!9S3S+{LY+NOaykMJXshFSu=iv$4xSI$L;rJUK<*v};(0TG`IS=q zO)JU9b#gzfCAl9%*FQd3DDz#PAbolWWPhkgze8o{pTOg2+jq@_%(MOn+yCD_2fznd z0UuyF#kfD79o#7+2{ei~;c#I1DLA3XYaRO)$ z%E_L1ppI}EJ$kg9a>^;n`_y$;{?vQQz9DqJcduT0JpZu1^Kx<}Co5aBGqb+el(jQc zGI#7$nU|A0agVZ6_bL0_5xH%IoCzU7vvCKRZNrGktofOW*m4k#yo z){`wa-+XhZ?z0^r=Tq+o_%>C%xJ2bnnX}&aheX-uWapIEd3$d3?@{)E4@AyNQc&;R^T%?rC9D)Byti3~hkhW;7y`fE&v-y4&@;P4HDe}(J33_E}v@DSPn zhXYpL3(A2lu=TIf_2;k!alG{nsVxZK;A8X;wr+&7L!Y_igLlJZYuj)LW&cb2?dGoC zN862YJy-X+PFs(0w5Clx&Zq2iQP2B>%-u3%Zinuxp1ZcbVcu)^DgWKQ&y@U5@asOQ zr+P}A&4>K*KdCMGkZ1A2S6Ho>?|!W>|HY*k02ZWp9nxya?+}xMPms{QQ`af;q8^87 zD(Q{>h9O7Dg6HeXFvxxMeMlHfH1z*@JRrMY2ZRs0pJhXf}f&Y;5d;_5F6qGqyqC{{aW6$V;-#=A@i4Ax!byNf8V}+)sCkx z=gObDPdop_lTOro@eldlt@r(69lD>DnF*UXO!nk{&*tBiwNVP+jY**|w*txysi50| zQqTq4Kh4nRjK?!2p1&IMUsj5N-HY%I5VQyAB`zL&qZD<9P5(uGDd~Br6!$z#N_rh8 z#Yl0=9(qsxXS+Z8pLm`7{tOud42%R1^oK3K;Qfoxcme|({^N0gwE?sPR@{s2z(L-9 z()XSW`RrE6A9C;U$Be`nfsfH&Kn~ck5oJV)QjHTryWa(AsL9;TEzbMMBadib4*hwz z-RJK{7dDdrKJj0z7q<8N6XzTDl>1?Wgtq(S1aLpuGJnpCQbb>@+X0Xndx7VBQ|5jm=l6&FM;$3& z{kxWo`aA6Y2fZ}z0S^nq?m;XEGL5f>?6*JXa{$`__=3yf15o~}{)~Npm!0Epl#hPw z`Gbj=(485=xNy5GV>0K97ga7^OwhQlY!2Bkhs>9{a_2hhigq%W8*jW(V`kKMSN`M! z#sa2)IZcn-FLmFy``9Lh%O9M8!S$4X;iP+{^f(au3fc8K9Qh#I;AaxG?N2%NKOOm(O!=e8=a5~W zgVZ*seJ*_=yB^p!>^x8R@v!ldT@o(_4vKRmUWCLvUZDG>?}6U&gCM_Q$BPUPK+pg4`vnjm>hvSDD{uTxMN^UdgSv0}uP5UV$8ONZFDHM* zbQ#ywf4 z3ow-c1E`01;Z~8)aE*cBfuX+qM^OH!LjDa!CY&KM_k5Z8L~R)ZSxvtt zu)|d`ne{1bNGz%NKTP&P`E%S34PS>_<2B z^nX0$KmA;M(DO_g$uE5^VrEfMWwT zA}@Sg`atGizz6J&yfX<6m);| zX(D4!7a0fHkB1#G1@fQYSiX7lFd6+9PxcdF|BZs~4~GmT|6SO3hykp98uEVv3G!#3 z5Pd<83&?(4R`s}AK1B?uH*~%)+LAshmEB2ClC0E+qi!v^tV5b9|<|A z?9cRMKjCbV$&mld3q|JqK*rn)y+=DRj{ZN|?X9E!4@C4H`T<^a(=5DVQ91MF}qb$5%t>j9}lX%yC#ej&HwG=4uO)1JEAOKj6OY zV?_qz8e`!jO`_hP2kwXLr(A%cz>xp!OGK7kDHCA>47eFF$3>8LZhN%vuOR+Q`J??` z^Ar-=fVIHDPV8U(kaWYb{b1(}MEr|_2gs(Fg7@%!8?$U&wt1YO$AZ-B;17rZ@ zfN4L3-3Jbt$aWvH|FRKe-x&IjG!yb)bcJm1dA!VMf&C>t5cfs9v4Qf3?Z56h$h{d7 zFt8bU$!jwH(LO z{eZi6hqQ}`1?Lrc7!cZUOoJfvA&@=&Ii|tj^SIk*_ZHyZC?#D3N_hwP#A8^8lOFUyYc zzn31rfZW0LLtr-!`AddkU;uvifX&|veF0pGkhy)Wca>z~JV*n-7x%P{ErK-hRgA^Tyl8JQ2lHns(y zUWdNJd7~-*w8nqATpzYxUG<;xXFPy0q21Jf*tzANAN?44g&qgQM?+WpL9d2^|0(;C z&|}7OMgk85v3*TD9|L&Lu^2G{!+_cW`0e9ECLAg<73a->tY<>!RrXgP7IY=j<-h>i zhE?U$~`OlKSENqmcMTc=42=H2Z0H^>`hy6S01bZwgE#AgWMti(GAg_!Xh#f9V9(_sUE1Lnfsn-9IG+!y}Hmp|6$vps-~uo1G~+735vFGb6rkpbZM zk+Aj0K=z~WLmwgJ&oM&-q5HiN2jb${e5v363X^lPZ8bsuW((%!<|c^=fdlg6Uf=L4 z*k(gf*JDreVe?Vp2Z==+0{&~}eOEYN)Usc5gKV%t>k!T19up6U66KQQhAj1xj1A;*odJs<|Spm?GF9>?!- zoO8K%9MZrrnxi<&$3#Fuo6p8>;=K;oAMr|KpeD)Rvjum61CsX*gngPxaZ z`>FeWqFu232H1c<7wsQ}t*81A9E^tU5BxdC6+^0O^M&|(Hf|U1cj){k1OUhKC4IJ# z_MoQ8U)urp4fwuKdHtX*2o8Y06)kU$SU&6k*O#9Qxz2-4|21s5`C+mR+vdpJWY3&j zu=qN}fNqqmk&R^pVt(u&W*P>2V9}>&Kd|Hj070A2c%S<@w*}|7u_cm!>UU8X6I5F; z#W-<|3xWb<`pMvaq&eXIdC>8%sn@=YT`qU!TG6_D9ywsy4X`7AAyXgm?0}KL0ow!G zmPJUxaXpl;&C9ZM=~5lHSHFIJ9O*5Q{8P(6VGE}62WbnU@^|NK1O^b(pLHtu9vC3U zFQ8BFB=Wo^Znt&IQ*GnEMc|TEKa%*|AIKosdqd#sXKq-geY((-7JpXvL%v#dh##z2fcY~%iDs)0QmtvK|Xwf zLL~4(F7z@Nw!vOYxSskPxIV|F@I9q4PNH0GdG^_7l4MZ``u_rm#y3;TNj>@eXbz|9vZSSN{9MI@=K z7s2kMDi){SS@doQBRu%ukYJCd3TA&+EOjP|FVbegUN;R@ZSCL-T`C%geAV8!S5j2c@@cBWlMRYeEP1j z|87y4YvbJ#-a7~Hop|pVc;B+l$J~y|mVW*E>HDBI{}bnf<2BQL7nR4_QWNEG^0PU@ zO&%51pB=~ClNWW?lW!Oncpvv3p>vS(oiiVA{KhKhow4714~*~sbKWQWUa!fGIls%! zh5IThySty)x22}ZpE9AW_ziW|!ydi&OL_5~VO+zo6qJ8L_LX_JSj$uPz0%!$4~_Tp z6Wt4p_@SkL+Rwn72y?jp>^Qj7`sm=|L1eQxJ|_js=J zI?RI@aPQ;di^uc&yk@HF>b3py@Hm!(=V`fpJP-$zKV@&_2$nC|Zys+;P0@c>CT@LE zuB_VD_GX7!U9k@0oM72s-uvo( ziM(#Rm4-_4K#TLkGXpKw?kfIF{i*F?nLllUfFr+wfxdNS0Uh{r7XuIY;A5 z!S~Dg{r403{dejHs%d}y{(G3b%WU&wE}l$0-elb=-?KJR*T=qhqQss<9lsirj5q5_ z-M0>u1KvJJQ|-6vN$hp(djSdZn!V1~L(oQ$2ehqsmT;qR8xJT@b zT6(>oeSz;mU@;CbthAoq*25z1UF*#QB=!o<0}i$QK$*+k+s9e}2ibV;rGagVPqQI8 zuLS3oVa~Y)EdB6@Ka|r?KV4?eoTcTXZ&IdS)8yUn`y5aA%g*=6cH9<~$&0AlmUZO7 zR)@;L?;I|Nv~EzEpo0g!bC}e5tG*`#=m_x zcVt`4BhLjz;<1Ly`-VQCn5zpMvP{G!Ib-RTZ@j}pY>}Xxq5Dga`USW1xA~Jznl#aQ z#jd;Vx`gbB0sd~(sF5^#`f0si0m`Ovuqq;V!(H&(;I2G=*8S(o^VBbsJ7rz(?SrN6 z+a3oH6Ndl;+)qx3y$l%wFSZzOyLHTaP>;2JDTSJHIpxUf@jk@fG4Gz>U5ZT+apKz| zkB)pyxuPC$LOd$|z)>rqw+$d4 zFvff;V$ZfzISw%Hcl=}1{pDMidu^+)kE~vLwOXx!Q+92FdRbn z|BG_{!pi36^c!uVoqy$(SC)}KvA{m3^AKll`e;)*J1$A%Nce&+**&oVT zoz9cPTOTdQy?2tF|6yar67O?p>m&4@hUE#ebPbSLN!vJhS+J=@;HkL>4 z2W%Q%l%Hq^&>rP=d41S~|MC3-#u7}v%%T6wk;jmi*>1;J8!&b1RP9d)&ND;|u+RCj z%P*6LXa@%L>z}9-+5^M^{Q_cPze|`;o&4l}`$^?*wixOy*0Pq$z~kbWG-z{l;`!7L zgKl$qY4R&xTMYT}Sj7tLz=3);H`IEXIvLV+~-zi6)N1id+TW)OukFli3IyebC zme*D6&>jI6b%CwHXEgcxIpyCWuuYF~+W^Wrj04yXC0`@yIF7V$co{;HZPUBsx#A0!Bv(3nxCVy@F!KZAab@A(w7_#_> z#)TLYqP{UcWIg~mf>_xNd>LL|nf#javc{9h>2G-VB7eJbrM%Uy1Fm?C@;Y<06^0#G z_gPMj1+eX68^E%_C;V0K-)ON*0{jn|)Awil&y`v!vJ8UYX%H27LhV{yQdrtX~->e{OT<8m2AC znBX`izVd@>pVKe@d5Oo_yM^?b@}|`XSF%R{pFT%2fMpyjm{v zSA9Qls9Ud;LAib#|19zbWk(KBc|wNQfBw@l*R&t(BcP2(yzqGCdT@^UuXdc~kbO}| zJP5phD9UE~AL<9N>~1^2>v5bJF_4T0f^7rahy5)Po18bhQ>RW^MSCiLs~^_8ask?S z=GNxBvbXhw?Ld3L=NlG+Z3uNbA%DoXacAG=2*iJyj(S|V#@dWJsuLvIWb@{L6-HVn{HBm=l3S4>y)o6_x*jH?G(S2vNz;! zbw!@HWZRPEcAWBoAJb!Bj>$jF=5V>@p%IUGK1VC~jL?6L|Dhkq;=kJNKxWqV1j_+= z((c!UeJ&2V1&_7gK@89yIPSRPq;ccM$_0jls(^*PEq~SxWl0`TeGBlu)gg1rgtFwZ z)KBa4clH0kR%p+m|BXJvcSgD3Fg@1ii$_K__2pkS{>!)}7q&^fKJOET0nA~2yUCw9 z%B6|%Ap9=VW|b*Bp38g!-e<{@CF&D!+$nLuI3c-}ShxXx!v4nlR-V1Z|EycpVTZ?6 zp5R_?ck51NkNQ(N`gS1e&=&fT7XQ`uANJrCU9Yy?W%6d|^QV1p{I9+~V$$2Pwv{=K z{t53#9E6l5!2yN^9AlhN?sz+2v0eZ>##u&>9xXTDe6!m5>=(S?f(x|YknIEg!u`qi zV_7akyn>khw)UUO-skW68|TZ%b3c)lTT9zu7X!qK`3tPNK8yNFuZ6v3@X{eNY1Jf8 zpBV!LpVRlFjn5eImusfUz$Jt9`2LFr%0wLd+rD?I??9aJc#ZwR*MEOTI~lQTr1W0c zNBS-*jmN3)AK)a&{BH0-jLDThF_4{|eZI*%Sx%qXKFdsOE0~o#iox#T$?=>?*9k;Kj-*cd)?;s-*Vi>zhm;>u}^x{;roiL zL-H{fVnWA{xMNA6%k%>&clG~Fru6q2$7O7ReNIfU^XV&Ep97EQc^X$_yvHAlpkqjI zk2&k->V0{CSC)|ZXvn#Y{9PQtKRDMtK5U(JMjTkISZ`Ft{&0M}wv&!LUHKp6x5XEH z=(okbOiiBiHq7(J?V!EZu^W^DFp!mt_&>P8+F;Xt?dzc&(Z5H#opPl9n(Qf0!vOW0 zF-0Cjj%Uu_>h}d=z&xMV(PK4sfVdH`a3HS1B{&`dvd-DLb7w;LP4<>U-sFKZ!{i>e z&BX$J1&$%HZ_)3MkYL%!U&Jq;hy0w-e~!Zf|1u6^ZSe&b|3lkN9kzIWo3Gwg{iG}@ z1C7Cf2SzR%t&h!Pd2Ndms6IpADMubp{$?_{yZIrE1#v&hkw__z_pW7F(0-uDlgIzT zfok`e%!4^G;BPC#9bxhhZX+J{_vDtjjQq)=h`+ENnY51&XsJM@Z8QKlviAzxb z@$7|^KNr^qa4~>m5`F>JySVjL-PTuR;Dl?|w@H0$drre2mJ{+HS=P z_8Yb0fZt1GsbUhPg6f{XZ8h!FL!GJK!ImR8vkfK=Xj|EM5BA59 zXUzvwJAt|nn|s!JZwx5$g_b`ncSuD^k2iH-Sp!oGS_9+gM`G(wYX~TvMhX4zq;|F+;s+L?G9lZkFP7Vdv z)+6jyQu@8@!V|?ej z&wrA*mW!Kz4S!hiNxtFzZOqA%%}e!o@(izUzDH0FklDYmEmZ#8NWTF7Upc#g=U6g+ zu-`Z>1Ka+N-@TAFAyql~v&_l?zJ2#1$5|2s-~qO;l#9up@~7OjzZDpv{$AMm5>HXJRqZC zSXVhF1%SW9WSnkp*R5(fo^OoR4|BEEpp#stubu9_`$LN>fezCP_OjQ4tc z)PKAa@R#q6kxSfbhOP4$+6Y|E{@^^%ZsRq1AG{ARZsmC0M=bGJvmrNSZY(>7knsex z7rKCVLfU#Q3po8blp~?T70KWBS9kd%{>M5=$SYCTPCNbC*PqKpT`u$DYaG9ccs*_P z$45i%K31rE+TMo9p6zW;PR>tppAGK4ERMu${OI!=Jh?*m+t2ElkSBS9=TNSOmyydy zX&b>z(7K z67uyV68;x@O#KYgd&JRBV_mUs{5)|V9ZQiS@q+pp*cQ3eg&2`F$bxys~7#{hW_0NQL%1-58-oG-r-NX9e zy{ula{(*ZR;~Vu4d3_|_&-C6smg~Xt@H}fHg2&=&37xm+wcM3wO{6C;I@j6$30uR&q`f&f7c|LyU*&@0qQg;fBHTZ z_J0Ot5&XSy;ljG^eQe$C2W*65;QzPx9e`aG$^Q>gu^?baMZvD;iC9pq=vhwhJjHUS z-dXN23a>&+OZmmoEVl5{mz0Ve`uO zy?r~gv$M0aGqZu^)Zlt4We)pY9xbo7M?X&f*UpI#+ZO(#z0W?1^RKFlf4uXS`)&o? zvs_!Y{T|j$c`vLA--u;ff@bch!n2h3-n8Ga-{q0*PP#ju3?bGqlI{`{T#pUN^Ma1^(w*A6)+x zc|LLuGV8Jzc?F(-$sJp~`rB{Yw)eL`WCN2jfscCj0>@xn*YRBk;o7(SMdJy_=}`WF zUbptH%k;XbcU@BHbwm6ft-qK*y!KtPLgq#HCazgeFV(I1Ix8IP{fHA>`!4~2sh4-N zLxtiUr*+_Uf%mAMG_CM?$7vW{@%MUx*TEHkuN!zBRPpyZ)xECx`thsd7&wlB;}|${ z7zhgZRCTX|1Ktn3j;{E7oq+4Q0sOd50Kcviz|Wn)>wxh9O1+Ay;&_4qB%lHn$0Ph+ z@dJSa5Uwi}fC0>;VDnjT1jbX1aEk+?CR{hcb!+#MpS=s$9qcvW{=$EaY7i9rGseNX z64VHvw<)-x1m9IpuE9eOBlkeA<21uxq$kXwDt}#B#FI53gBz z@n6bL2ZE_G98u1)GM7CbsEi}{TL`{&sQB3Ld$F;xC+!ag!tYOk&m9cEfzKbt>tQIn z97gK$sLSQL3)gZA_mlaXmtkK^U2Wxh!2Qw@@pBCJBd@-&ljOOJ8{maFf$kHQ5<-h6 zS6z9~BcEkP=v3g7xT>%|_Qn3%wz{~1jZ!_()dR@yqfF{^gK9Z$uO>tn`w1db6{hmOG7eJ2LDcNBZ30$nFh`6i0={W&VDaUPb)8 zVsXQI(tqSg+q%=nUU9^63Tubt!_l4V$u8g{8u0G|ZA1e{DHCs(J%SY@M3onkZ9Rx?u z+GklmzmE{l2M!!4k3RaS?o+`%N@~k5h-IC6D(v7O_l_7bLff_g_09)kNIU842TBxd zWMa`zn4>`}l0FN+L?APcCG$=x*!+?9rTA`jCBEB<5)U7o^uh3y;P>MTEQY@AJ&@!4medHZ+Jmy$ke^rxi%oM!l~-F7J1 zeV^rVZxH%s+oW<0F36YTU}wAsc!>us@H}IBYuw$1#$SQK41J{t@r(+CB_6g;30+}p z)axWk>T!a^;~m-hES~*LHubnlMu2w4wQ*!5XsJJN#AR(}!>h~rEaYTQU+Tk?(i!Q- z`kO;vsqkM4zrvetx=Fad4gGih`A%FPa)!Su%e?W%8|9*lE|R#oIMf#47NdWGArm+0 zKmJP+z6Q+QkpX)mVJ_K+1gKtI4!Y4TJ_VPER&Namn=k~Qcg$?69@#(yM|^ohuxx4_`rN$k{CGVET^5ctrj zM;z&UBi>1f(a#nXF@~8P7ZevS_;94S;TUC8n>KB{cqPOQ{ZTJR+z0lj&(Yroffq3k z9B`<40Nx!S{rdKk@4IyIVx<%!<`u_t;wN)rb4dpsWcEj&0)8?FaoV4O!8shrLyV~W zjku1Jz2lllRv*NT8+x+jj66*WMxQLPea;5%`idk2Kf8gSgg5X`TbcPn9U1ko;nhQd ztBKDyQjjTk2JmX)gnnH0E$vu-yl~+{rFZfe;^wBCZ<5O{zf2}hn4o1Hu0KVLwF277 z!v}JAuaN8?9N9Yva1TZXo=Rf*{d54b1@yBS%wxBdMD~`wz2M6*>;%aleVPNG-Xng< zcWh!@GxA~LhV(+-xnenJ*-ec9l!v(PHO-8Z$E?0+>W7N47JNtXGu)9};3jW)9myMr z_@2{Uzk=deDa+pm+K57J(j@zIgMn?7jRWWfa@%bMc3t7Pp5C(7cN99ahZEck~b)4^lP zqG1P`@FD01e0mRXRQRrJ9eAyd^%Kw!hk_r?d9PCZC~k-!%bOXOhVhArAI2*<=iGA@ zKgH0S)LOrCV|7=Ife!kC&_nzbMvf2x{m5kKjVIwa5-=8lcJQ0xrwp;LSgY`FKsWe( z0qVG{naHnKN$JwdWzqAFECG(@K8ZQm=)1wtx&kjBfk#7zNCmHsds)U}44VMjnSeex z2(n`6w9YIM{cB$v)oviGE*RbwtefU;Rkd?8uDVPVhqhIFnz2bet9_!O*J?wOI=~` zQieHmsiC2=)I}n50pCwefS+qbHZ~X8)LdqRx1=on7igzH@bV>O#s5N<{zCFLJ}=`Q zbY$9JfgjMCQpnehTUXk30a%AM)y4=x1a;Xk!s@v+N=qK}*}(mg5MpDXs|V`b$AO zzeoSN9r-rk={n3$!JEq_N%+89WbRXtjX19T4ZH{PGmBQ9%rzo>Q`@Ez-g7MAhqzH* zZRJJf)n#V9-#rdvIA~}&c<>73;8P&~Cwe^HqK?EVB}ct`XrJQqg%+zH*-9r*nYi5lEQ=3~5H0=as@ zGoT^hiHSV90CJtxcfoF0b;;CY_{Xkeg?=mzabH~1hQtx(9Bku^t)L%_^J^}LI`w+w z-+|WvSDUUtpJK+?6@vR=;5|w^#1C>LOPQ6dD>T zAAkI@o|A@-Rs4A4J@|m3BeZ3K;nk(vo`;N#acmRh9P;0=o6M2tnsFV5K1CcUo^ad_ zJ`{VGq)a(qWOU7N4yZFE?bt+Jjz6aHF^eBN-h2CRxV#$U8TobTju*g(F<0Ms zE^=dEzMztG+}nh_1^epTZ2tKi^Z-7mdYuU?8S@|t5AKenHF<2~oo zoSOkhIp}M7IjK^R_LCH(E<+B+c_mrz|0IQYrZ7Di^Y1iW3qcWB7r~mEk9L|jZ?0=G z1E9}j`mNxHc=C9);s|`90Am_}q>NpioQLNrQyIGt%uNs@iiz{_CQX{CPKW!gGyN9u zV`->-Zf12>pd~OQW3NJ6jH+bvTaHP57i*qaqh;c_#kn|jrPPu7W9lC3{fqdqyjuI2 zy9ayuTAqQ`!hGRKLtO>&!?`EZ zZ-xJ8A9L|jo9EQ^F;Vx&K6V^Gh6aga>Oha={rc(s-^%>U!pAnxp{<#_zYCAl3lUa6 zvk#tJ{LvoAdk6Mz*;!eb*J8atJ4f*l5)vZ2cJ5NUZsO$e{LXrEy@mTa7eOaljI}(*Q{px6=K^l4CsO)xaZ}+v-}8CEE#E6EHTpwE2>wu4 zHh=zny*$wR&ar?W;)XQCdTNY1s{1N}qYIymf2DTz(CJuOB7G2N#Gl5@f<9goR6aJY z6_2`b>i*4mt- z&dgN2mO=;5v?FB<4&cKF8ZM-ucmF9qpy|6E5j6>&r zN1F6+YMyoJum$5Ww#RSCQK?b-8|jL1u`Et-EJLP0udX}up(RU}=>Ct^KC>z8Gj~VF z==-&8pScfy$ZI+Nq8)XS3Sa%p)HVh;-vXBJd>MWij4PYs?(0O@7;8@B#JM=&{y@6d z3;Ywfw}d}woKltnoO4egO-f&-9T3Ks$_6Zqw+Hu_iVxU?Y8Ka{2J|Z8J>2!F|S><=z7t zyPmj!&lqV=kH9r!p6lKMcuxB+`r0h)N5#ZG3cMu3=XM|eg2js$@8e%U`EtUz@%rvz z|Kq}{du0(O)c>V9uqCt!zjL1--B$szc6B^*`xN8*J0IaU;tn)p<34Mgb<$BM+y|~0 z`5@9OdHYfk7r>F?2K1u*i@b<^ z6W4klzbnqz4(P9&v1by;1vj>7w2L45@+iLSIL2>s-}!y~n{J_h)AhCH-$ehYE3djz z?etGM01piS;2;!ou9?l|@j7e5{ias0RTLgdxfKZSl@9Mi~?{P~c5<4}(GE@TPP zWn;{RXrp9PW%!}Yr~S#|2}k0F_2$@a_d;SB+|N$;Kq0-L5BZbb2Z1z0xymNKZ)F9P zNxW!wW3VX=@mqEcmhW-DQm)}sE~-`kN~}E*|IG9uJonslB`hq=R<&~a;TYxiCGSC8 zvp}^z-FfFXz)MSFW_51b(o8lE;5uH22-U)pJd6?K9nf?P2Z{Z}^RU zjItm1N4#{<6^aAh0|C7GmQl9}_gLfJndD36z9Sb8xK#IO=kLTb%W?V7K6@bpN8HE2 zqa)gySz8dV;z#Jj8^6%T|C;wo`B%}#I(~5shit5JkBhf9)1ET>5t0wPV>oF?aY24f zITJ_jX~X-vzY)iNK98}G-(+&fcRPN0{miAKJ1vfQB<)!HPWHRQg)f%P@xjVJFVB0; z@DISmcDHG3;x;q3Q*QYL_#tlGeigLhD{Nt%2!#<`le~1@<22OarfcWue;_9$w^n11)(@)q#K;>uhSF|r<*tg~W z(S(N?eUEamCb9ysAEqB87RcC;apljVFOgQb7b*7{niD?Hm3uI@qwF^qw3V@;<7Ixt zkEQ^WiDVn8;I=ca*bC z?B6=yqqCDBEBlkmJ}d)tL%ewj@4LK*{->t}#*DIfsqC1RmUbfUKZs19)!K}2(*fl% ze~$bPa-O9j_8sN3n6oRM*grlqc}(b716Fx^Yr9h~#IzFTeh2T{NsCgp981| zE5=k!#~O}+pLdBPr6XUTQ6TvT{Fty>Sq}BT&ewir+DHBG;dx6Rig$Os)AF=W8M?t3 z;o*km`BPwDJK8wI_y2@CDh`Mz!o_TP4e`g{;lqEX4>z39lMi_B72{p<6#G1nyyktD zYjKQsy!nKM-H#vtIe3#7Gu%Gwufq{L&)0s>iFcH{iGiS@DbGOwdLH{${gigUzl)WmZe$Fd>LqxCMrG2BpY)Ry6;($}Zfst*a_r8PE1HHu_a$($W9bC$|DWaT~=dHoI*Cdf#q;oUCCNyt9B zJWS_ocK|^cvf@HzN0+7&in&f0)=0vjli7lGOU=-!Y(d`241M}G93wF&+&%4eRY?$E z{#cgo9N~a;5P+jgah>Id`EckL{N=Ns+qjIGkt<~Li-55mU<1tC2qUt_u*7;uIOdJa zJD`VQ-ih_dxDJT#bvNQ#{0(tukVree*j1qc@KuTnz{vZvY`q9Gbx_oe*S7x2>Yd#A z7ktcM8{*b`2Vn%fkytm=7@g3`MF38XONo1o&&imSQ61|bE@d5!u@?$_47$&e-Yq~A z^ZFA7>L+dc0s8rVd7%$CC4`-I@~@d_VTb7t^~H<>VB;#LEd5*}(dJQraTj3S-KmZw zjlMyWMqVq)qpz3LsdvimE+@+F&L<$|;SXT#^$sIevma<| z;PSqEpmr}L>|9S{+t|dliT3T=ON$mQR2N@U9X8+Rnh=H`nLF34K@@;*v+bFqpx4+9 z9olZRZwzP}4$a84{n&)O0}h3AB^JNM|A1JDKOm+g^h#x`?~%~KHw)u#F+SPA+a3A2 z*FW(*cnRjXzBmiTE{zA`VWx#$U&0^K{UeV&qBd$*UwyU0&-EI+HgTv&+6FRy)zeQu zt)HR_l}i-l_sNqUls!R!4LasH9CLqp2X_H;KGwktR^WWQqzpPo5};d7>RDHkx;c{E z9XKlJ0OtRpjDEz#_+zZdKIjMRQ%olQk2fZ=e|zu)AC$M0=54!2L`0}P2jM2nx5MV8 z6*JdnG`lf0-F2F(;)4FvTr1+5j`fu-0_@P-NG|MF62Zfh5Wg<@d)R37WZNeLF<3jy z1?(l8rEp7-Btf5;)(5%YiINKVOEv(H>HmdsLVJmyeU}VvZQ?;PUfuLJ5W56Pd7-NV zBdm~n$lomvblkQ5o$Y?{#TV;3DdAc z7^fBKL!B@M8r^+Mc7&~!;G;z!7C(ED06;6|M9kaYZ(0ob#K)RUZ{ zCrbXr3qat#5li($ji)L_@5;;<>u9V{#(HF2-uSIX*IH0qA^vqX;RjzQ4z%s@0Zo7W z;~%~CVa9hP+;6vQCkcDv?IX2zg!)%u&k3I_nP~H@{>Z%%mvHh`_yz?5^!t3QZOa}h zT=}B;ZPb-(Ef3V6PEUt6mD)KgAu=oe1P#~hd)d@GP03x zJmh#r*xw}lY;z{sUN%M>ljhm(?5C3^PSoG{hqgM58Ae~QL&=5k_bmax=Xk2}3EDmn z<>vGQ%mdNi2jfV(FNnn5RK%47{3S6sZk1fLd;V}oipHHTGQEK$^g3B4pr42Jy$R2M z2Nb=F{08vVPJTwLD~A$9y-gUjF(oq!8_1I1(`z5j(GB^^4|{#c^2Ij>b7`0)Mv}^20eoO7;7?>- ztZc*eevWhGb!_{%-LYC1!cLei42N_?%qo`Q#nOSEHW#HAPiritqY(FIJo0E$&oZH% zC*lc~BuH7}G$|W^`}kd^o(6-+Gi2AdC(3-p6Cw^~J>kgm_Zz^l?<>IH4*lRYpsbyQ z5Bt5wdnFEf{~ml`+b=qg@bv+WBS`pdIvc*RqxNAbs+pYpYg*_*+j=Oz)wEURGTpZY3J&-zf1qcn?Sc{e~rmSIM=^n z;KtuF@Ic}~RzGawQ7r+kR$YO(FV{&hU|;YY+8^*qBHBJ3IqrS*1H{isc~eF|XyO2l z0sk9#E1p3Lp#Oc~r%i!@|27@l_zwA8jcMPtNhJKVnb-agT{>gji*$iQV`2l*xF0vQikcv2hm ze~blT(>t>SsVtVAzx_S4S*<>2Iiq}Gwvnh(oF#kWUO^@;KENJmY)mw(FfK6 z{*W6W5h*&_8}(|2yyijQb(5(~bKCunz)&{Uv$flQJFr zfa4-#@-6w`a)rGJe|>Wx4|ZDzeF%RJJN^6kK>1jRHAaYEq=C|P&j9v1fE|5r0cc>) z@NyjBcjbj)44}E^&3m6j+V|nx7m+&U|7hWtv{8#E3DCY*^;i$n6K0sWU@enjnU}&ItS5LrQ z4`W_4*KSmsJv-dSYwkWP13zKPCE^ACpR5)@RJw9hs~QC zaLo_=fN>!6uo;nN;DmV5Z14Gx2-3%Rc6`t3)(9?rL}>3%zhs+^HTWy=LaQI3j9jg? zPa{(kwh~u={p6ERsy_&IuAJN1bS%PeaX`5UYZXchhZ+ye>Tyr6e>(OdG5a1-wzKJ2 zh2P?U<09pw>c{&se%I8qG5O`$-wOQ1K}|E~tW0O0V`4RMPXE6GKl@KP{O5S#>|GK&m%D#k|;~0-B3-g|P-;WRPH$2Pd?KR^XFmWC4{`>D2uIt(P z|FNe3urTt-7&p|z}sm?9qcAaOmQsTSvwj34@=uKM^+8-K?LatN)FChcR#V=I%9* z6Mru38W+JWqzwCB1j0@{kQdlQyQIUm{=J{J_xof;BuA)^wFBEn^)daxkvqrUW2>jJ zk?4m+IIO?!Pf^RoX^ZFIhMP=kwD;`aW`n7%i|zzn-L^%I4SpB`ZYc}7oHcLNx_I0!DJ->&Lp zd?!DJEy&iX?p=|l11>YZmH#Q%dy+0nTt9xm&p18mOKk05Xy<6{Uug41yC+TPk2SS_ zVc+#Kae*<5{LaR1Xg>T#<0t*KBj@(L!1xI>UJ9;B3yeRbiG3X@c-K!dZR>Os4}m_m zc=oLY?bKg**{)!@px?z_EQ2xdJ02A>1_WRj3;ovs`+Vq`-Xa}X`zP9ZGUlAMeN*+07Wl8{9jKo?DUgzGXkX?!5|dBmL1n5Tq((Ms>&n=7MNx_3pCpRhl;G;e<>V;mg7ifrv)c~qN!jw?2iC(stOG3>zD zA2==$7Z!$^9IFIB`GU(Ev`(N0(yj7;cYNo4`f@9Mqu;NIU89fk&y6Enns^L${IkCR zeH?RP1AGzN-H|Rfu>8QQ;9)*toD}kZKmVglr*TE#57B!3{ay{e|K$f01A(#v`U~Si zXiO2{K*tb{n}D4$*px5wnsHs=OT-kw|NJz-bM*zlQTqw|0p$bB8@x)?@Py?lj@>@4 zaUeL>116gouSa8~K(={i=HKmY*_O23;Duu*U}L;FZEL>IF`)ypjtlU!fUkhYUjYs; z?0>PA!FdMYD+ceYG|md{((Wt!sQ#5f7JX4S(a_VMEJDs90Smo8QV+iO_(4L zZ;s!r&sE@wxbybH_dL159~0!7A=jChX~3t>2hr~}fv32>`@QxDKj2lGNKQ^Z73ZCi z6NrPukv0B_JJwlwSNR$7K)D5Dwv8V|*!jH96J0*=CS*R9o!~dKc;^xqNRh_6Y^cz!01 z*@Od`KB$wxzpkyU9AJs?%;U2-GSB97m{*>Q z;B|EQu{DKsq}C-{?+b)jVPGE+bv|)oB#92WKKG}g$CEB-vqlQ44O}}Z%I1zUte~etmX@KxUgoWHqsP#+z92Xr)or2RW9dLm=hS(Kbp`X|I z4VbfqyEy{$I>t9(?21Ut*>)oDh8(*U@@#kbEYAH9J`P9}hkX7UO{xI%53B?0LKtg% z?y8k?{}67CUjSlcJrn1>BjJcYxD)fxNWuqLc3=(?0eLZNesw=UGZIJu} z^!9&+j_!W=DZ*blC1$&pTtK=uJZ$el;GIBNiTgk}SFc_zBS(%D?lH_gKn^wc?b}zr z`Q{sqW3B6_lqpe5?r*#ca7CltqR@s311^OB-DLRRje}1Pd{XjeOG3Z1B@T1&IOrqd zp`X}0{VEv+JN=OlJ2LcMN5=j2B!yS$8oF`9f;@UZFn?fS)tB5q@4fe)>gg`J=pwoF z(o1z;T*f^=l*~BA)J#h#X4QdFM2H6_NByO z-kQ*@jwGO66T9M>f{!J73jFc`>nOn7?`HIaMP^P1GqV5p9Pq&Yx{^Ec3>f8if$!aiBAM?< z*3S>i5WvZ}0|Q$@7u^T`I!Ih{^6{=Mgx8&iX`j`H@Q1o~+G-G1#)!E3nycmeF5k=M zjhkdw;&8O# zuab%Tdj~>yH0l&79(S^Yd;{OZl0JaU4Yt zKa_x$3nOrjJ&9(wklaC_-!YgXOg%#~2AwQp{{XuG@hRh1zUOW5wKqWq&v^ZK@Li6~ zd>g(=NCD#$VV&piw_H0Qob01b(SOrYQuRIhR_h)du-Ty9Mzu25j`wC7`w!hO33Gi~ zedMoh2UkeIG8`E&m!*(LF-Cq2z)prg{d6hB{o=8h9!;$ef5S$y{7v}GJ!SkRWp78c z@dqZBLT+2x)Z;RZA;7-OI0E#e2lo6j$Rfa-#PP=_t`m^A+;GDU^1=%*=znB;*18zfXfo^}-GR=6bW0THFEW9x> zF}k-6+xFUPua$m%`|0!C?~Uu-*4E=tj+MbHQ!t$!4|pab2j8b{!S*NvcjZxL!Om+s zep}QSzVeq#;_!3j$LF9MeF^mXDB@`KzY+W@2!6Aq>2_$ywle-PM;Iqy5ct-L?)$*2 zV>0C^rl_bW<)eg``&kDy=ldKYHb zFFJD_=or5(JR82jm%~r)_p644iN z0178!*!ltO`!&X`&a(33vt%;*?qtyODDY>_huJ6m;}P5T!0lW6@Dgs02lP$z{Qc*i zCo%&t&puIOTdnwMlU*uQ!*QUc0Ty_H1yx-pN69}kUIe8 zSkJLXzva^M5r^09$0m*i$Kzu4-&eOYz$wc?+bhmNJ3a!NsT?UQ#yDJ(r?5*na6)+L zyT2XBxEEy}+H}FQfEO~zV%L9}l47yzyH0q`JiEM|_s^eexBq(M6YSN>$0xvCVA{BN zXD7f4n*J5Mcx_YA@VTI2j795#gH51k#A?x44fNIDjvUuoR=)#S0rM=hZF=lh#S7FK0 zx85QWb(<8ezCvc)gf=UAleqYJNv*&CmrfF!@p&&>clx1(J# z=B|f)wH`|d%o`f{jyUIa2<}HTlBjWi^z@o`+t%gFVXNvu=5+VFA`KtS_Oo#x!_~Dpz{M|@;c7?aL`;-;u12hIp;a`)Kfh>uVVpT3p4kGG%#~qhCL`IiyoYW z`v93R=RqmN7|j;ip+kqNzJj_V%E(N|3cPl&VbU65E{B`EyK0&5Se_df7pF2Y^%dO9 znlj@t1uy8?j>&9i&KIleORi&%tFP$UqlYwY+EjH=)FB;{@G8vZ{xa3}AE#Un9RySV ze*IO)$T{9I4KHD?LC)KotMCpSFhKVY|NkCd%+Z+?Ud&~W!+Z3{-dUXBZr!>X2cGfJxz@>atjrfIOd6{eYkKslWu~1a?^)T}!p!HX zC!n3V)lbp4Z!hkZx;h-fwa(@6zF_O?KeFyzmm+-XQ%d~? zbf}s!_gDK_=p_grpS7^kN89r~#&h)J)H19hM{8~VP#4N|ZJl=o=yML|dWs)Tp4++y z`bWc_+St_FIs+cUlAQsV(<=HJr)8(vr_919uYj-Id?R~sLR^e^oBp=typz{VyLa!d zuwK>|d&o1@#(G(0@DdJfOMGMSh9SnM05&29@TYIL9}NSP#@Z^(DmdJ=mtxxs=+L!!RQzh;DB7MWyN7=rlSER_4onHHXyAo?rzU2D3e(BOP zX_|Sz_M%*esSSJ40nn#)?%WyjMyA##BPY|)b3p%nmF?Hok!Ay7x8bI^^gZIhURM28 zL9^=H$^J_k#{23U7}$To^OQGM?7tRX9=V5~%3qYR1MOt(w`=RjeYQ2;0><7CmVV?F zt3I9N&pvvc$Nk>HZ zTW`M4a#Xf*=}^a7${HAdzg+RP#%r+S?~Nm{4#?#8=fQ|aKw7<;KB|D3uy)3H{Qc@5 zbUahoLFf04e*paNEBP^EfxhmJziTRk7jSBOuW_!=&vBI>t92BV3p-9dRE_ zi_e0*g3CCDSeRKq@?^yWFPOk*c%7G>dpdnl^*47cPRdL&&v2Zz<1=W0G8+@ym2_mk z$0O{Zj~cxEK489?FsKhM>6QJ|9e-3tVB6&8-DvBKXK&^6>VM1U0Vkj1J?;;$aN|DP zwZOFNQ}$gRZSvFg!D!q6er=q)KE!XM&LONfGukB-xox1YsD3Xe?;QNLnld4d#mF2} z=(pPexzN480q4#9^&?!skVHETbubKe>gh4ashf$LNOd#K9@up<3k+g1UH{Td{n>He z3pV##1es%_z@xc+{O|rS;Nr{rk=kRUVE2V+_h|PhciX|+o7}XM1LF>CH{Qs3kL~HS zFvsA6W|{OOZGrqxWa~%jT!D*#>hW}l=l zBv{Hmeu3aGde0s?H;1mr^_lwgD8ujt?J8J5j3g?mTb6pDBZmv!yBcl9vAh~E(5E+A zapuao%8$sas+jG&dUWf~`lN=;kS!SRL*8^G6l1w&=)S_NGAR`|L_e2DYGPa8Wn z!l3Pt_cO{m7z`hubVNg@q)Au}y!Q3bovNQd&7QgJsfIE$U#@=irXSg=cjAv9?8-x>A zHesK0-IJ9%JI>1)QH3`G40-VWQ|moLIIM*MR9rndWGK>N1$>sE&kAFk^t z)Kkzuj4)8YP}R(LsDJtF^Uw9WXnOU3iwAz=G3ShjOfUJr;_g=DEm9KIOa0-v?{LcZ z_$}r&-0vXsUau$IbGLVM_y%rVf_o?jZRzr(e_I$xpO$8Z4I8Guck~;%8vb95J9pms z=b3$V;X^~c@qseiim|kKw25?+wfqA~LH$#p+ss?`EbgR$32nnMM$-Gi=c~8z?JAlN z+tk7z;N$d>l!ZSdgYIyIeoez3GV(fSI&NPE97;!zTij>CZ-MbbS$FQS^7p_0T~d;g z@y4MiuuJtR%>rJtdVn_iupZgSdytc)X#IPVjk*_%stdoL6J^;uu*EFtiQt)-V`IJ`mr7G4!{EtrZ49`4&2YOI@?b^`9yVF)MK*lHdQCaBjY$SbFUr!4hqSe zbEo9N-z*<>FNy4rJAev)S5h1;1q0!CH5xF@tS^z+yM6ovps)FDfd3BgV|WMoWf_Tk z^dszZBmDC4wyzBsqb|kL4t>fo9V~PGfIes1#`qXla7t14 z(h??e8wOa6}%%clWtZYIqto@ zd1@Ce!}YD<-s5hWqWpz@mGsU;yjRyhOxNzXmmfoId9V@>%0_5VP2PiZN`|6qKBLZ?@#zm6>|ii!M@JjU*m zc}V-Dy6eVjUk#?I_+N6T$Vk*_IP&iC6=9f#drQv5zF^l#Oy34F?SA+#Ekys$?TSh2 zr^xMP{3GyvLH!5Aca8nYM?aOUz2E-8m9tLCC}oc(X$PJuLON zYuP&1fQEAL&Ek+x%zm^}0mrtFz4|L1t%99D_vOPLv=U9+PXN$;rF7T(GVww9TEQo0 zDs20i{J2NoJv{YC`;_+su7a2#3e?8`eU=Lx?&}P`{Z@C_{-wh8>l9lhD zu6t)rXbqkeV#cpR*mASavhIho{%TvHd!XT4)+cPwT==G<{)@qH!k()DgG7VZgx-Mq z!^a@@FOt6MeVGZo&-$|?%i3Q+==FK-e^&@SrG+7o|7icMA^qF_Vb|7a6HZ>FZLsDR z@S4-HXKN$W_kNM^C!nx@US!8pxV{l0#cd){x68IJr^#&8e+K$!JNzC%y!qL?QFpY#y7R$vE`dJ_b2HG+mD+zLtT|w5f&4p}eIH_( z^!$rgcb;%;Wuk0;r0UQ1(D9%ET@x@Aru_u^K|5?_y)Q!s@7a6>GGRatL*Ds2Nm>4u zU*#u1|NOJcw5-3zyg)xVob=4@Rq?aOvt^K8{%$8*5_sJBNt3p|~?{kK$q%3hSgm^kM4*4^95B4cxN~KmN~z zKI6B@f2a#!Iu(2EUJ3i{`t|GUHUAt@{s~@AS&n0|ozwAJ?^%9|-@IpF=gILR54OEb z*FdL3+ZQW8Q0H)@>d!hcu1yh@{&oV3BjedpSK+~d=kjx*OM|ku6gIbNe@nr_m%4N| z^LN@R>{tGTzb4Zm&EG99?Gbg#%?1uR@vAK1K7GzO4(DP24{HzMJqkH*pM*&pb#8(6 zr_QgY`jZNMm$U*putM%z#``m`Ce!soPY z)75@w>b7a#^IThX>+k8WSa++xvUaR%Knn}NCg96Y4Q&eh{IPV)<47DSIO$Kd> zB9bFboj4J8liHtP{US2O{Kh>r7;l}nNnQde0)}Yxf!S7n`01ygs{W9A+e6hK2JQ!A zaeCi`2h>KQ<)~IlBP~YUEZiU94&Po#caCi>=l4Y)r9BwzD|k+Onv=U>&l6lb-=8G) zdo)s;XTpK?dD`i=vHDx;`~&s3N%09D$Tc}>3VSZvcue0mLyOVAQ_ca0kx@Qxf zpamVxYdDD_s`gM)In3;uCD%^au#L9Gq5)v zd0kSRvE8_Q@YQPL;_W$v?{iNTOXI9hLPi2?U$*MrGqg<`v3ZolXT-}B)1FpawLeYy zi~PEKjp--o*TDZo)*tzO+XgI$YXEGALtVdU4mp>wbF9h9F#P+9A*erSn04AGvETaW zU+D#SXCGw>TJe>(!^g}1tJnGm^pDiYtv_Md;a@-ES^)Lw)Ja!$-N^qO>rVV9#u`2L z<%6-O2iCmCh9Zuno7$pZ?nvHYFNJ#m(O!)E<bK2Ueo5g!-_A3_P~S} z_+R6zKVjI;cCfVM6)O7t+@j%)@`rFKBwQgtjI#(9$TrBl_Hd6lM?Zbd)zW%wRyfo)uo;~Vg zQ=gD`V2j>t;1x>$7xuqI_vTs~2OXBdfBXS#eA)t*C}cZMc=CpoJF0S2yDfZ+c1LRe zP5wgO&m-0$i9<~;oIHmyh}w%MWE$T03Vk5Jcm6r|W%DflvOLHix3K;PfPw8%qm2Dt z9NIZ+f}PmkvFFt#*vIX;S^rS`XWrM}3*{Nhi#}i8L9Q7JU9_8MkJqr**%A^DJuedL zj{PNC*t#Fi`m=0&vOd4Lk8I<%3+i$Q_dCGx6$^u@DE_i}@SLXd=Wo!u!_LmaP*Xe~ z=zV@8GbfYv`x5qT@x(Xa*^Blc6qgxi>VUcs28>D1gQoIHSIARQ?}j-3qSyIFNqFZr zTX%jFzh^qFRVf$kG}U7;j~chWp&QS>o*UmD$6zo;r>-0SzE1g(xBr(?kPECm2D{hM z?$O$9dGY@-jKL6#_zr3Y{NWg#34GE{i@6Q5XQy?6TZr#)Ao{5JZ~5P=Z4hXNwm$jj zD-|>Dk=LutoZqqL->U{s%FiFeZ$n*cV)+1Z?2?sbsB4X$JwJcg!Rp99K$~9h@CT4T zLH-gss0z6Qo?-qk@bO_D=75w^s3l8YJ6aM~^p>QR{gC@h(y9THysE#Xtm-Y7gL_`kD=7%9xQXr^z4rC9c#C<9doA5FJcYzW!Ou-0^2Bz z^;_G*_6T-JJ7F)i^l_|J{rh&UBiKB~x`G{f;3g zST_lISQfTFQ{!llqU`|^)daeRo?pq?? zv;6#4sNWP@F7*sefwM;+ebnBn_K|d#JE4i>07v=b?3xICRZ|zLolM#II+E5G_Apoj zm8_0<_+uPjlM%3EpdCqYSJDFL!`M?zLBB}j^@0Tpl-}4@$%$s}Mmp7E85gCm-%|1nz!H#ee?4mYw#(H6H2mJiL z?3vzD7$dmbl?I0t-O$EZawf+V88~pD>d~xymbG!QI=Kq^7pp^ZkJNLi-3<9`7W{Pw z;TyCGDNNG7!u}%j8=H0hUz^EKubNnqo4&sqmG}ls`(ufp*-8fA4m!N1Lj9D_@pbMC z&;I-(DpMM%M7+}c5eWL zK9cjXw)YV9la)Pe`=XCv4a(|RxL*P5$Nf^7s%4{s`qBT4V=L`~^7evcXjd~9ZJaRO ztD}Uygt)<=$N?KQKqBmHMHbRo4kx%mV}C z%)MmYOU6cNULCJ~+Rm#n2iyd@i)fAdLCoCqwM@PrF^pj+6S>&sFQgM!&sJOY^VV`H zkDz?o_oz+AkHAUH59M{tz<3*St;Xe*oDQ=3qjO~11Bh|?g25f$(zRWV7Z}TH4S(!E z#9=n#H*o2X_ESZ>hl(u2cUPW@wf#RJ=H{PZpYSB=_dC?@CXuLHWj@A@sjziSk2d2Q z>$h^{N*=tqG|y{9f4=^#eFeH{&qi${>?YQpgxHa1AU8nV$g^Ny0UL`D=(-{hpg>j-)*OqmZ>GYNSL@>Jw$Qj|PhO46oE zDfUEQf3S%@uHSw4onEqTwOv2k&N*C&Lcs*L=!t0>C3-cePJOpQ0|F ziEn{fy7wvC$t-nFT20BKtuO2J)K3_D)Gs;}o)#NRR4 zzTlO1t@rfPPuID^5$V5fA7(%HvcKQxeXRT9UIAn?Ca5(u1}|-@m@4bPcCVvq$yfgG zy7l6^Z6N~ZmVf~lVIaxPVyr0Em21%^{#7BEcOk~Yf*iwN=FXZcpMLVGbnMts>qi;E zjvqCVPc5I&BkEAF*L+Vu;`>t!C#|eB*m|L^9#i)HUf~o>o9iT2zGwZoPJSrzy}y3? zZTCZr;nASiS@Q7YKclhC%~IchcGZw;rPHb|`a>A@XgaC;sjzXyfQZDkaLQM9el&mn zd~be~nw+A~RB3+X&Yc*aO=H5E>5N=D=t>h?1^(+AV+Ct=froj<9gYy zVDlL82i<5i+89EtNgVq)zx?x`0dEZxV=|rJ_d+e@{s|B18jG&M;g0SH&vk$xWUSZe z`XcJDN336K3>e@WzU!!7VXMmK=UlUyVqdmt#flZurcE1H zKUDvKx*_U~=+{I$O7gFQi~=o&_+v~6O{j9`)#dsR;#2p$##$!nbXCl1v!^<)+bw+8 ztl#2A;BUFr5utup`0Hp2KJ>q=U+eLhb0GbD$%o>+3|-%@WqPgaP_#+#(;ReeN{gh+ z*Pt6g-{pFPU(behdg`(kvYzCN)HxnZFX{hXAd($(+Y4;ZSd-|c{BI{>zip0q$UzKOM7L~a-lXZ9!^^DYU1Fj&z zN7vNsRQ)F6PjGFq2k8rWFWUW&h}jWbhHJFx){XI-^f~et^b#&h;aK8eSxVQZc;q?@ zmQi$F3d<_$M~`I|?}*d?uTqc;jXegt*Z%b;!Vjt76ygK;YC`;Qjj0*(y~y4=QzKji zq^h*-L7zd}=M|Pbt7}Q1G4+W@f1${r=bR679$HYeAP?)ym8~>Xmi;VcblNg; z+@oHgvV6)Zr|6gnQqndieiMhckSOrXqV1hqY4W9r^(1yO>yC zw8M15j#Hyp#YyYdt#!<$F1Y>~^@a1A)Aq@yiT(c2;iK^uC_gn^5;3Nv4}d;PR|>Nw zb65k(?1AEcxgYnwmyO+E6A&ew%xIT3bMtU6qtG7;8nq zd0E!4`gqCqZzaDUa5Dt^&2)m!Pp}qJ@U{%anpU@~9HkY~CUh{PFivLjCE}cL+cg9@ z^r|l0+UNO?oc9&OFOGODjF}@P-Qg=6{0NId!kPwk;FIACg>h;WaGoFb2JZh?5@z2b zJ@EY{9oy)WSX0aAIL$1^P?F@&*;;P2Q(BF8+b-{hZ*FKMdh3^JJs%C2#d*)C)@|UZTw-`F3Ec z$@gs?NDuqyajDy-?!(pPo{U)Ij5i*bYWjWF;Xv8yYB`?qTY>3te&4T4Jni(O`+eFI z9C7%4y2`pIo~UafmE+&=|0?l6UwhMMASWYR^0IOz7k!b}N(-Pno>R9~=<52;Y*bGF zl<#aJPO3cq1bn-M9p9hG3o`biF3{(dvl#D*om(UIoH{(q1FAFrdgC%+E6y>UdwKK< z`NPDA)ZSPNCukguailFjQ+`3dJURQXdd@$z5w!9L?YAj^c(Ts{i8v1>HmHP5Y|0|c0OD}VLC{#MktQ2z2{AT9mie?I!@ zWA(M*ld5xreuL>U>IylJha93l81{%dwqJsA*ff7N|Cm`ZRyKJTYma{XuseSB{Ip*ZHWiw>dZg0_GUSEjD~>*QgT+Z{0BO!IXmX^ zk_kemjAi?L9Q^Ji$*w<+>c{@%0TD~VtDl_V_rPLh{(l;kzT73CNe)@7$B>o-_7 z9ybFVPO6ePs_gvc6xs5Bn7gBYN4)Du6y|heS~{|B!uPg_%W|?ZoUpJkmapqV&p-dX zH%A5wP(n!<`YGqNn$XCwA&Z4RVb0%p zua6|pyH&bg$ntYkQV|2_=ooS-|2-}c}@+{?mK$$m_bD~VZg=Y%)%o9QUBah*2y&j61zsUB!H_F&s zOgUN>=7LNW%QySY1eVY1%=9eTiw`IaYcaoGg|ZmOB;*3j_s)|w(1-7w(NW7>`qR&P ztWNp*4aiUITg*iXgOP_wapFiROB*evX@AusATI1Vub4b*Ai zzorHa8^NZC`Ye;GiXV$J&U=Wf%yj6Z(&;yh47dvTQ6#n{$9tQqTfY5H#bdc$0Lv#$ z+Eg3mljf}50n4{*`us-4@++rLe_i*oFF=p87qUC$bY}ItR%L?0Pv=gZZS||vzgWJ? z{FJ@((30#sq@ir+Y0)p#z}s!$0X+uDgfSB;EuS|7`GfKb@Q8d8KbsKc{P(BNW$~^h zrVL!~$&8m@;(pcZ*}Dy$njgX6=2o4*@tuZ!&enB!`t5CoFBQgYX+Gj6IlV_iX}btM z!qDyh7`cFtW+7ML&)<9<$e+olyUP!-_3qdKwz)`*_s=;%w_kgxzw+XpOVoFlasFG4 zxl_xhFB(#ce|-7JKmKvR@x}5e)=zazF8^XdZ!T!7>(4(%ERcHL>(i%=x91+p_{jOj zuua2t{c=LsBpJ$cz~o>}Q}=B6$dTK}+|BZ#AE_|D--=tGBUd)Qe}VfSBClBxxzO|D z#5L2NNn54}{ZiqdC3laz*W49(xGM6A$}8DfPHJYV6B@7M^$52B5R_a2I{`A~BxH&f z^N^VyfuAo1&U#KX9I=8RB{A1D1)%`uXk;n4PuGji!8zqID~H{CGA;rVVMt9)brKR1 zoY>e{2m25^QBhG|j){qJ5){v&%(~Y9rwt&y&dSn@Kcu`dh}mXZdx*?6f2&A|iriVP;S!w7cxx zr?>QhpF(eDjGx`m2fpsuS>>~=O(SI&d{FW>d>{$k;6DNRrw8=YyF*o!E=h}1x#tVW zmFgcs8M^s9`EYO5Jxf*bJ~@kHNnH5%W$kCY@XhWFz66`&pr33 zO$bXWEk?Y1=-SA;lz%}-t*mMt)&OSIHy>NwO41-Nt^V|4Tz8f+t>Gs$t()S64-l^J zzWq+0CC{_^2HNLlkynFSNw6{oaAp3Y&&m2m;6m_q9)E|7f6%~dyFJVMw&S;6dHykg z=b0Ihy8ukl?y;DT)B#khAo#*hB<6aVdK=bt!q;ktFds7YJ8*fZXEyAJ!H-LKy(4AY z{|G%e)*NF0it4g^i@edUy)91RJy3aCM~vYNm!Wb3$|d~7E7RoZ^Q8F=EzAY}9t>U! zzmX00N=AB);vi=)dkdHn_GWC=s+FGePgTpa<(eb(UKp#GD68Lr{lILhN_jdKqpkg8 zv)!xu%MM@4tu1f0#qF0~lx{e#LuR0Eu8fTg&Q`n^`?h33D~@xfIg@A0Q;$7mF7Wq2 z^h}zzu|HxnVx{-GzTSH~({|~3NJgl44<~!Izuk9`{)Pt`ui)YVm&#+)o{&9=qu^lA zo0g;D%a6X-W`?dGu*MxcesD=een7r(C-B^|`7Qc=#spxBN{v=oq51F|)h36&?5^F= z8joLL9nR0M4A1JV@>SRGx|Wv*6jG0~E^fV!O&Wg#^}DElQ+*~SCB=y_{Io4@Y();_ zr%~>GIj3)9jd4I57AD3~;hr*#wXzzvOGt|j#_ywJ!2kC|Id9ISVnufIC8X|SL&x)) z1ighfkQVPs-G#;J7SI7S!q`)ZF+#vtv%kwA{1A*RyBq0v#gdvK+i}Y|5f=f8;}yp# z?4jmt-MZDw;o;kz*qEJ8YV>-JSIO+t9H+>;n3uGz=VT?vI+2l)gy%El{if7k2TRC{ zSo41cYyUX@GV~KZyDK$D$NHC0hOYCXYAXBNV}o-p(J~VuFLBt*8GAmYk6Sbrd3LsP znSbDi9PabBbny~>cAr11o{_T6{{{pTBm;8Mu5ou@4h;VJ2Ign(IKl7PWOcX&Fr3gY ztb82CPvFtH8zm3^Nl~!DOP+U&%y{*3`%3xT6Z&6oOo04OvsLm%ncIe*~$mQRuYll2wFkH#DrWrRQ_wGK9Ylm9JCe~sAZ`xW2kx)0`9nFYH3 zM!w7p7Om-wGl5GtRsMauZiF&0H_Ob(Ls^VdX-cr~un2p;@Au7|BU|S&;F-XQU2n4Q z_}{m>0gFREpAY_60=~%1xr*hDmA%ihZ2Pe;B{Y6Pb%UdSk~I35A;n~xuDB<2k6z=? z0qJMw-d%D^Pwd^;#gXLf6t$^rHW+aQo(xCTQ8s|gzmc(}{yE8TnulMP{Tedn|wr+8@ZrkdFM23*?uHd=? h_BPss`Z(?$b}@YS)1NRY_!{!=A&AXE1nx}7`G4lN?~4Ec literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.png new file mode 100644 index 0000000000000000000000000000000000000000..491faf706529361c1f804b495f814e87f8e345d0 GIT binary patch literal 121340 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%0DW@w^xQWlW>wX_JvK(AT=a;~a}&wKklgBEy7ga~ zZaqSnWyN1mHY*?eEKt}Vj%behM8X}FGRWuUQyJk_PN&fbkMQOD8Y~!))WUV73gL4+ z*VB|>eM(Z&muKXLB++1e z>$RT|C8{~K>Pr5omtoM~)Nb$iKIg;_upIs?_2wLiwh5X+XHCJ7rG3}U?;nqCdnbhJ1Ku1tl*Y@u z5FwgnilRql@Kz}QT+myJKxHYQBW;MR>9Wv=Tb2TRlfO40TAOK3kZoLY@5GI>=MI>! zV4y1jA!~QhEo$YS6dKFh0t0;DSV$?1pH2TW2W>>Sk$2+-U~FvsTu3H=9V4mHfeBeW zQ9a^0Hw-mx?@7-`bOuozlNd7 zvVqeI(LZoJNWKU;kgrVh4j#zjf_%3~ViQM!_`as=q4qFn*L zu2R$fHT_|ka-YYHE%#gKMbQsvQWM$p3aJN^MC7wJWpB`CF@r36)w1hBV$dzU}3GAGVX|9l|g4 zN>&2wOjAU)l91b*V}ZGZlQyeJ8$Vt6#9ZNHR)AMhyeZW@D@E&j=&lai zvB4%S3LXjtq^@_97$R?yD>Lkf?1Cm8YZ|Rp7h+B+^v=yQCBG2b*b8gC|GB$}G$IFT zs1qWutadt0AxlsF{+@7HA%<@Iq5whI=vnkP?u%dQ$6~a2u;x9xb%j78MqVYjUNA#^ znE3S=3cHOHsX)g16zSt{op2!0b}1d*HYuc@I6hNL7Y>*&m#)jNIzi_}C92+dYW91f z|MpYiSN^EW2RR`IsE--8KeQY?+{gy-;a6UkJgF$KfuT*O;BLS7w`kV7Ub>Ec)C{zg zqeIZGm&M9Gmr#?}xyGee+!hdM7nC|KL?QtU<4*Ix1|xr3oKAgZU@3fFMX^je5Y?Ne z_W=d>)$X1ff=!3pO~7yW4Df`RLj=;ePH8PpK;nz-8w54j2*KwZt^K7x+4XXRsB((Q zA+>vsqs%6EHEw*h7HWFEOX2Zh|87xnaY|4(Yb%vXwb8+^BEKQzB3zC>hQ=m!t7$IY zEmRu=E!20OQHw~GmGCKi_yi-$xB4TjY8x+@Ek1!6Jd9$RoVzs}xZz6sdw&@X;JJ@+ zPWGege&5uDAtn_)p;nlFVy>vj1UcQ%c!X_T|0zxHMV`SLB zT_TWk1P1!>*OYA7uzf}a7|NDOz4w*jAp~X*8JJgS-APSBS%OwlYTkxp{U4fhDHp!8 zv-35YKN4|W8yRkipOggLWo`ptp0uRvH8!Y(KUG(`@CB#qMYDFD!1ud=*X!=o!n zYXRRiGV)-&?d?Xr=D0=X5Ka@d!qRMF4BQah=8OgkPGE&`7Ou2})T1e+Vk?*tr_E-;Tuh~Q!3jmR( z@-dG^h>MDhXJ%(5zkGkk3TQ|c3CUgh{i^3`F9s+i<;$Y{GwZ5Tu9FS$<^deNX^g1F z(|DPQ8)<1^HtSmi(%U88M@-j@wT;Xq1=#IS~=Fedi^G-nn-p^MljM6)gBNrE6%X zK_lz*YN7Q^6UpQO;`&LJ3^_9vM7(8FJ!mZ5;lSptX4|f3&tX5L-vC){pGbnV;k|R9 zmo0n7)RsmhKl^SpP;{vC$J>X?>&xu|z|YSwmae+7iqI&VJpb0L=Y}J|%z_PW1P|{k zln{@j__UdY9tP+OcIBW;B1`9u2Isv`;u=nkovChsY*pkrtmw0LR(6x!QDR$|c?V5b z&yBizb$TQ{OrD%CzCQlr_-EU~pI&c%uru-3)nVk@d6>6|ulDtqBXB8Ze$UxTwxjii z6#cGwZB4AXS;tWk+R^{B5d!Yj4j7?Jqc^f!m?WM@!aGfsCNv!$pAW=rm^wr~j8{%d zcbAJW?;~<$9@6eH*_p%OhH$3k*Pt7m2a$5ch9sOJ%y`~v3Awnfgb!?4%jN|lc?ERG z?VN)!(Zpf*<6k4zX3;Lod8ZwS+huGgjGm3E)rh@AJ z|3Y~>U$2{>_m2KD**MNSJpV?3t!ZDtov8fO2oK-ooZ{%=)bo*l0;^i=*iDS6)`!A_ ziqLcgc)TuXqI_bIyQAT^8CN0hPdes=t{U7!IQ5_`ZuU9=wiu)tY(Zeo=Q`PRs&BGI zse*hZJJ6#3JhD7Azd!JCU!|O`F?fFB$H#y9q)IOa?ome(lvfun$kvJ^xBuqIQwQ*V z1s1^#L;Cit&es#OPv4fn#YA}-MF^UIyUv20ttm=a1K{6S_3q#8d8~j145^cGA}k0B z8ztx?g)LGJv=pOB+=euHs5J_&(0==jdbslHPn*)?65Eb90CqQYcQ3VvLR&E3Y*m^ zhj|;?&1kF$NE|{qZ4eY8cxE;x1N625RT$$mJG~t83BvS5w~_FjG7K(@gs94ZTQD6K zdo<(T4%QMC++c7SPnFVbG(?*}i9ug6nO3#g8g_Z?&F$bh#J~{BZweN9XY7WhP{LKiNH%nY zqR08L6+X6)CN^)fM<3)-rrnst08;eu^n?)*afVHk5XWK~9Lb7MvpBv1Cfv<&n+c>q zfevTdgLh(rgfe~br5iETnv+3+R_g~|V1CWJDe4M}JH8(WNS!tGhblltf|`H=iUhQp3FL8nA~=Jpwz8|I1D z<+x3q&+>VQ%kwA?JQfP;w`NN{E6ZSgyKL8hvnNL zmF@2d@w1ImJU6(y4&k8DMjI&7V0iEw2j#gEO=l}kIab=fy~~F^Y4l9#bc(pvl-yeS zAjFa-pyVza{x2dAxf-_{EixC;WJctGWnRj!BLR{P$}qbU!-@@|($2__;@XQny!JTR zD8(uQcNzz9DHsD?m)Hna5{(Vo|DJNp_tS~Q=}}c%irAWS(k}F8Y9BJ%dVW6Ns$6+M z2OP9VK?T7MSb>X6mo*zfA3ep=h6`$1m3>e3s?W#2GI_3D`y}@$%ggwW)tMLxtfgi1 zhGVvd3FPjivJUgHyA8;+Hse-$V!70$J>oHulf-k;BKlQ6RWxZiRLs_ua!b`Bl&_%1 z-zrgOrEGBb@3$L8^J%J%Fd^S1-xByum!r*id5?>EpA3*_!*xFWA?F`Glgj34Fl<4V zu6RQZSW>XT;zbZXI`*u5Dnx1eLFv%P~U8U+hx%-FrD730h)T;W`R;*|AMFLVs|oVIU)>Wuj(d zSzEKsx36@8b=tCUDxSSieou{RvyI=s8BsUQiN7taIrYvqBEyA0%d|NsZ!?mK?R%B* zN-`)Fm>Uta{&QJP1)FPE8ypt);ys$fwnHznKi{9FccF>&`JlcKUd~nlk*w(AM_=Ax z1u$O<<^je6uYH7dn1dOH+XD9J;K_8VW8F+JqzZPLY)xfb6$)0|*Y2G55-8y05>~?L zb&Iq1nt;6rN}j`9J4h1o) z{nz@4=F1@)95OvMhCg5e!k$>G=|*rVj2AqE`(-^}$r5NQdko#gmy0%4DtpFJsp4Lx zrWN{~IM=beL-I0JOc0H+rw-wA@3?lXfe@TkvWrolr8a|u40f6~z$^W+85vD8kq{>+ z(7Ya+?3O`%{{&7q39wm@Y5BTTetC7hroiCUsXMuS{kZ1%ZoS5lsh0=w7q$(geb$?F zfJFNh#ggaKss+&R?iJ_r`WPD31;qSs;d_XG_H6QO%9Hl=5-JjqpK^K{FY>E!w2@v( z6Ew**waoR_NSK^A3o-0-^PO&y#Q6zXTGQIO_IplUJ)u6%xa+8|uRYSCtjFDaE?SNh zZ!oftQZKN&O(Llih}blJkMq9+t~aG8SMuJbJ~@4$b9Q_sYSd10#IS`C{w~RWW~Lx3>Z@a^G*% z8hmpX=2TwR{&oKd+tms~WX$ULvQ4Sw@8EB>-dWVX;R&sNkF$|T8LvLf&FtYcH~R-4T!VX=w(ihE=5F~~ z+&hHxT=XuEegq(kL}@W{>0YySd9vQr+{Z^RKc@1&BpG=7JwAlHLq5MHo&>WI^#KfL z(=5tQ9M)D>aqGw5fO!x+jzR=iy4Y4O%-RYq_5QVzcR=f_)y#DH6HbxqPG!n{xvK8D z$RP%_9}ieAI!mGW!9Zv;QK&;+04Ci*r#d|UAhzMtlJK7@>ejJu>%ZTg^+qi|V5iNR zxaNLc$VDcE{oLW-INF;_CM4LMfscn>7b{!vq;nQ8E2I)FhGIJ9= zeDv;9EoVd%ffPy#UJeklM;-oikY#B+I6Z{&4-7F`>zUZ<_u#hKR=d(GlX}>ZEPz_JkrI3$sy1o2g!@OvFRB*9D#3Cgp&2ve3eKDl2vCcFk6%DVV zB%KZp@iDzNjh~pW|3XV{fh76!%QgRoT)?FTM&tD;5H2Ii zSvlWiY)4(5jrmml@rkUkPlb4P3WGq;-B7yn zD}0EYQFRA-km#Z)_rI0W$#}ANlYErL^;rZ_4m^l>Cx&-e8HNle@5iLKe%F-7zTm3| z)fWFnyMBLxVT=@57ud@eADwYTV~{@IRZtWo`$Zwcx`J>%+JBi2ha5 z)!Ib#+k98#I&0t7DNC3$!MrNSJNlH}a81KD|CC1QQB3~3J!4S!$1oC6M55oGk2hguYE`Q)9PT&MS41r!gM*Psptw{%!uy+^XADGE? z5avPt?{SHS&s8(5U{YArO1wc^x_eo+~*0sm5q$u;U;Q?Lvv}o2fClV*g;(_jn zW)8l-iLa6!a%i2U(ks_lpUjd`z0CWeYQbK=eUHlzl%sUH>0#%&?=%6uNJfp0hwwfd zr|hsol{7nI`1po@5vrGYPc~8V*?6*nRHV7W&6VZyz@lA1UzZ_+sU0jV*Sh#f0y06sy$xGg$RqE`%_xdRSnC1(+p|BV@#^{Hjrr|bF?RihkA8LUG)6``B*aB25^A3;TXShnV zf4Ilz?Z?WVUTI}vgiZ|y{~J#GrHB{XvPiH4;gJj|GmJzS(JbahNx6@)bh4xb6?j$l z9WCsaMU-Kd@!(GC!#J1*g*CX_7WaML*3TPWR(N-tRVWX&IJygs9HPp!ZoNA`%xSpz z`Q&m+mREy8?|=7NDnNpEN8qor}?E0^z#%rDbEyAOSSp26CCPV@@?YVW|~gy6gW ztr#-3{lA;2Q`RiUy`1!oZkz}@K$W~2-RL#Q(RWH3S_Ow{-pF4GMnAsnEqnX`YfF2* zA^D%+OSg}(xyb^@rtY?bo4HxeO%JvIa2UyOsfpal@A@dZtZvZR_LYbu+Tmy$tB~a6 zNoIDHIvL1QB9G?ukJe{Fwu8E8954z01MOD(2QFiZ0Sn@muS5!0*PgLtC14m%sOr`P zG=EYO%ta6-zYnSW6ZP~DDmp5h9$CzyAohWc6muuiA~@CH;aqs1D(~O)|B9aYy9H#> zt0s~36KEvwsvUkj;P5fFRN>~lDWV_aSYch0I6G9)NZ;x~S5kS7eVy~gtyEzu-#jA# zsl*5irL$u1FiTFuk{sl%*%%D|nH9^In@0su%IldgRuT5W5_UI_{{_}({lKk0LG>!TsM#ma8yqr`IK&Vy*Zj5lT1r17mdABIu{{w3qwhKC74_vklQ z4x*{t8P#mXLG#Z9OjuJEz2hg^krv8Q!518!S$JLQgy`g5l=-0B3yrE@@;le9FWds3 z&mX zJ#e-)fj2oBb#(cdWYL0a+2u~kjS8I>c53*fX)i{Lv83QZt10K3O_xgbfG4?vy~th1 zp#{-ncLLK$_ST4&e4i|V|_ppN4 zC`@O&7{2vZva1J2_ghZWrfusmw1LyP--Y}<~P(uyM*u4OjQ zDc@DHW` z*No8rHS>S6VeXCp+c)6<4#WQ`ivLrh3}XyG|G&c^A`Jf(OfNtJky(v>LpOhJ^-xR= zx3rT*omojK8Jgqu7m**Q&a^Nwp#rz&gR1(7CdsLjM<2GfBy1h(B@En{3}Cs1Nhb7Pu2y~2Iq3#ps`($ietm4hrZ z@gI{oTd~Y#6_K-{plS%6_&<+s3!p?enVSDCA%ZBr5~576`OD%Kc@D5gFa*#lwQGxo zgn9(lcQb7=s;`vt;X^yT3b-D74v?8;u(?4j!Epoal33*1BmCQk3I8N=U^)K7PBA-v zo<25{N?~c0a+h}U^*s}RcMz<}pcA>6&1n-xC0i9@8*zcLrJc~tb+81z+{`x)z4QD| z?==1#S3jZR=eM@hvv=@+-WS1WqvZ`uIOyOoIXD0HKql*xz{e;o^Scu8DsJ_d3OZQT zTT2>Ib{cQ?yMGg$TdCRuVS)U5_XaD>4GJx<#}&xQeJC|M!->G00N^qmo-m~P1>Pni za8h5QZps|$!!lMH&%4f3Q%fGmWGA>mE^yao+HDjQB@p=d=o>s5Krl6z75mzp2jZjN zdprKZ1VjSwy7xCrYkS!e6{buTMdl>2-9N^C3Nop zk=o)gyCZ`tdxZN2`#c1h^0G6Jfj5rwoo%p<=mnqgF`msxEZ^lYz;pj_JPsd~nr<+9 zg9-0GOZBtdT?x2p_;l}n*p|Ds-R-ESp{t$ue1AD=LGa@VFN&$FtHl4}1eXS3rs(up zNpfOf%<6yNR>a8OoR2@bbbNc|A?A>RDr4A$YM4a`IwqC9gLv#wh7WKwxF`W`a~K%oa?!KK`~Gmm!r_WCq8&F#+-53_U5u4go5ukE zhm~Nujd%|ZO+W+&WE##3VNWo3a#1l0Vh#r|Ho%Sd>p5+0c8gi-|HIRj$3yjge`HOe z86jnfL4{Pd5Q8YPrjp2#CB~k8oe>JjE@T@bD*Ilxu@A}4SSE%LVhq`5{oQ=NuiwA( zx^wS+p6A^2obx{K^M1Zv-x8wRePv32P1vStyW%1p-6eTu>WMJwFg?BREjn)Ae{@mb{E(6vbo|M$6{^2o#$$qo#eBS0hZl+{C&KPG{`peEc=TW5p36bLyAGv$I|$@s633Qw^dAmz{$J%0 zkeOI`rO%$>O?Clh;ba^z0%0Kl;e0}$Xnj0+&(_)y|7Hf>ye#eUOug;GqP0Ho+GeN7 zEObY=&#J?Z7x`6JEx?X30&eu*zqYRdqgu)|WbX|NJ30oYxH*6ksJE`whA9iu{XMpV zOFaKxRuh;D@`AMyaMMfrBo?~vymlIKZ=LDCOoN;G-`}eKeKd~1!xyZLf$RAGJ-oZK zHtc`bgfr8Qe z5h?GF4hcHm3OzbSD`RPRpBz7|#sdiyviZqF+3HGDl%?GBrOBSS3oF#@Tb~bBmd~bS zGX{EfpMBi>FL?%19NxG8p+dp>B*hTYtPK@GsOU>^Z=*$6Pc*lokjdfwe)PqZMxi{v znjDScnwqRxBB2x75*4}uBS~s9XoC%9-G9M~$Dz$a5UHIveSt@1Oq)aZcjiJ3xNPKr zRn6hqinS(xu<0PV=QmX)ahO0KVIW<1N|*u zpyA>p%_SJUlpDHe^#mbdUT1YspxuOgSsGeeuyNyBX=vS-#MS32v;6yw_{K!?hRp!! zh@`q`mHtwecd*YQ{X+f?8=cyd^M6Vz(m3H;5#b~A)_{ytqQwjWIZA6EPNSlxRRvwv z2#|S~iJ;l50R*|q4f#Yj|5A#R+om>ZANMEJuO{KvL-XBr?|ApcCyEOnW9TTrta$(J z>E0arpww=&1~iiI{DWFvCj3?PQ|MPs@G_f!e-6_VKA@E8fEpr>9~3w zZ;gN%dw0teEfowI1W6-xiRXmKs$}WSEFC4Fqc8cca`b@nD)1V zF>1b|3a857R)G|&&nRZu2&ZX5)2(w~I96>b8vTEjAg2?Z)^}S@UCAFVb4OoGj9i2% zCR#)HQzjlXarTKJLp93}|BlUt?j|tPG8x-Ek3ZsX04Q8bJ^1Ys++$Ax#$GjDWsLKa z`Fih3af<1rRKH`Ag0UsWVP~8;+oz@yDpS@d`}WEUt_g#QJJ2t3%Cknr1lk(Gb;p#L zMYtv7;!aKqAud>-B;IYJm$GhsdhHf@9Vmx+IfR5`XzoCZ_{5O@_hMvL>icg&g<#2& z26MAGd(KbQsksNBr~7s@ZHB)5KK?r)5+r@B>5Ott{cBF|w-L8CinCq_yEeg_`zbJH za`5w&r4#<{>AuzhCb>oYc^*FI>Zgw7Yfco(O{!svFw9c4def0ld3rLhCv_DwhMT^+|21`Pc}Z{y>OL*H zLa9IoG_2-8rG;PrhZD0z!Dx+puXuZwzc?1z)SsGmge-8n`y{C z>z@s`hnq^u8}D7aaBM?YSO587|K~lY4{4~Jl)tZL!Er%UPcDyiO4L1?!96DRLGy*C zq>ry!bs|{q#QmMJz+*F(NG+~46YG=>uQPj+id%@^Q7V7h;jsd1l0x77qsVJeSKi&< zUl-$38c-B`c)RE^*q#71NdOGCN7&+}%}~31Q>tHCGoC>nsx)jsJCy2wZrOlsyA~VY zbVWz4aBo4#)Wn8MdKX`>)O(c|R*&#+N@p}CjxbxwZcx?>dUlY+{i{l$izrz=^@OX< zTbe~o7Z|7?0Rt9A*CKKP_bWxyp{im~RX)MhAsAW9V&AUHMAUOl!P9jjbFRF!C54K= zulsSiMf~JU-8B_M!mBfeS)mRNiaMOOUUwTtTSG2wb9RS|hbVsHihjt( zm-6)_)QCNTB3l?se`JLAzp`$#gVT7M_MnD@$ z=)L(lPO8|Y%BrYw)^Z6%qCx29XI_pVUApJ2tGUPfUqm;m9)QdW`3_~8gb$&=bbNeh zN0Bzr{m9uz>X`@KS6;;TnE3gJsmaSVOy~{ICVY7fcdNmMI^qx1zHieNM%g(%ZW&%9 zpeAuSs8&Og|NIdpe_g$VPP2?+B11cnbjzNf`GgyRv;`t`L3z9n=}+KXNQn||Z{H&S(hyEk%bzSVcO@^;l3>|Q$w-KwF!xf88 zju{bx_k`l@%-Et=TW6$G{G_k|aejWzy8FAOEw-LWAKAoob71mgF5}mE8HCj8AP^dy z6bybuOB4Vo6UJLYIB2EXlA&9_PN6P`4pbYxBB@#Rr0Ep4JmqidLU7 zjeG$6B+Gkhb!QcAMz>#eI@q(lP%Dgse6Z_Z->tAw%Rh3%$88+xui4Lc)Go`i^afjh zQn`4H;ZFeFD)e7?WpkLZFH@6+6iSyN2pYMzBrvUm2>glM74LZx@ZZC1T2 z6wJFwhwSIJZ57vgQ{2&~ofHk*gzw=waoXs-|ogZ}ji$~(YKCfZ)EdPBvR|F0# z?yMs$l&5eAO83J*>mzw8+*47x(GO2)VHA@b#BS4_wUAg0n&q>HA)0KeC%j=;J|71y z3_Sy7rCQKPrY{^GKLhRcO>w10Nmn_;(Lts3t=lU{DO)Z_RL&v^wtAmNYofcQrtb*?hDuTpe-me%-!LRoO&yAl5 zUL3ceW<8)+Xk^nO4l?%3-C#CCc^a30#jk`9-e(#<4rSYhowkPB5ct_TM|~>HNcBGG z)E~zfrk$j`pWCz)P+V5(UU*k{ox8b+aGGnShk>K?M62KOK~8P`!H(Se!DW@Vcwa1& zEtfJr1s7Yo$WC^~RW!qB4=GQ}WiD8EM}9w|uy?T$iHe4S>&m{GE{c@J#ir#4INMuc zhA^hKZ!5WytDMKick^F7Yd$tg%fq3@l=H4rz2R+wfoiFjblCUHNYo-t`4Llf5A@*< z^#-7e_@IQzq*fB;q4>_C$*u0jkLHIJ?e1w>fQXhTWmP0`&wr}iL^ufh8Q@wdDcRRi zClkuft+Eu?e|}8Is4HIuW)=?_h(>C$A`bn+7i2amuQu`})zRf&f1NC1+5jKF&?Vq& z$Qo*Dr^!a;Jom&6U&&)9?np3&6NMzWkV=Q?ac5Cj37~N%M*bzaD5AWX}BC}pg5%8}pb9WH9 z`;40{*=qmu81+@XSpH2l)&+qV;ccjMn7gK~&AC3*U^`|;7Hlc|@Mn4y<-v2NRqio{ zeHI$%1W;hl%HZRzJ&-Vxze7o2q+*1ZUKUo-Yn5K57a1_U=VGCeXPbFYAWhUIaq`Hu z7j*PfkqwX;{xVCfApSVx8ZYV%Nnl;T=Cyg|CPz2VMv=VD>)s#5%Th z6Ngw>k?EB|29#5?58IpA(ynVD5nw4WVO)rkmql^70A2t6h*OKSB{xal2}WE51aIh{ z{>vNZj-B+0j}+=7FPwznadjn_~Jt zET+_h&}O!-l$^~NE$A{X{QY~%{z$n?ciz707dO8e1ey&R-zvC#GueE1#LYx(Jv9zi zK{`N&*q7)Ge-N^4$3E~J4U#@I<>{|#WSl}fmAR@C7)fmKQePBhtmSV5jhLM$t1K)G z%-?H9z{B!gDx$a;ouCcjGouxFUW+k(zhhpp2t_8IsysoQDy7?5uy1QV%XlvM#7JaV z%lkW9Ji%&S`hLc#+?A*Ang7avoWuNewsbPq3M@H$sx4z*Wz$}Ta%hRKEuxe>uFnYY zs!n>ml%G*UCxs0 z&Fh8e-4)vdi5Io(2?cY z?Wr zCcsGk^?|x!zw5XzPjeFFzgoSeWKN{w^dUC~PRm6xIEkx8L~42?4Mm^isqK{s{2gas zSYsWTQ<>Z506seq?aDuUABNF}=T_iPIH_e*B0p2zMcQ>C!7qw;kIAz`OgTV`nL@XE44n@9&k%v$ z)?nO>qAB1%oVyR)L4qu06w@tNy|{0p4!>in5_G>}ZH4mF$@F7g%6D`>-APQvf4uPE zJ63FZ`eyyC)58e|8Wkd{7~LEsh3%AcoG}?}qTh zS*gDBabhx%=CV~~>2$?WziZ#%K;m%&9hx>7oK%ay|J3Bkfzpqwp!k$B>}vv$?A4T) zZRLehzm*~?^tlSr4QKAXX3B5bo*{HL`HP%j?&2KP+Eg+z;vvuTvMfE|RFzykHOAl< z|L^-+6#^2d>Zy^8{h^fcH|}+EJ?4vev}v0gDq~z3X-XBkcgc)C$hlH_!Ct*GE^_&H z3~NfW{%&2DT`h>dEPUU+Hgi#Jos~*aeqHM(5$7@Nk}T{t?OwdG9#uL48QD=Ds3*9l z-v%J9KbHHQFTb+Q;KZ)G@MIEY4h3%hN~f?a(?nu;4O>il7#BGrzpyqhY1G)NQ@T}A ziM+sa+C8@PeJA{%D!PZyJk*?q9h;}Uznx^N(X@AqUrM3{^GPp$zbc{bgWj#m1_XIU zb3J1z@?}zhh)9p~pi!`@&#e*PkG_A~5koMxIK#S=yDaCH{Hu|*g*s^~#6YRpr!y^N zC8s*~CdQtM=9e@-?O40y$q^c`dsSREWe?pN)}1poJ~Lk^U|cgJ{8V=_67!$A|M-6- zZ~EA!Qx>k_t$AjMv_0NGk3jjYME3JVxgck7=4rH!Ykez z(l&RydM-pYJjEB~zoPeQov}-{haP2Rk#kJ?h;dfNGY@mpAAV0htM~Vyk8Cm>C z&$XLVtdg8(SvucL72Xql(a{%SV-XLY$puSoGV0Pxuu|8D5TxSZ79pQI#Z30K+n2QJqaTAYX6y~pz4W#Bm~SS%D$5h+hBSO)WDQ?g)iYdIm-5LQ7+_i_R*1!c zxxO$b8kdV?3t!6*kgU;1&)QmALs@wAXQ;x{eL1yuusZj&73MPR3uf|O?K0x`(TRb{ zE)SSTQ7->NfcJ?WHK121FBGGMzZnm8we}Vmd-_;pnbwYte(FRuDN4e7X-19STAM^9 zT?unHX8MmzHw^x_Rm!TMBVe?UD$`I&bq=do=8mdQmYEvSC>>c$3=1*IO{`oZsZF&b z{;}o>HuIMuK1Ze+RkOnHI*qGqrY0Txs{C0QUrF_TXt&* zp%TiUZ}yr`+sG}<9U;&gCkEWhQ_wyrROsx5UrE|Ocb zjYaxn^rh#8qUMfvZ>s=MKRXb401!9N@k^Ei5TpWfR{l&amBnF3+8hHuaZz-^^l#++ zsq&^iWC=ksD+qir(v0-Cf!9INGrwkelxfcrnZ#=J{Qr~T>sj?Kqz9P zuE_@o+xq-AM#)x(llmp^nK%Y7_<-rK5Fh26Y+^?kX4{oAdDAevit|C>qHiHf&93f6 zfiINf?OHZDZ?2kI)Rf;E+n|1E_!pO0{~V|d%Nd3JE1f`&QKQDi|M{N;naC2zhqH7G zyo(1B>K2)0tND>(LQn`Jwr8$LNG|FzXW8%--Qj!v2lhe{X1a7F_0sZF;*Ifa66ZCM zFY7+(PJIl0+9FQJ{C?fJ0dK`}sHYe0qugeN>ALrO8*;0`=w2l~?dP`Uu1@^`tkf06af#2nP1#dswZZB@aY@LI(#j^m&HwQl625wlnQ0Bj}B?MkALPN{61 zAZFIC4ZkSFql46l`ybFqzFJ3Cal05$2{C_CI5_bvBfefW`o(EwY1)w2sWS65l@Z+z zJK7G*QaY6S@tv7-ZAn&;OH-(`lIf*6sm=-%e{-5wxFRmAD%VB)9C?#jBmD$==CK`a zAyk1=$|p1G22VWsXcl|ys(g-NKr|3O@|V%vfR;pXO`Y+&gIu|;b6o>LLYxJnlo!|a zGX{G~@NPUBK6tf65q4f~jqR-ynR~s{<6tp;>qXbTLxrP2)>)xf{xgR!O5a(8@+5m^ z7hEgNl}qYb8+T}=ND-%h5rp(4i9{5RQeeC#6IUHfdm-D_5PlGOLSEPLo(ZV`N(0Ot z1;1u!hxQZcfL>l-rcu{C!W|>tMD{#8N{>SQY=AdDrfzTZGUfzQ)~$zX!`Kef&jTF0 ze{SsC+H}nDqN&5*5gtOJ)=S;!B?Gycw8%XJ?@(}{^tky|kfCtKme)QYl=zOP@Cd7; ze^ra&z|7%g3`A&SsGH5h8bUoYrOR@+gS4rjBe0(rP%x9wqTev~chBX>4_&=;7nORO z#DPh#Gj(RhQFr1@5AOu(ZP-PNC2RzRupzzM9~f>Zse~Oo_AZ4hQhir-WObhr=Gc!6 zYEGhYJxI7)$p%p3ioegqbzD31(TYGYQ(Xu}j%Ww;LZR}XR4w(w?lA}>ZiHpTW|kx9 z_RAL0{4{^j1$C^ocp3l2%c}`$hU`-78tIYM9OB7|iL2`%rPjg&ZnjUh7plzfcVc-Y z7Ir-HtsU?qc;D)cPglQ{N^iH6rtEpgiD&tA(TahhTp-D%#ZUHWL;vlKA0~@vGYK|1@Hk6Y1~z!Z;fKr}u@}qcerfzJ^}c1g}UK z#g3apIKvq=VueSv(i;S|a82OAvPX~ZRDO z-`3HnQwAhQ!qsNUF{vgG@+LT;J92X0s7W~HU9v4JezGf}bBZ^+E{!d|A3hTuW6wo) zQ7>j1*P>G{cti(8s>hsC`<`0Fw3Z&N#k5O@-G3__!q}Uf$eMWQlE23IfI+)y0?HkB zmtk=jPWAtLaQ z#~o;JGgs;bGxVy~oZe1=b++m+UnX_O<0|d(VIaLd&t_0kxf#AoLP(GJB(5v|My$#B zw##lxw7tWW?J!JLgA0U*oV6M>qCOjR^_hQ_FNjl8jPI21eVw3$qv3Raz_0wptUBshwXEx@0u+;WeChy)~NN&AR7v zLUBK>OrEs1IMVirdv>R(j_=;f4e3gJH8v=PcboZlUY4?4UeB^l^q~19W#He?BD2i!>t$T36q3mm??o9j{ z-MAtB{wR$LW4cg6A$Ir$L`)h2l0Bze${j6W)IrEgw^4MPl{zu&;O1a7Hl(E~fvU0c z4f-iVCNou#p{aB?#Ff+!5DQ6+@9o|lDe~@B(1A-pl}+7UU?XuI&=ln`$EgP4+;9Rs zS55O5_8C!$Yp`7!BG{U@8N$xCO+2=iKCX4&7>3hQsSO95GH?6hZ|@EDaooDC@%n5= zPq=}oo5j$ByFU*m4a|pN0>jfWbl_06<--r_QQ?Hu*rX-xnva-91NLk@UTafaz`xW& z%crFmZi_7T)gL)XT?RST=~vLho7{Xd?fV*M;j1ezphvx!=fK=1M3UO+QmeGyv0d#D z#?%`M(ulibjD{U-&g6({(0%d7NSJ%^`Ns6dbx~$<} zc)j+0SoDS4l|oHkGjfXsQ`Lc*&b9 z`T_DNx#HGxwm5m4(u3!Z#SVwa-Lu#wTHtKI{o4IV@0@=WiH8C}*Bo7*7!VNNAyJ@U z7$xD28i8f0YBH|t-n1R|Mt%=^UMXgyle170TY2I`q|OxNr~k%j3sQWm5KT8UG$~6l z2&<<}MN7U7*;9;r8rYn~ZuLu?{wHJGuj_0~OZj#?oXu4e!e@TTH3-R#h+im)ao6mS zf#eLt`?`#p2j?uk)2wn>ji|iDve+ zooodMD(HNtR*x^GX5O7G>*|+Vo&>quLL@nz{7d%Bs0vCFS?CDMnu1PRP+|T$Bev?i8%QhPKbxZ zi;moDctk(qT|VKb9Ed;#K2&AfdXp}*4JX5CR;0#ULHYHdzHIQ0DUFo`q(Gicq zlFC|{(jypV_t4hRU916@yU0o`0)-7z8_4Ss)u|qiGdDFnQo&padmITzY~w0YwsOl- z&_RPqKo-*u(pReFfpfpDrlR1BAaR=%m=o6bn#`br!z*$5NC-Y8O1(~x5@nz1ar{ImAyt)GTJ zbx#SXhBRTj%Z6e%Zfyu9_(+enMG8n^W1O~f{S5c*P*kO5qy$>ZQn-R4(z?_vL2>L1>e~@tYX!ml@`hk%19#7Tnk}hF2^L(x=LJ5LzEzR9Z z54g2#*e*zzaLkoE`iG={zFx}ap=e6nG(%5LWdJgTEvxod00oH^LTXil#4~Kps*eE4 z|2#f9@m)O`CATm%f*>ZK`|m#((AWyMf0q;Dt)<`5jk$2XEfVw)Ufou86@==B2HgHd zGc<5g9qYXk(0|wP@cCrKZ{IUYg*|Y7Y|Y@4^;FKZs>$M$|7#ty{fB)a0$SDZ*0s>k z)&9_X>iF4u_FrHI%i#Am=aXA=OcM%7oPxz#=ypAE@=uQoVt?oE^r0-3JdzcL0|o}Q zx-4Ss28y>?44WNPWo2bQ4z5atu<11VD7J)@2%V_@Lvuy$3T&y5Z2Tl4^#(^RYVf%NZq~I4f6lAh` z-8L$_oZSp?`my+|=j?7B#2F%jHusyoEd1A0mBY?$0B@0{1T8A-sq*(X zX5{;OlO1Gs^f9|v>L+vq@Eb^ER(QuGHq~9ycvWR@J zwTyeCq9hpD68uJW?sz8%LCP;8 z=DoW`7SE#3)0GyDW_EDS!CZJzv9u_!|*{K*f7rjX~Mxwk6s zY$h-g_uhp6o}$+cB}eEDUpX5iPETe;$Fjr+)G*NDk1;$0fF9?NUq+*C{mjrh&*P@C zxFkx!_uB{*qhCiSM>xnH?c6#S4K6ZA$=EQUw zjmES`=NPaGm|-w(cRR`&%hYOqU%$D%B9i=lA`W$%#70v6x{0-0>Wf&zf|FXAM#~z( zOB!kRk%lD2B+ohR$EtzLCV|VBW!N6i#YPHZi;ca%t4fU52=^N4lKnkQ^yI_2tUgfa z$)PiB%vA~Ka(-3@niC1`jU2ebLQ0m?fX_d`h1`LE4MowFZOH&FjI4lND$pov#5M$c zIGtOc-3u}>)G2jUK`qZj4Rjo!^@s*x@(TShc)4iMLK4l z-~5v#th|#V2rJtZ*>1ZQ)LX_VUEZVfdg`HV_p{3^8zq`cvc0LzA{E$_%*`?y9UT>UiP|^ul<~b?sia9zR+u;odpWmJWQ{uSS=l1 zmVEA?eBdC#tl8cun%_FS5aCju@@~yDFj%!oTOPxZO(gAExMuZdtp3GNfR_33Vv5Vy z4Wy6So~+XlK)6i1dIHr{_|4V!GQufh4}f7z!&aGoCG-uON&S8D+GtAHDShj?CR_NH zdxYJoa{8FFrE&>fQ_^J9t+}tP5$<##r8qz%0H{RTw$C72Cp~1Pg=gli0|Cv}XY(jm z0EgalIGX$p4IT!6^8PMe)un;}C+FBta1HqCUUODhb*Vx_!=bC58jWPLmr z7EB*M_I4^;r`b+|?QNZv=2LF>INxN3ufJpCAreTH@Oc`>FN?n|gP_}vr6|<35dgjYL zOi>;t?8EuHq-#^K;Yz?-ol7ihCVr&TR~#V1fW8 znoA(Aj(#yt-p>!Ew!momJ3H+4q6@gk0TRH<4pCatqmZuTNkKPMuBU81h4}upXP&f% z-;b(f^MS_(tC{;ogy+Jz=4X8_pED{DC_vHFUq}JBd_sdgJ`{O$RIDjL+ zqSO5s*%C1 z66C$l-nPRP13P0;dS(FE1?AyYHT~f?=YobV)9cF($K&s2V&en~yC&n@BtNENIacE! zGGN!zM{@kBsj=iA27I#(64dJJeI<7sPS-XK;EqDa#^8i~uQI`d2=^UD9yxOwJ~9&A z$W{UV7CKN8pORvF^|Xx8$H?n{jpx`!em+b&vfqzzJCuo}^nUgt1rbSY%_Y}~xUuB|r` z&LBF2!?7EUe(;j$d{G$MGhk5r_Fjs@r1I<2bqflU*ORnAoU!wM1iKMB?)#9la*(9Xt;n16m-yWl!qZI2bBr7X%Ue6mUGLVPU znkz(VMVm^4?kpMyFL6^^jONM3}m7Il|!j*IKKNBPqY zbDC`6?>td|vX|6u=q;kdocoK0Y5HIjN#{R1BKdFVuY>NX-Ndwtp8h!Co9&sH6cm!Q zsC!G{V1EFOVWGxWF(44b3aG-LI)^ncN>ALI@%LhAXT$43F8DW`JSBGIc{_QMJ>if0 z2Nhok_s?lUCu$-M;W3ZuF$6;q;6Q>v^}*y-KElU)d0CUnAKMYTqH$ucKak>|B8c9j zyCz3?+Kz+9a!iYXM0Hh=uz&|eF)l}CZe6@8{qCxIiXbs=7tSEnXtVfBM@`6JgSfBK zI1a?R;b3X*PYG=EYOQJs5_u8<`ojR0;oxl8OMG)LQK3%d;8=#zP{&nQZSlX zK8W|t-gA>n-_gryNjLa=UWY7TKTMv`%JNJp7^s)tV?#~a%tMpRUUz80quN{b{RwD` zSs0RW^=@TuJ;gX){C2mx&ySbshJc5DFyelBt}N1H{e05ap4h-EIBid&Km7Byj$Y_@ z7B1D(WC7AyI`P(4u+_~4`LUY^i&!_c$JT8|xAq= zvS6zG$H~q6;4=d)#yF(dyjrbApl(hbinz0^iF~HFxHNq4+X&_Io*$o`GTlT8p zMa)^wNb82l1jtE9BWiUlZkZPFt+!%2FtMvTB2rN}j&2V3bvFF!!j&NKN%yz4Z(i5r zd>g=7j5>mxQ%-C9z`ss>^)1ynRgl%dV6H-kqA(>na$3C1K@F`E$^);($k?Brv5P6D z*STjSriv@K6^8wIiF=Y!+nM^HO>2;%lUUZk&hxhaeTB-!efCPD&fh1K<}Ew=KG}@) zAUYQ5$9b#KYYkvf`?m|F1UZXCQ4)uMdSz})Et{Be=Fn?s2y`VMiX-+39$^vFm&1-Z z7-zd{5qLnEJq#$w70!Pv(^|GV<%vJv>aBYF-l`6;C}cDTyXp7W0*`lX?ds5r6dqzPzXtG{p)vL8I$ zM%$kqz+lJse)+E_80-`Si090rhOP>7ESW*~ASKOOX`1hFsA~wl1QWU)TPQfm?_u5+ zsU|7j{QkM7@U3BMrzeur;Mv5`B00t1T@`)vGkcTX9TqnR*jwLQdqezw<`>>kJ({Pv zZ82kAAuMEVDjAt;Yp%|C?2|PBx%@5bV8o7V;hr_5PWwjO^|BKZcIFjAGp%R&W^}^~ z>26%URyVmF@vAUwhC_W~8Q2a0@1?`;YMd!B>$!Ne`jyeIA2GUp6NEtF)v8y67OWVz zO(%aZ&(m5B0%n~|#r{su2zB5#?pfTiWl0y)v$L#8o;c*^j>EE5zYSGuC|mZ{NnkTa()Ma9?$I%WW=wBPw&NrT}pzQ9T{(q42hAm{FGN9N>+u;Q-Y3c$`*zzw_FG`2+l<{-J{O*PyYgJs52?{-Uy)^`)ak?oajX zrVp$d5>)%A&to6m`_KumYBjWv-&v*q!{#Ol>;Qb_vD=Q5S~^@?KKnYkapI za5?86mdn(AFE~-*d44s)87Ql*6oTjOx}x@TboxV9yN=3v5XN zS#hxorayWqt3{JY8`ZI*ZpCpE!JKsc4w5_!s~b32`$W7tYM3C7uLSq67pTaA_!EZ_ z)0;aUv_Wc6I+$3hEkf@SDbT>QVlhg145?$tTPD4*&pXS|t~Ak&)l_26HkTDPU3_QwNJ+Gqk6>@(4CMfbS{!z0BOLd)>xv^`-GmMWxWI5BS?y#3hwZ?QGyJs>Ou^mBp!Q8^ALTjamlO`2UYj%M04 zyg8f@>IkqPK=bdHdPS0A7>o8lRNbRjnev1@G{MX8xDFa}nX$JVeH1~<=%~3P2m^G( zYy%_e|R1dX?MzNTkh# z(_FthKK(fx!gKHy9Es_(y-REND~-G@y2^QHGq#xtO|xE{`6Bb1Fxyp*uoEbTxpv`( zpwxM#qkSVQ?uX}b{|22H!v>(7zfe@y8;5^OLBGCXmdQyH;8rXPHo7j`JSM`-SZ2Fz zRtKW)1>p&(Klv#;bx{>Q3Q%x;!MFC)d_jKP7b*lU>V5jDJl=Q(E?ES*y8`Rugtcoi z)I<)IOmJw17EyRGy)yEwC(9sVlt5q$Kv4R(NQN^X&*+B8<}=3ZH6^%9W^za8NHPII zT}y}wh(u-q4Za#)S?Q`UAhpugN3k`CgXJ6YO1VUK9hY~Urz<5unH@t_lb)c2@kYTM zA62FXa5$P)A=2TD&jx5^SM(Y={;8t!6PZlznAYcG7@F`I`<%yqqtc(9yRCa5 zmMKXFObI!}+Av4jTt7I?Now+ti-Jm`{^0gwp;H;=0k`BXBIq>P7_Mu4`1~!WaM8)i zV#IhZX)6iK#zxb+A>LZ9D%9SP8*pE3ZwP3-{HO90cEuAwlh{v_p>=K@O&%Zy1)3ge zR)mjTSU}f(pjN>?`2)WM)!YfIi%ohi%q@6R3S@8b^0_&e^H>{gKqlp@j{Wk~eYnp# zFo#byYL;(-eKv)ta5e-j?9($WU>?JDw@~ zR(AcQl}Es-Ro{MVAy`D*is$;jEE6Q33BmfYL$n@-qyjW3906{+08$ty!c-QxTjmTA z_=^7OkL-}^I-G;|$G(=Av3EwMI8yoO4Lf2ySoQ|&bOzr-o(ARnF9_*XHZDp)3Xd9k zQB<*8_&ij(==S=848TbkJ>H+_Pm$9HtOXHW;eD@Rc5TG?=VYfTPkRRJZEmb!1{sRwdhEa8kEshg4_523`9`m| z$q#aT%nW=4#roRycDOr+pM|#!EvyP1s>=eo_OcpUkH&j#_c*1~e$+JBQ8u%C8#R9Q z-eY}DUCrx4f0v{hlcVaBd7k@f<) z#Z!BTmWNCJX*wbm_p!JLsCpcN_(Dv=x>;3wOi5{07YomJ3`& z0fBWL$L`#$2y_bf(=G9B3^S?9x|WfRkMudsLj@Emo+|_}j9OjNT`R$00M9SjgDwQ5 z%ryz^yq@#6M~n-O{NChM!?vm{@Hf`uTi3^Mm~l)HXyuUf%TH z$vB&Iiyqw0+A_z-<@nraM-;sD6^%3uXg^tv*NU^Yw2?L+V!t`Mv5pHV zqfX7VCK>Z`B3uUCl;iA9mOK`LgwhRI4--+;q`aVGgSS=Q5-OwNXIouuMnIuWg|(f^1C5R zad(lUmP1*+7m1t~NV2R@oZ+a*EaY@@ebR4v_QfHwIO};gbdc&e{$e$lp>^|K52t{hplwpQ^nn9|qe88TAoDqkBua>(o#51A78 z8q)pqU_9U+3!}Yx+nL?iPa9%->I7}Np^TxX%clIrdG_+M72E#1X?qYJ3GON;MK`t5w?8f*j%z&OJAb5{|{p)P81ExdGiN-f`H*v(^dGzCM&d@(laW6g? zsW$xMRuR9^%(=Hc{2Id^ZrxhYhd@4bL|Q4+^pfy`YsHIj6SRi}*q|OzC6A8NKdOYM zl#5M;oNn-1xjb`=R z+Tk`*Cn8k)US?z~wLfL(+fly?@wO4a$eVFOmUCe#d*!`dZ}!XVQ&Z}~iHV)(u0bN= zE(kNbJ~5=rijAxIt8MDP{#>tmqFUAqy@-V6c}O!#76 z_r-a_w57!P@gr;20@3`vr23>HU;UePE1s&|Z7p=ox95YYv*=4zHHjQyS|Uk0klc^G zb~J@fnORvOQn8sAgRru#_I0RW@-5cRkG-8_VJWhyc~8yfQ@j@RXWqkUP55cr&i=0l zz3DA^t*7D_r7n$(YEOzr;_gSi-*xMA?^ZAKadj;k92t#a{!7+Fo+bY3OS>g9eKFgz z%IJa5qMGvxIJO=0 zzAmm4sdC4IoDg-X%KQIE88@Fz!7=&^*bzTA?Q^i5=lJ8^AwXM(*z%9LP|8PCHOR>b3QAV^+N-;m;$OYeot+ows_q zK8sGATVD9W_&cNPbj)(d_Vl6_ZH->Al*b8m=4A=Lrog>C3J=%NCpI3p*it*@2xXSZ zBCjDj@DcR9^<5h~GZy`El`e9fq!A+ouTh;pL}!acaS*{FOcK2^obdS5FuRevJJ-o_*DlO~_m8UKhBFSVzij8Kthwre>{n~{ibQ|D}r z;c@G3DUn8A7r)(<+M#5s++E#z`AU1w|X~VNZw_uw-7oLrj ze`*kTl-n=E9C+VC(}j(+3XZSO&c^(DXf4Kv5+p?_yyO5o*I;g=IJDx&<@ZEea&!~b z1@4Vq2`dlynXPXlFzZUy&$HmjL?Im%pWNbPCbm-Q+d~W zmD~V8D8NVy!D-Zt&tb%?<<<8?yHjo^1c3k zh}~i;R?N##EJO`=Z9(n)ukRDY(}zPWp87X;8?rt#{{2w$G8km=d^k?4?#|f*J=HU#%T2#n!AWAi z1rDpNPgn34iG=dRtDGt%X-nJNB6niN3x2W=4R4T{PnpnJFfbObX6N=p}5Q_C3^) z_Ya;st1C*ow0>vZDeIfEC1iSQYY(?2GK2E)_{TH#dn%;6Oeh;FaDCs0!WD9oTXy= zAVAF`9~6(>gB3@Gjum(4rqPDzzSJ_sahx}tY$@)7V3a~y`qj!UnSCYFoQf*#hu53s z7aG~Bd4#ZS8ttQa0xseYPbV7s3ojO~LL#6_(2&&R3R%u-+Tt;BFMneIH+F(4FCj`(f=jjMn zEaKTFJZt8qZCK+C96fQXDXt>{sKtj7Z}~{1lRVO_76$wTW;Z7+;=kxU)SJ&-a-TLT zaWtJ&bL4GL?xtO4xk0myAT|AO4d<-kL2W)-fSP6NT~ zFY(Z;EGqCPGC%)R#Z3M6dY0tMO0V4(DmJh;G7?aT_zp?iHq@~DqSB%)t%`uP zh$RmE-U!BLMC^ySrtu5lbFW0_Ekxa_e-n#oHHz}9XOCX5&OIT&xJSINMIq4-m%7ZO zABhS`cX6jEW8mI6I#|LP+9+%8_e4mIoLFx5UadeOJrSjUBhYd)@`0b1tK*IVyeT5$ zwqI5Em&4-2SFI(jHl0T?%}ngBh1q&1Gju+HQh=Lx&chGhU)D&s7!;nft+C*JZXB&4Oym8yoof(gw!i0p8@t&QNu_(! z-Ng}aSCFsTu=)@4xF?OE34OqD^Y||KktVZuXl_+?KET*ZMY;>44rzA4k7bqgj>)kT zPs&GdAweUVuPng=S!7YyhBf7zBE{6#g7xPCEnn&m(gX^S*YX7cPT94wrVq z%W5p+(VrMGvm&Z~eR6^q`AXS_@rjg95b*fJ84ve1PKK19_>@Jbb9?9b)$dp)3B7DuV$#PHl8 z_~xTZ&-;BtA$BW++0bMP{I=H9nGShnl9W zjZfD#lJ;jXRFoFd!)P?X=FidZYT6xPpVvy5xQ`B3Iavpg{iQHna2~3Q(5))3tZqF4 zy3sPuIpVk-TmCoMuqh_1kCU6SE)Lo9EM&DO(xOCu;|H|SK{e7GFZGu)M3a3iF>m@l z>uPoOnTVH)~N;B-uwc^!GS>0|sFszzoEwvZ7 z1aPjjB3&TWBomoDk1zkWa z#Pzj~s?Nu?nD^!V_Lxgg@@dmoqF&5bT#Vm#A^vlNPsO^ZnmC`Jc++z4x)5Hs%h*4n z@1*(h?@U%dCaUKUVW^*g|JAIZ!&&yn{Kb$KvjVb6p933{b?3Y+Z$`o}<3NE){D9-Ap$PFJw4rveEJL^JPt(4wg4U`=y=3rs(W-|>^m=FxRHg!W zuuhcq+G`m4Aj1jJ$zhgQ{K+wvNb3%CC=+gof{72e{0aX1#Y^kS{I@m*Br7sesl!Ml zRrRlCGtE3|xK^&bHK$*$GR~tjAP&B|-aJEAmCfF}oNX?*hUL9Z>TmHLl$P>Kf$eJt zO>Q7L%MdxCc~7ZbTORR;A)kz9V2BtCGR?LSZ!+xTEU1|?@s1uX^iEfaOd($EZC0xV zR2C*$>WNBx5Ab`(EER;rm?Zgcc%h@Y$tDDq53+33d%2!v2T)3crhL@O?_MIwim~$R zLO?<dYIhZ6O)i#ieTfG_{WMFu2_CAZo;|L>n@lbX~lk17d2;du%#ea&S zH8$dni728w-gH2i=GK=B<~Sp0UMB#9QigSQ(f zx7);8P#Op1&o+NKpHyCys>$i7hHSbHp6AJeN^KjkL>oT7xj)A1;awoazVVdIrZQ-; zcFWYvcz;BpC82AH9i{GfHZG@Oy=6{A=AQ{DEq8(# zVUjm{H$K;{mk+CF`l8gwHm(vwRAo~1GJ^ZH7oh0`!4UI4d{0Hl3|LbJQ zVGjg>WEf~H)q8XlL^4U@-`PpfXl@Lpn#LJ)T(@R0kFfd&H$gx|ZAe#~_~~c1f^XGF zqHiJeP=5jvmW96dP-08dR7<&`YbpDqC@}7kQwoWsh$)iLnWj5;*p& z&?s;lc=8raE~}MXQ-@EhrU=i8cYP&^U$ziJVeEuK+Te!UB+#0UtlGYE$LOw-)vzYF z`$y+6De(kOX@`Y4_0t-FS4s7`LqLMu*|zWN2*xSU>j+`i9prhYk4>(?JXF^5(5)^_ zHlImJ_Cv>X|Fv-cEuV*d zW_}g7KNcn%`1S#Hs#MPh_MV-3q%hu{OZL2kk7%pe;C`}xamImq=gX9B7Ihr6^Y~!W zuiWVN-8|dul6NTF1&cOqA)trnBpCDhI7oRt{|++}JNTjPUVo|Tm3U*;Cw(&IDN*(} z{GFX_K!Kc}vRuk!XnY7KpG9)`RFa=S>QvS7%Z!i2rU!ljEXB&iIyuJfB-WZ*ucHsTk~R!3_YFR}_1S5ZCNTJOzh8AJ^EwB$>`zKP?g^K~ zQ#QpQJ09vaDq~@7rVD1*6CK(1f2B#iaLp@KJ8CdMeJM#h4mt-6O!+0vaj_S7_<3$E5!QdqdYVedc%lD9}~vy2~J&UH&%{0FtqR@N9%yl*wnP z9+*8sQbMtvaK$>##ZA;?SCzQfJ2J?1;444_T(qCLkFrNc+KnNL-uz1>`mA8^`vV}T zakJvTs3sHlCOV|Hd4v{JGTEe%axgKzvkU@o#(|CTC9e_SesAfRfli(B0@OgbK%YY~~ zr!Y*9(B4rQ=KLfU(~!Tn+3BQd_Ik$EgXQ(rA14!r5f_@ChD>r6IjI%19YINFJt%oHZhHJk7~AmuO^ zYO=*!N-vt2IE{d$cnDE82PwOae{HKA{WUx??I5716o+l2@L_6N?ImvG?sz^6BEp>c zKMaIvz6MY8n+?ODJs1%ej`gRt$;dB$ zu=i%8V-X@Jqa!+KEa`WZxW+aGAma8wzb z4z((hS+i*Zt4K?D6SdxMq948%7cP$@=g7=cP{E%gb4ef;hAFS1sF<7h{R3 z(|qOEfQpo`gY#R_D-nAXiud1(`nbv5@s?@vu96ThSgxspIO4Yo0T%1SggX^W zZ)}`)vmu{H*B<&NRd!ON{)0b=L$FG2KmqLZoxF%uJ+haM4`CQc{+>2MVd*^*7wyFB zd+ZjIAY=?Kaa13K((^DRBE)+1v5-9CMf~v~H?^@n3z2Zbdc~mOV(Q;y{&Kp>BoQyI zi%$OTB@xtrP_pkadr4YI>A|?gfy0~l|FGw8`5;_P0=jwdI2Nu6bqzLx#rri%Mwh00 zu_MwJ3qkLQl{}E3pty6#oq>NJTq6MLD0QI}e)#hsHqc1Sv*fQhtM+GN)J7%HMQFF- z)`whXW`zG`LL2i%4davuL*t_Yz z!aI8oUI)Waygk?n$oQ~4>ujxGC@8h&WNtTwd2HXz#VL*UXJ6Zl)(d2JPqlCs`x>26 ztp3!#=M2Ul0kV>N%3Qc=DGTkiV6C1$JhHC8gW~{VyDT(Tz7j`gY!dprmMP|0XF5kdZY+vGsy`-z_XEFA?S9Lr4FU| zZ0lYno#y7P9_Z3{h$`DQErJ#l*o^tZ4MR@Lgd>g4V7y*{^QM zFLf1+SJ@eA(gP2dUP1|jP(msR`Tvt~sIm@*V!)1r)x+laLwUOB;&t<3+D=H2&NX_0 zBIS4V;2*Q4qjAOQl3aTw#-+ElxOS6c!1B>Pv{1dO_WM4uaGYU^gnhNLJ)d|(X)^%6 z?K9M3#u-O9+=r#KGG!8O`E<88(7l)Ki(}6Nblb3Ms3X)6oF}jS=r`=2Z$0+ri$RBY z2OKJy)w-<*OTfbu+t-%648dBTYUEqKnJxwEQ25x-ZSF7_pHM0dAEXj`= z8{bU@ajKYc5%dX+_QoE%yAdI{JUq=Ko1{4QnF{oB$a#tlKpvuVA!8>{$HKfRy$3f6 zqG0(hHR4|=;FKbH1?@`k6Ph6vT=KSyfbEb$){SRa<<1QA5>lg7 zNwND{LBZ!|KfPRZ*%4yk46eaa(PJz#g5xvSKDD8NQG+G827C>Q#o9SK%-dQV%^Ll- z^rPI}ecrgww~22K*zhK*QRqW#CaG&D;X^|Oi@o+`jR<1qDQf%~?SA{bOzj`J<4mPs zGJS}&DmGh`cf_=VC!qAg#TSGqK|hc%vg_r6pdI}VyTXkQZBZz<_kwZ=3)J*Wk(MT^ zn6juJ8%a#?dxC>WMs!R=No%X8XMNT$alokjOE_de&g4-=lyE8F*(9=30B4;CF0Fk;$BMa!=UITUcS1q*)x#+I;x9& zppAD*^bL3y9y96+rDOh~rg+B0iTDWNL z;&d^xaC<7fw$?>+GdNzk3sB9HfT3uZO4ysd)5Avtp8HKqK|)dYgVTB&fOGa zG}cmX3XzB0_P$gt(vV^Fb`hM39TXm!WE}H5K{gI52Y>w+r;ie#{V z^-G+h61Vgf%5_$_Wai)j+w&@6_s$qx{`evPmcI+kUn20oPWX6{Wik3vH;wTkFHx8K z37=L(W~>Pn_puA<$*1L0-{1=MecAG87|dk3GX`tr71n{cQX{~ndlhIxN+8as6 z^8sRoG`mHvK-nkMd~L2Azcl(-v+L3O?H1e)$fR-p5wnpK27$Jrm(N>T=TdYu+ni*w zm^kW)SP8rM9&MEgCA80!TTkiv(dl+HGH093tA#hHl^F1G9Fk7`hJ^$tl{TJ!#DW>a z9h4+;bLC}Q9clFF$TFM@j+ALTNzY;QY632aNBW!Nna%%rw)f#W8B_4GGC0-S?a;#D7c$D23eoY5#^?FknJawG=)FT|> z4%3jLy#ESn+R!2k5YhUjWP zYI00yCz_3SX3sq0BUw8hM9Q-KMVRo$9nJ^4vEapwbtEvi{h+cm_ucrL9kN{m&!c@ zZWdDLvG)P{0=JW=r0LrL?wOWs2OB@aj>IwV2}_VrjS`mF`eLs0-Y`Kr4gglsznA4zx0)Sz2sF`?;>~m&f52Ba_mD6b(x!5J9%-bzg`E`0$VOE;agni z!}S{46~6z!fWX;Pah?iVd$Jb<_7^=)WyU$l)ZMjUaAo6Z%5XoS!o5%inqa^^Q#7+F zOHW2A$abY39lyL*6!tHhPd0Ol4$b0XK+{Hy1|uz<(yIH#n&AbhVe7sjUsqm2X+a`z zrrL;PP!}7B_Qc-&l7K9^*V>6u%I<6$5+cQ9VJN>R z*iIR?YHC7s@h0}1%cc2W^+)y@h;C!Qe0x1`>j;pxRg)URjOwQIe9abr6#illZ14T~ z-Sa=Mnt|px*a)u&n2^iIu==sz$B+9In9yIwfGa%SMYMFN4 zDASEP6yojinq?nDhc}Q;xFs|+VhyaQ$O)JQv-86#wcQXP+@E7*LtVMwH*O%N?bip1 zmp3r1Ovz3%A+h4s^t&Z=sogi1j8|ZPOLKj~WGij8)UP8ZSdDe0K<~pP^xfW#n{968 zyALhU(hNq1`K6MbU=66*7YSS$ez2_%s4dqn7xe+n(=B$~8MT~^M0Jrb zcw%^o8|Gd4k0n~x-TK`(ZjA|0l@5|7{gi4!vd>BE-&6C85_(V}{;tiM>VA~&2Vx}# zuI2yy{z4&*{|_q4$Nxn|>}OnQhwmat0?p(n2uZX~5_aloFR36At^-{^-IiDwC_@S- zs-R*@mvB-qOO3>DS+IJD*Gsev93HkCP6xYo2OGBlDwVDe-b4Y6t-J36`A}j0CFTUi zA8mR%1;+N&<}>8IRJxKgw#l|hcq8MLSVB|`_N85R< zN*^Z-o;iV;TcoX@a~-idC;!e^MRtx%<&V?Vj`kI~??n2$F3*y-P}lOI%q*CIm21~Z zzt2qOr-(+$vnpP>#Tyn;l!Gz`p~1+yuDduhCz2vK>6<6fQ)++<4v5fvzExPx3NJ0< ze_{;>)&7d+|4j_gP7i*R-h1SQ`kmH|_}7%%x&Eq#RS{v6{sQF6y0DbICV9W{*DM;G zcsNMVEOmd6Dyx3KVq&ov1m@P@DJIqCTa;XuRgyren?1&7!MmnEd<^KK-WKX@(8?Zd z*?9d@!ArpSJZP2a*y*wD*Ji)*G+D>5wWF5J>(zyXGn~)38j3l8?2r0Qdr4*oID{RD zf6|@cjHz3;LE_#CQt-T6LhwAjB&n$3$L|ixr5rn?W}DVEtvCDa|1e2cnSk=`8MIXac11yW|Nyj&rVa&uT z*;Hu!$z-Pym)tRz!CnhiFKz|>2ozKaFcWMv=OyW*w<4SJQ%YJQU` zqPLFx4avQjbVEE9CQBA=0D8SH1C``iU>!94s_uUIzSVwL(yM<&q+MS|RBD=6Ee}l} z19{)}=_pRBkdZ%(GfS6d)07v)9PF;EQ(T%(sPBG$qA8ML$gKx0=YK9e@zAS-5S@aE zfQz;rd->yF3_dNFFM7;*svGT10on5WV|mKU>p;2_cGoQSzcaRM^zl-s&Pyjrr`w}l z%kFdyk?RWp4B{4-1AoM>&&slg2dIny^+Jp-dJ#xz)y_y@J*_kSoJLw`w71iz|KSV- ziC8W32hQ=7#>nLK7j(?qSiJZnqw!on(~qQ3 z#t$KFW$t8>1z31W)N@&!Oq}srUxX1KCyjokVScu0Lw}YGaBq8bNMN(R<_A41F!Y*1 z+tgGxCTt{3D8Gl@%b5_H2DNY<2Z#1$dHaq`C$EeY1@WZ}fnq9K3m-}s;1nP)r~^}O z25t8tKJi9xYT%_qQqsdFf4!>UVcngKzEpFMCo^8J&_OBJ*&@5Tv2VV=E&T-%QAGN$ z>XeKJR^C13`araH>D<85Ap2ZNY5xcvskvVUNGVyg7~5mC!LEeuv*2$wIJE!KZTGY0q6|$cdGA0+Bk1|f z_Ho)6Rd|8IcDJDyb>>y*d*v_8`($O&%nJ)BiFUi9=;G)LkGXI$N8v7^M&%8;fsUe4 zmd@)faH$+qXy*wFi#f%;>z@++5yAS2nVpa6KickFVXzrs`zpNq z-5*Fdl_Gps+Bg#gmS$#A{;Qerh_}Ntkms9c>icCl|FlEFh55!iyLI*kqdPS&bATM8 zOq$Xm=g}NA1{D;MNXuDE9C=Grs4sb$8sdlIhU-1HzC2G%vpUAmmMa78_7n)AI*uPvly{E*<0-$P{-@aSJzNgjTZ2;$tw(Uj(Cjg_E#hBk zL~6X_>-MX}r6E+B0&+h0>L!T`Hpv5KN?E907Gw{*JvhDisEVGt5`GqEsQWk7to+6r znC=pEG!s5mRNt0K&J{+2f+h_d4L&-598U*%ByRHBP-tN+VLeVt*FJrUvHC<&E0Px` z`vySP8LmHtXmWyK7+I=UtbKQ$1Y8shHe^D40kURG#}OB4Z@96~jv?T@u=T9_?L`mtwTG+=_Zf)Dd({*ZrloAGhH(>)~?Ok@=q_KGS07rqL8GJJB7fKH zL}!tUQL#1ap{Zw*6u8bO!2x(%sozX!d5AscMiXZHA}*ln`Iw|_wuSw|Xa#6?qzr~= zDVA4+q$()a)oiuM%4KauL=JSvsB;$7J2PAjD6_{kAf2^W6KN6d-mp~3^iL?vMN&(4{XDo>>GWoy1`+4?`T7rOr z!J&pWkwd~uC9#Zc; z9-m1T-*5~?(to=(3+&%+{q|t)KC6APvR?TUTefEi?o-~@FjRl=L>bBv%)O`-fPf$R z&4>CE^z!uCU9f%o&!Zb?rmsVt)>YKQPu3OG@O6o2V|C_hXQOns3#9w4(fRuqX?CL6 z=`<*Rp60y{ELz^us}&aH5qxfrE`REuP-h&* zdTQ3C+>VZSq}-wfoJ0NZ{uQ0q2D0n(opa2;Cz6K<7vMi>Q0QlxGhZ$TOd;;9hafr0 z^XZ4aWT9)b##$BVDrPf`Wi!?Z*gZcT-fDIgp*!vUuV(s^|H<+Ac@rf8`JswBp|ebh zAr;^NPD*;*&h)!&5>OtZS($+;UFLvE4MLEvaj$5(WDeuCCC}Gl+UzWcT(pe$y5p|h z9s1PwPX(x_i|ZV<=%yga`t zg7Cl*bVmKSNO;9|SQMTlrTw->EapynnjJM2Z-coMJIzu>O?Cf?2(dQ-IKdpE)3NX5 z@<&27X{ceULHfNwC!~FT5?FqY;vIr0)`&rov=eCX>c9! zuL0!*WBJe?9iL)IMkDh?8wIbO9NE{{~BZdgFx~Y$d)^p zAz@U&ahJM4K=1061VsF0B639PXUv#o;@K%17JiXCcNC~??Bg4gMnmmZl6dHD2e`~8 z^g+#>b~jVWz!=wW!;q&nrZnL#NM_Pjrfe_k-_P{@WAA=^REXK_Mb?Vy%NN9m(eRh3 z8TH|A{*wppAPm7s7{=eHG4tj3{OYesKWjbM4pXcU6(LmMi?3P5^Mqay7DVzlSb2v|1d=0j~7&q}b;Vq$L;NUEBO;G4`(}Bp;qQ|4TI^ z{=Z?scK#Aq3(8MbCSmOTWa+SwOqVf_9XZ?=zNf;{V*G*dlAc*GVET1_#xJ+Oxx?af zB}zvKosL=gb455TT4;ljh>ekAnSXHV?l`@h{kAydG7KC&y%a-3GBmMbV zOm_6$XGs1L!)Iq3xt*Ch1t8J3kb7rYFw23a!x27C>BJl{OCHFZAo@*bZh5sDEkq$0 zoHe>;Az?TUws~H`zjl*;dEPW0RG7N#IE=NU$@0d}V3q=$s%TQp3XNBdMn*_c)yRMYv@lv4;9)20QAUagEQ(R2^NSZ0Y($S@%in zneTK6ru2iwd4l(hX{VAu2Iw%hZ;*1Q2)71{23ibPwIc<7E}SdoUPVk5aW3UY-IYS) zmKJsM#4^+$PQYAOHyiQmW0&n?g5UvU&ZK0ttwncHHt21m_4rnrG|F`&N4^z8BTRW2 zAG!)8o_1_6JFp*DBb7=?IOBlZ9tf?~Ay?^n9%Zo!6!amPi3Ogvl=~;Zywo;Zq-}8n zbv)x8+0oRBV$VSY3&OR>TYOJzBIio5Ik#J3zWe#$S|R_}c7p{=E2GPx`@afHrq^IB zhVUuTgcxc{D1N-cqjs!LD}F=Ok%p$R7I5O1ga%RZ@M2zh4fd2` z=(XcR6E6~Y!JAD#9SA~KzHkjVrnO7cE2K{#5jCWyisOCb>^`;$n)M$Gi=epDWXUJG zw_W>%K1(+&4eikKgbhhhS<5k0RES`LpYF6BW(WL!v~-pFWFQzIdjC?NE@Zh6)6i|5 zp$Oy2oT701Sw!TJXZPOeq}@8b803B&Ea$nXoo{+9(0du z7NY!kEYqb(>QU7QJ=GoWMry80>2)Q7lA!BTH3du?x>OUX$%&=Buh*~B?g3w9@ts)D zV^@^#G7y@ko^PAc@IgY)>iskVqP}>;5(2Sy>iZ_Xw}y=DDA@Ylq@}rKgU9j~id0(F z8I!H_73;BO3A%jdCe6!lCf`bi`Ii@c{>Q7^X%O75_KVyuv%_+K0l+g%jHqK^qt$#N zyXuZ_U*eRJ@NT=9_V-qJ8e~ax1EEq>wc9*bWg;*xQl?`na`g{Cn)Lj@cMB2qSc9LE znlc@!Ff>Kx=sS3B=3i>4#H59$=qT9D0~+maF}9VEH1Iv$Wv+|r+tXgGdaY z{l1myOz06bot<-)0F2c4^QtP*mX>+F;$m1!+}e}@F@IPjxkm>$l8@bqBkW8yRT8`p zudF5Aokvm>8bfv-+_Rjo^3bI}1i2OHGyK$VsEp;1FDm`?Cz@X4Prmuav+#virky5! zMYWaIR6x^!1?uJ_{QKSIhC)OU$-lqFFbtR>(xilgz;mr}7TfBkiex4m^$FM1O)w1= z4lDoBuqg4BEEy_g0-;PRK!$`?t`^jEtq+5(%N_io9U801<0_QGT+@D>v&+GY~y2-)u-0X zHbk8MR(W}V;pQh`S5(jCk*@o`E1;J?Jb`N4>{#% zaC?kjm#U0?yob1^kym_}yy$}0ya-zfdz&l8BjBKZ>m}URP%hQ*6^m#*ktKCWX%BpA zPm7Z)y1@6UY?Q~q)>mC%h9Qkj7j4Y`jD5yqBb@zMnfbqsjTpX#Yzd=R~ydGM)WiBYP% zF63QNS)uXMvm4Kz-n1mlV?L%$IbMXQf!S0o<>*pZ)S(0)#&Ud_-h88?&ieK*52F2$ z0oHJ#1RpNtB7iiS>0z;!0YmB5F_h4O-P7Vjgb2YSA16D`+4B|!0BTz53lqitjxDJs z@(9N6-B7S0CuZuS96D;#@SRV4)KKZmK5`r_`aM|gY0sUn)j~)J?c|TLCh6aZT_*@= zTSrG5OX8yL7xf83B%t0+%4!!O4T*Vf&xF5n1$ex_WSl2DNNHgl3m5tBEnRzH`!m#j ze@?h?ke_SBg*_*quGHi;^wm>PwlPUAj+%1fFPo{6mG;r5XKp{?y&EB{WXwcZE#05v zmn;jiy-=aHOKw@OWzb)DsN(VY_Pk;PECwF9C;1woWzcV(!GO#FKT>Ymj)@x&L;V%m zoK*i8e(C!WEC^Pgq@FGwvn3Td^CWR=BqnyWZ=>(w3OPfNSnLpZa0)pJh)izcD%VY> zeMiN-ebJjb7cPTh$jHQaf~ipIc7B!60^%Vg{!_whKtX;HAEw=(ADNZx7RoFhI;smbA6>BH1MzlRl@D zCU&nc!B69c2+9y8{X##R|qa9baC9go*HTShHw0na}R;|X&;l5pPAblcF z`%_!VV1l+?xomGf^)B5;rD`$9SV(IL63tMP$%|JbQMH(~CPl^E4|`IxKN@KS8|YtO zPw7x&i3ORUQh}GIyY|Stj=ol45?kiub&Soe2TRq)xXAJ)%!}lx676{$R7PPOE@C9l zBAP!`rcwUQ)f>lrqph`5+KrtFgTd(yaxvTZfEPi=uWTe{67i8Lbzlqg8q}&0gGiy%J&N%D|7i_1jEkf2F6E$fxB91r~}kS1sD%nl;U~Gn8evF z-jn^^-29=`;BrNCS~ZkMOa5o&l+nkdhcVDDs<7SA)ftk7+sw}xQRIuW2wXPh7wcm94Q8tydzM z&y@-|7o&gL=4pkw$Yt0D;<8j zt3s)SP(qUb2FVp!|4Gq@fvw|;KUtA~es)7_NLh7ez0Et2{78+>OBMhP*NYuq=9<0_ zp#bGYhQ1TyoUrm8OxnPx1N(lc*VuAw5#b5mF);RXyQ;IlF889Lx)3n!b2+x7tid;z zKo`l$a7njRmOxWB)?AaZzagjd*nn`j&Y%1?!!9^aWvreP;GN_)tk!>8EF^IJ;MTqr zv-cY;I$koS?cwSZVwcT{{k~8vx}M^KwdO!nG#dhVM(n)D`RJ?**@QX^5=d5r~-%WLoTSf69oJk^fMzJTM)$OTXKNxt+ntV1!8da-+cmfv+3?##DzH8EAvE%kXY- zPv>&`F46hCtQT*|C7mUwXEd6#A6X@#)7nJl-q%I}ko4O<8EK3AsT~8kR zxYK02&89Dn&s>&`Uuo~qm?q#j8oZg|NxL#=p!M$0;mmJ9_A0%V2{x$;ok%A zB7YSa(PUsYLbG4ZpXIX9hZo6wPpGW39%OC^v!ZF=d#Mv8z^z)S%d$J)54=19Ol=gi z{r-vK$RDE$8s871E;wr5JhkT{{noHy0-iUnTx)ZjxlR^VcF`Sfwf=i za>Yy)G#5@CendvY9`Y`}U&Y`iBc&$2SZF8^-~Q9D zxRDFvu6(g$`{m>b%^1z-6os((0W08WA8Mtx*_KK*{PUWxZ~5=^2{AmYH)@Ldb8WrC zJ`-y3js5OBuRCx~N4)a}{fj{Jf1ei?512#3ka~n`q=Pa)I)vJ(Wc-=!s#Ibv=tt^f zOK6u23@b1L>*F`jg3Xni3(jQB22$(X6Vywi*ZBApRCDD}#mN;}sb@ZWedyu5Ti?}} zG4k%Mv&WvsC+mzsRmgqA>OGVlK6oxP(sLym!*%x%T^{Goxm+A5lSs{bBGP%WV_t!$ znMj!&Id2;uWI@+^VFcM;y%6&UUbp_ax*;$!yJdqq3A6eCW7(TdOB$W6ReXf|1#z=4 zfC6y}Cg@aUVilsrJ6!Q_z%zhdshl}$7WdqG1+az9O~ScH+OSzVdiD7TbZKfH%I3=l!jqU(MD2rFQbK3eN8I^Pj$s8NB}g zef=_@7BSsh%%A616HNz9ECdt=6sqZm3jq7%CfBb^KlB+G*?2zY*nBJLFM0T1>`p_i zv$7;AcB-jw&dj%qwE9{oQ^$?h6aA<##pm)QszU0Me^*SUQ?{JW+P*E?{wy$^TWb@|B!0ZQzGsisV0#)B zu^)b?mY{##f(y?4XE0^kYR{$E%*2N`>xEP=ex}zlFGAm)2u2DiYG!%Crj?|u!N&&t z&^#2CpWNGk-FJqvb6wfMm$Ua?1ty>`J@KQ|VwXjWSO@RD8EV=>~Ah3{hPWt@ow0a^m@2aP}vY@J>_ ziZ4kv4=>B7-w0@WjC&eJ?kDYjfLdc?Y#~4APv$p3@<|kSmTNlZ#$TdjLTogPDSwA> z)$>UFrq-SQ^@7|l2}fufh`NcOI{l*~QP!-euc9D^u~R za1>Gq!1bavoVGn@FbBaib;BUDwp>x7{`>?He=&C80FL7Bvh3ZfF%x1D8{cST;Y`M= zb06bq{@0Md?)#WYdy`Gmu-bcS9cXX_{3iXqKi>553ViXE0ZMN2*SnM&LvG&1u714U zBa^28r`tn!}jC2c2`E&^$?bhePUOFc$Tg%DkflgLRaxPy39cQVz?uHWboY7FrN=@WXt2+ZH4o2gA4n zj@@iidY`tF4Bay;m9&nh)#Sl%5Z60>R%>HzToU5bvV{tkJ~K_q@{bNAnWkZsg>l!t zcRE<<$KYi2?nG0rdrE~%(7j4fsFeV$8HP50G13kjuY^+sUwo&Vr3qRrN~8rBPK1yU zwkf<+clFVCQ}8>e13JZCNq3 zw(~pfjE{wZ0Q?SFW*i|8wivq6pUtJr2-5oPubr^Zl^*Y-R!46N=o}oImW>fV#E6xD z2WDP|O0Bmxw98bshI>?uvuu>Yl++0{2##i9C^h8AkrZY74iCHXL3>uZeCT{W;nZH3d>9u!McITb6ff2qn#${&ritQdsfZxS z*^KR^3yD~)*m3J2O}DfNPi|S|GqGvOK8Ox*+fKf9-ue<8u&^(vBxMb!40&x>!?(3+ z*5oSV0Sr5s-fOIT^M9HqQ0L8VN&rdy_NvoV>b^p`Tid&on)cZgh2qazso)R9Z3biF zt*i~rhWh(GZM0f7F%YCW$>=kaA`F+saX9^9tS5i|ZoNS$;2`1h!DK}Eh>9$7)Ru#+ zW$)y0h8mEqvI;+Ht>smz=}HK})@b6FM6ahzF}v`IIK4ILUSegGg!~Ckv!8KNnZ1c) z3<}dxR)5aBa2^s=`L}HTLN?ETWkY5T;_ivd?gsb&_-Ex7TBz+Yyo6;D#q4ExpB6vI zpu5_sIn03H`BV&|cc>Z&ht|4k)-q%&0=J4HFxC?)j)awh$~Eh}pTk2LaA@Af z$nB0z*9yO^nMj;O>&fF%Mf@t0ys?y9OLF00Kq7)9`sBDLb8>@>cLN^cr^O%DY7V*e ztxf7anyyNGAx11Kn4aV>%jJ%p47gaMSB-=9zRbMq3L3QdKc2pUG4A$>c4Ib1)7VMV z*k)rkww;Y_HE7(}wr$(CZQFPI-uu5_VfXpXoH=vm9Nt%L09Od~J3@eEs-5&i|1cXa zlYv(Cb$>oO_T*u$W9Qx5>4q)uxi%11yk73L>3o*VE|3uZ{2pA`*nu4KA|S>3qs=#U zG^^~}^?TS!Rh7mB4Jh^dKg~yf3&e3^nbM{^6j;Lmg8a4 zM&;2_MC3~45v3sTc$J>CW#`N{E6^SYx^Zbe-n3q*37A@zJTuwx$sk#1eJg66ToJ-+=-p+sEQW2N`@ufwAIGy4Cvn2Q-V(YNXR85qwUElU z5o4-|sOz$DsOQ~o7-%*{w_*|?ik|uTEqP&iwjI>X#zSF|u|}6yZ!MJ9vEpj5xVjk5{qaKb27@cu8ks2TU9G zr|%%41bX=Y+fv!JED@BSt;By)YX@gGm4oyzT%*sKkz3?7V!Vt^2B7J*A6H>hK4YSD z9Ku5E1m-zarq$Mw*7|C~OCznj_GU0Llxpqh*OE*YTXOLnaP7WmYV~5<+GKO?6ufvA zp>s!2IuJ@A{fa0clD_58+L-yHZczNHyV;LN(JUIvF&)HS?`UTd&H*D-A|1(kYL`#b z=*4hY`ZJ z3y#!^ANOBIt=s-gtTYaCEJTNhsbrV`N@qEXgQ16(x+G$F4-T=N1fV*iEZsxoZMWR% z%9CKb8O&W+iG5Can}PlVZ%H1zAqA=b#H)p&+WXaBo?V*BC=)(qWz^j>X@-CSue=azDa@% z(@)C|2&iCV8qD4~Zsa(5$*vmS=Q&4%Tw3f75j-IHq3IhV;ir1&wBW4ohDO4q*PW~y z>y}l~NOT8S-#85dmS8!;S$y+8ZarM{*>-#X( zMan-Hxep;b&7M#d5kDedd>tU;Qb8JR)y@y&{HT>js$N8XVfDK8zOUuhFO+^68z`ZD zjz~=g70!VZe7q}_K`y?RAKKf^Wjs~J)ohMWA7aPjAodtN=zotTWvQJq@w2kGVDQ83 z$9P55l?W%SXyJOYI`7Hu63qEB%j@T+4sAlnycttmHe}8_*8)BMW=&0Wxg}>&ykOM3 z0TPECNP(tqv&SNEFEsO&p(^yL^PXTdgL_agPIbzfly}@gY=mnNPSdF!T>#O%!3~lG zi_so2$wSEm_t9r>V*cWjnYzwzpu4a85WAZa|7E~yTGD*?P>+IGOth`VSEFTAOTh*lA*P%Yj+4qA{vn=}AVRTPP(0y~w@+*p+5dS#f6=~$_ zi{ObR{b_JIXqW!NGe%bgL$5hnLmruBuHkI1{o-_l2TS#%sT|T?Ac4OTguQQ`;G*%% z)@-4FL&j~xE#5ddz;kGpQOqxIS()iYf~0YrGPvLyo}IWmM$wXB+QGx3L_4DZI~ zY~HShr<;(Y{)iSv%j{6}d8pxgBjrhvP;C!Eqn7LFZ*0$7LowYw;A+)d63+9hWglk7 z`d=KJmDr(vltP%8`g);f$&$$EqA1WrNlBn+EU-Uw?+oWgQUJUf&(IV30RfBNd$FF%!C^H1 zP8E-$3~qjNy!1;^ZTJ0-_+jUuNJnIFOp7Ude;(kcqegEc%tlFMPxe(kqs@S0b_&k7 z6zqEpbn2sVO62=%Pxh-oQXmpG?=;xEAnjyAF$zvW5!>&E{Bo&*YsgHv=;EN1PU6_r zr`*R42{A$*mC*JIy{?w3-?ob=d?d$G&KLLy3P~GtRNDCJ$`+gOY1U}_QsW6FGH}WJ z&q)`h9oPGHE}IuA^elqy2C6#bE5M+R{ajf9EpCmMjo6Xvm2r>w(O0Gk$iyB(xTYFn zg+dX%{(PZG(AdMiuLCgs|2^u@QvB%WqL9l6vg&W}g&6O^2{vmX9XTjDN5zsh^9Nn_ z58*h*hS1TV?G^InQc7{@<`~>J;Tm1z?)s)=?hBkiS{T+2TMFeokz8z&h%4*hb~g_# zpT}Gy6F23qU$Hhde@Qja=mL6@8LGLGjv^7lJgkREgQ{gr<$F$Q>V`{@ z2v!H0^i$bURs3Xm9khW`@T{qdOrp-CJ=4>^T%n^!>^3h=%Rgr6<0}4nK@0_h9Pff&hkj%0q+@bCSAqz%~Cu-*eB!4=7xnv$LA2Y#w-(8BhpkQ zdAJ-PwkMWe-nNayM|9uijOfF(OrO#{dCA0Z1H1rGI;}(Gv-5FHFqB#N|50TeKW*tg zb^9*YT6teT#c>*%{my0@?^Cxz$v(yTGQ_2CKsHN`51j|9K{a8i;dZ1t1#29+ye#@+baOE3vL5z>LU4v!HuP)cr7=H z8t=?Uxw1V*Z?XikCyf1ZfF`-Rqc8-yV5TSpX<=D*r&8 z26{tzo-+#x1J!ipK}S;k>K2;XEi|Fn$OqKVj(8irBhd<@@Vfu+=l5r5|8w-|xp#LK zHN&jNi^7%3DS7A<)B2$^bzb*<6r!dp0kNjjSxg>0x%da^5OQcRM}gkNHy7rCIfA$Le?etaiAq z$`In>B>#p-t3hH8mc$A;3};V>aE|(2r05w(-+tr-c$zBAis(@56f&euz(Q@n&`TQ4nV#g0$hTxy zF9A0V_6oQ0*UsJlNJUvF>E<^dFp&3z&((9`g=-&WDfNWNg~(gy`=9$ZQJ9@|y-vh3 z)x=0GmL4kYZ=_4eSJb}Iq=z%1-wdzXn?C}WKf#8(_ct2(SnyvL7r~$cL${)+iHxle z+R#Xf!upqW;6^5c2p4sGiTi)Qwu!mbL}+oUW+m?U$$6WwzUmIsJ?@ms{H$Ssp39fp zyfcWcnZHg;YR_0J@CVj+*5=A)Rj5^gmwd}0GhC%J?P$52{2C%-B^M^WZgjF~fTi_S#0C}Q+|&+D=^mcZk! zkKsa6X^L&Cprfsh69~0)97hxk?dsNlY*DoWvEB(9Aq?t6b^hrYJwBuMg+$ zaI|fbc7nE*qUF;(3z(I!r|FK%eZ&|ruA;BGp1Mk3d4MKTHD1NGnHUGi;ro`!<&nN^qPx@ArMsJOeSjqf@5`B!@oLWzZu85PWIOJ`3t{ zX%Uwb`Pq})r+BYk@AqH=_s)6KuJeGs+kS7I(;BIe$zOmI13Cuc{PtE>@?;w^5O6mW zB8oZVZ?R$RUvu2yR~{INW8Si8t7jhcrYM(oz*MaeF39oPw3h}rbN)?9i~ZyDK=dxV z#od0%4;OV0>vUQyYPNOLi`&fHr&MGSi=i@)iAndUmg41`9RFj(QDJfv~l?1k1Pyr&kJR6oM`$xR_*vMl^@%M)aA$$ z>fJpQgkZ~jHubZbe9rvjvdI7c$B9M&3?wCd`s`)jW7b8A4{}TJvvSNn+~agK28FBs&nY4^4!nr_=5F|0Mehdz|h;hjAdRyvRrYrll@?>23A#z;ADh^1=?D zKz&h7>?eW`7A78-KyH7RR6{#wS2gcX&UYG;^<%HF&)U-a?xR5Kv-A0*kL06O+i!nssq&cgOLgGxx&K7LrcXj ziAsWI{ZHxV%C*7#TA*#imkPsF8lLjBU*RLnIbdE|JS#sdb%jjNR}C{JWlLXzl6O^1 zdpyCoq2}5=pWCHp%SBo`if5)C`rdkb9}(ThmUwaxqM264jnnV|ARZ-D@qeBwOBmA6 z@1NiwTYi)#YK-cP7@EW1M~MYuSsI}=;5@+Mi~ z;30$HFvOj+jUUj$m-TuSVmk{E_&DzGxGs~epSbPOZt?#-Y zQR$=E5GUTXAq;rS025a%%+j=O_Ij?($T4WL$PF}a_PX%DE*jQ1m6Ce4SiKVBsU-;n zemt#lQwzl^>{RSiq=HN!ui{r_eNU!}-FTtas7|`2^zZmOuV*qN#8g`ExZHLPHRwhB}YHa z_JepC7cCXB=(hPNq=!+nR$9XZ>t>+%-+bItWIv_K>ukaAJUCeeG?2NZ znTG0opwhnSsVR*a{I-lOuk~$^j7vSkwTX>!kG3dsBoSIad*VtA)$V7L`oTBTSDTb) z{$kuuK}UZ~Kmjc&dACC^K4*UdIZ^marFPzUjFtGGmm}=M734k^Eak$5m|n5tUBb?& zGLkRbCjebygViAxH~G(XNr?9^B~e;<{!QXbxgjx4ah){Zi*vi{DK9vuW^9j)s<1>&pnS_^Plc2fJB}wWvipkvcZO&M zyAl7ntkrXT_CYxQ^qkxbs|)|PGjRUwle2mz=#6^U;>?WVEy;KNa)vcz-ONdHSqZ@u zp|{%&bB&p-GwkUXT6K8tUbD;x{}<*F(j2rv98*9naS0k6Dv_C5P>A%*(=zPW##B2P ze3lC8%Mc>2^+=Eu+v{vXgHrPCdWjwEcU&6WoDBI^kx@N2`KOgCQFKGK<2jX11q2t? zcUt4QV9ktg4zGtUo7dFtcx;e!kQs;UGD9ezwkqq(xsWX>9%h7$;dnI=oF=osLXDY5 z=-hMAgP^&7>UX?VCPzY%l`ERlU^cm2%^PwG9=heWXJKyduie==v!|sG29vCluG*CI zMywWa;@-_B9uLDH^CuO8r9s=1#s23)88n0mFnrUmdh>}r`G#7>O#D%TYJe%X?;QK1yGBz7G<0BunV%MVJ`F3#K-=RUJdE%%aQ-B+{=rBd0HA zysHv-q|>;~z+>YM9uQwiN9ojVP&>hk$Wl9RmMbljr0bm3{}9zngRm}nItmy(YWHyz zliE2E8A>QDrOS>iLm#x)2=vXW0b)Bsmes)GeUW0mh;BPUU*`U>@H~w^9`(Fdp47zu z!hyYB^YvcMi|y)`&5D1S3={6SY4-y5y}6NdBkC-FqXRP|1%&v~k#7&DgYs&Rs? zW9pmF)lfhj2kZalSQ!v5BF@?UoCxg81etk7FAlC7?fZp9yjFIO1Q~vPjbTFi+s}8A zz(xv2`?)2+@e;RMMW>pSkF$!}(*2HxhohRa%P#(Un7Nhl25AJSh|%38a9*@1pB8#;+ZRJci}N%lXFW74h9!rr6QZL^nzU z%wd_bh8jBtJIk;wWmRA*xc1#FrPh27DAkw)A5aJ~d_1#V^SEq}`}e56bj5)XV+@2I zI#0Y)OQ^7rkwbbx(`>a5eJ21Cf|Jz<0KNZpG1iaHhK)b^8F~*YsVSqdT|}OQN_R(Z zL=jK8v^l%C_sfINE?o{cA1W7qmx`#2maAYMn_c6vB#9RY^-hDhPD z%1h_V^YJlzku}dBC#KD*fe%xN1KDpoPPJ#o_1Bw) zoMWR$*?0q}^j~^)|MKagZ^rrghj=N{a)Bo;RA9lXGIJD$=y>b|4tLl-@xAQCyb8z) zM0VN6@esRM?KLW|op4)N5PBb-o&O+=K$=54@l=g?JKg{T-v$YU&p*L2d&r$GwJ=|v z${%NAgvEfXoGgPP9#j2?e6+2O!po6ymfi!|T?ohP?HsEC7n`aTA4nW^p_&A3PppeG z8}A;(;AnRX3xcW@vS2oA-*s{#g@N-SBlAr59+LiF4DEln6>jc~ov?0IY$CLwSWCck zQ5!BgoAOGB;)ewjdMEv7ht7e{WB)7#o6my~c8pXUY2zWh<`9 zw!F&*s4&zKds`vU1eY2l{$j#5Wt?S?UlG+qsvZw(km@?Zsg`rPKX#M9U;BO~(^$>< zV3Q|C7E7|a#UU+U(PWAuLCFcjL*on?@};!TIxYdI1J1+)cTWQqx#3<&TmyXY$({&J zn+^K1J)f)xTl|uv*_CV=zp&G5?@$C#%#=S?OSEzilPa2QtlV@MJ=f;BU6zuMBF!=^ zuZ0Q^X2)x+^ra)Kkg9qvzW04EnTMF01?fwzvPwTHBB8X(!Oi5xKM2S(<42)o_vLvx zo&tM&eLndIF;_9dWg#r~6WtZ?Jb&F$bD80hrfzwaaE%eSY<34k5$K*nMK2+)-g~p~ zgDq{lKE?dU*!GEn>btP#UbfwO_)u-o_RQk+*z0Wd2|d5S-D8EdQ5l+0x9JRODkdH( zif~*Onh2Z_E|ulYghH1WmbBDb$SyBxLWVdYgy~!Og!qkX#(QSMC;j+~7=zSNx+n>+ zpAh32+Sk8$!@1Q+#9a;ybq;W_r&N4e{7=P`Ws&ct`e=>Dd96;OtT{TvN;0!?mXM=# z*f#NJT7qqJhlkL~uXVh9Q+tt-espxx_`!r~=P)QS&Wc_&D56HgoqgugZD@_8k4C`i z<8`CZM9VO%TiiE&y{UbWNw4?1Wko&$eY3BXr9Z(Mxq6+CVE_6numfc=G4RSu{!L}R zTO`_hUs^Aoc%vufK7l9j%!l&soh$!E{sN+kvEh^#A8?rAL3eJnNAS;tyBY^n$An#B zx@K-(;8M}LB8m9@IA#yt{IC(yJ7J)YICkb^JT)KJ7@|zaAG@r%#(8#q`zJ+uRsIn2 zc>LN9USO!R@iCZ1hsq22F}&S_2j%n_?(ljkX0u=QL)27#c7e(J>^`2TrP(xbsl>7? zAbHEF4^aZ)FFz1jabuwR2t?avI)5};Xyo)$pdV)@D#gFWuqz@tDbrdM{bl((5qSb` z+u(LvVdk7%MOJZghmKhpJLTj3cz(B3js6uAQ>`v>$oZ7@F^V+;@O%O5C1DxTk|@|7 zS?|Mu1km`7w&)&@2qcTw6>WY^K@V@&_C5} zsNx}r$|6AYsSdyTLOgD|;Q+oV7JTUwh?e@Vd`)m3;;jr1$^AnhS(|C8zFvq6<=B{cghmQSvf* zA{iHR&GR;}emm{s{ouG>_Blk&0?+=qfl5@z@v1qTx6~9534KoNXU#$-x7Vj`90pmv zce_>YQUQ8f%2c#;4Md5-FV;14qqcmpmCqTeKu<@JqMPXt)NhR+X*s~J@#mW=2l?9Z266u*WaW36L|*JerXKpTz}@Ewf8K-=B!2r zlds-NGsGtOpLjH_z{KK6S3Wv{16s{ah>oy&V%Ui*OWMY_296lmX9~^_2UBSm{S~v27$e3ZAib z^+WUj`nf~9uzb%XXCX0Sf~UuYixK37#;j7>tU>t`SfL2MYv%wyXA3tY@FeH;XK*jc zjMOxI(!YIz?`A88xKO}ZY$8ZLaUfleT86x5hF{eWq&XKByU4Zv3^CviTEnIvvUsjr z<|&`{v~O`n3jC&1gsHhMif_ysaMpoi<0ucV`D*~$J?SR=wJ)>nap**?t0Z=sRNCOp zCjDZTP>FtlrUA(QdU@MFK-GD61Bc2%wv-=3MAzDuaHYKYhW%r>B9a0GZC^1sV#=%y zo;xT%iHw%`PisD(yo}kS@=CTPbyXQ%^YolnfTtgN7hs_8ub~0y5Z)L60`O$@f9XrR zpr;-MIyZk0HU{wq#5zNyGwjH8zj_a-Cg~)_M zgm$=iU)M6%RsPIj2_XECVZg1Yt|hIaW@kNfSwv13Fla!4%zqIIkunYCuWyUbvV%h> z3Pd!(m2zyZd;KTNvUxucD-|9q4a$+0obTNatW@YJCf zTf1z=PL~0ZO>GBep@$g<8l=bbhd5!vOivsw0 zVi%K`2sYqvUz17kyk=+p08^iXF)>l*8P+zlkTYTR1=h0GB-2!U{HC)UvR*3)KTOhLS<>>^g~sc34#yFe;n6fd zzsXDB+co}pAKHdd@ktp-CUo1;O_zaaWzw!G4Q?6__mb<}Iy%|$*O~U=&f!ToYaP-5 zwvyO5oA|y+pI)i$3H|=&z&4^(qMiTZzKBrV0N*g25(Ebv*n=yCcihu84jb=051!tL z2)-QU1+euyr|UNDssgk;ulws_V?6$|A>Wa{&e8;{V&UfMDX_~mem1>X?rM>P@O-QE zrbDBx$+ck@Ahaep+}R%6rdCoXN979HfNVSH;46o?+<4X#mr*cK#@l=0p?#=}rKi@AGR?IW3%Pm@@R zr}y+-%zU-1a$HSoU_5?`@H{9I+AJj@X}4y~PLrHkpE(Z+v*HeA2!B~rrMdIHA!?-| z*c&5Os>Hp{-YE(e-xjsGV%=9WtzXU|O$+|T<<;PG%?j#Kw= z+#*bydJI1B4C^dmjCC>e|8E&iB z4eehPgO%?Zq-{7i;d+@h8~JIW1Fv_#&(pz*F84zutIV9p&B?UUGvoWyvapuUMEn zFyg3d=Z#WD9s)OAd=yzeeb32P*2Kl^Fa0epgxX^bri?ruF7qAecv?etqqj;U6qE=C zJ}<`OHB>zu(+9Yz^A^x!&xH`TS@E5}d)c7%4kQX`vkdV+0yxOE>MgktqMaF>Unl|S z)}8Op|H1g3;ei4puUHQB38RBgN2886@bDskAW6G2rQh;3zmbpwxK3_moU1E+`d1`8 zWi}Z_LnUH99+2!HxldLQ8GIvLiGJ&3rBmo(bFQ5 zEiYDENS8&tQkz-G*mR!0T}w35)3x3C%N8vZugq`7E1f8~d$6TTm-ij^9LN~Fbk=<# z^TJhqwn)|9P~rtSQNH8LfN;D1U?rgGAjQ(GaF>+unSuNtbho2;`t>9Ft4uiGbW2g& z?W6o8MiXHSLLNfmr%O#fDLe*wESv8o^lM&#Qz2x2;6Y#-QIA2d9L-J(3wE~ z7asQJnL}#X0`*_Ck<#4w?UJNk{rQxH<5ez+Fbr5tb@o_8`A-}l8}*M~nO@?Aia_R= zm-SES4{5VdgQ&4s%@YtA82PD1NP&SBlJR+sZ2Mi`BO^92^a&nxvwQ|}+oz{%u?SRy>m zU0>%sA1_ulRg|b`DZjau98i28y`-LMS<2QPo(GeZqf{Hg64^n<>T?$f| zdri2Mr)&JISKnSxxiv~ls=L>%wkw38ltWABkdUKxO-KJJ5u270?qoj+i8qF_Xs(|v z`T-}61N*H3>H^o-t9r#Z`Fv1EB<#16hcHYWyv4zBuK+gmUkdRH1Q1;d$-xb|$E2>A z$p=+smnN+LrCRmFtceV)yKt#n|1|HtW)jd-tr3iulzO4f_d#N79eB-Zt*4tixqR}P zujH?eSOcW*nK=zeKK?`Lb%={h`&P9+R>M2kpftLF(MerByDxE)HTmmorQPF^c%?h( z0kCxZ3fTJ(Sc#{>^?6Me2Mn~7sTPexDyGiQ>FeOHDc{H)sJ3KhC>d-yF)(i##~nox zpPJ-z;pBrgl z`}%EeLa3Z?FgO>}t`V};LlzYeEo0ztO)zm^)HWJ!hD|lwKJFf zNA$@%&J{ww(IpHq-+OY`IGLQ_q26NyBMr1y3Wd)3lzx@*#8Qj0_8f8`^IzG9A-;Fc zbJvx2z@*o(dV37ZdpMX&NqOm-XDcaRz>9cwJOy6AvlhnWRM^hK7)Pyepc*a?$5Oi7 z!TZ9|yLKa(QIfKQOM{-VmuU+Vr6QXZayDggO9wc-Rf6HD8DM`fwPCMekdqNDuA+%tc3uUEWxLY z7FDQr8lFyG7H<*Fdz}KO`n3pR`$8<4z+Q}C0RxwzoeGIdyecWW#1N&N?|f^u4%{Qz zDg?4Nx#HZ&1HWAs^?GJVaZ1+}X?l}Gd^B3-W(7|!@K%p(*YSRZWnEoWi>VU4YkXS7 zm(1VEJ=PaTfkZ0zzBasN5t5ZD$Y=hSh=AxU=?~3g$|jq@fx-M$neiNSs0|zycUbd3 z=@xOf^hsb!fs6r^iynk79PKPm)~8J+CYKF66Y=9A?pP7-qUmgz znBMn7M9$v3!qdPlUJtWRCzuFfs_#;%#89LrBjT+m9E$LX+<^y9gikKlHWe#iJzKuiP;0G;N0*+tNQ;N%3 z5nFIhMy2=gja;B5C5ozq2l>_93*2r8TK=ScJWc$S`6IbS!y>A{=HZaaUl(5U47Fs? z5KCk2njLCrjVE}fLrLdOo+ET{|4W&|h297sTqjrqt40>`c-PQ7!uXL%Ocv@-Yy(Ta z46@gjtpmxEYv3hjPRma5Y(G$l`bGMr_ke1vC6uV7;vw+zC-m>qanxiNsaLYFt`8QG z@ZM*ChZ(Rc>H>6tDw6Lxw41LpLq+?8#>#Qh1K5+THFOf_vp0k#hgRbRpk!3h`ic=o zoYa$gpEt)Eg6q{G3H^RMLmR=SgxP0nyY$X}^ok5BGNOLU!17Vh9FtCa0grkA`-u|n z6je_`6g*TWbW|7a#I95>YFvoztwwyeh|Hv|aVFfrV~1>E*yV0pB_|5aqZ_K{Dmuq# zAEWbf%mEYkc?GS||3Rm}Ij>69F+gW&oM4pUTOPiHPLS^ zBq3_}P8ee&D+lQJ{!`=Ic^5&C14HthxbdgeBI+gaONLLrDo`7DgeqNbQV{zJjv+Gq zHge>#ABG^C)W=)Ql)uT3U>g^(K|fsrHJ`ktT@p3d(KJ+~kna7SK{>Om8aq-!d|&(H z9O4NFZ5GP35JFGUsetBreV7JuQ+v^^?shBSwCndT z07#RJ?H#riEOIfcfx4hCfw#tx0UBhKw?nw5#nG~D&%3AP-HZJpbNX02B+hH`FR#(y z3psy?Q5LeNMh;;P*j*hyL6D?U+={P z9t;PefB~j4M9b%4X}kHPNSeR5muqMX(m?;Dck4JNjKPfjF?(3tV%h%NelC!zVcOal zpf0pYE8UGyjXZsJLLcjt0cm&5ddU2;G){QBDQKC-sixy`19Jj=R5qtw#Y0$cHc2z*U4R)-caIKRrd(5eOZx@&KX8c`(}$XNDW9E}ToxMehGP4n$e%%W`+q zjTI4`3Co%{R4*)h>28ztXtU1FK4AM1g+Jd!bd;?y9k!CYY07%D?YjI%H>O3+#0n4S^5ji*n*@zWbt90k{)6Kf>bQcyqb;Mh$ zS|W2XR!v9zhPERvliY%A5UALM-@ne9t+I*EIFgvsXm5y+ip{(Co!OTJdo6;Y`OYEYmyGZh^~)Yy0?bjvO}@bE`03scHRSGieWjW*t|J&vwmBJVB@ zFSn*ocdTMexQt}2P;hmND6hu90PHnyCa{KiOL3dHf`wwq4^%M~JenC)0aoF$lyVa^ zfCjq|XAYg`5!D&lK}QTdZ|HvkZH$3vq-_RVx9yREs{*s0Ho9UPMiTMKl9tC9>tlwH z$43fys&BM^WkZc6i7a0q2Kjz$hXUUJs$BehQWwB~dWq^sc&%!tLA4Q)!V^Xrq=QUQ zXLfs+|JIGJ)QwiN5V-wTh0`?294_*?H(GX=@OM-|C;f|q#on<-M{;RnP4YNlKefPK zg1({Vu3;GsO`vwmgy?j#NRdY^@Oo_0G~ir8{88lNQQPiV>oF#GG=6;1#WL#`Qo}(( zA2o^bJVq&>!bLfk#Y;-T@PHGT7qR5K$c&$oH>eY7G?=Y&^OAZcV>W}-dm0QYOyRZzj@;YPm?8D9?N}5SqOoaiO#0y z2=nJRrHd()!rEO4G31P4PCpppvO8M;;Dd-w#U5fOz}ZtS;Fj4J=Nac8i_oV=t1K7T z^d^7{N-Sdl1u{B0>WLtp0FXmtSJOR@9UyLwVHlGVL{FvsLpyBKjuQFsqnWGo`yxu8)YRab#_#SXbe z>kV_#1M54<8e4A`Ucb#Z=M!fu-e0*$G%e?u%f7+9U@NBgKSJu(G4_vCw5WfH$()Z9{mN9j)w~Gg3~SYm`F8U{Q^#n9$(54CocbA0GHAjfSCo z+O|S+Z`XfJfkIS}Q9P>Ya~Sa%Ih89$$ap{B8Q|fDh@Y8`_O2OP>V1NT$o~ZmZezBe z>8mV9F>yY!nWoCD-KF=CW)ySV$JXz-e_Nd=FeiYguQNwQ$BTs|%KF_yD%C$I%FFgm z?LuCws?iHt0J645WPni~CZE^GcFS5Xq}D&^M`#@?M-@Z^VOF!#<=)4@Z$+M7@VgxG;^l}jE(#thu)xIQcXGzqn zR@T;KN62v-uhCtF2+T=VGg6(FQHYVYFrcjCFU+qMb8{NS(V;REKr33BD0vMV?C*V4 zVrDXVBL4Tg^y~`pKWx+H zN{J|~d}+oJJRZfA1^(4XNg!I1Lp*D|<1h%3g)r0TuQ_X~+S4}8&z*kLPQxPX4f zs$yX%2U&WB2R(HPxQ2&>NFTT}#7L{*yMkK|u#$bS+0m&ixlh zlYjy_fIVp!j!h@E>VNbI%-1nWch7qV{egz?4O;+v_PN?c$0OO-E#g#$G5>GV;7`e< z><2)makFosjfKXMZy{&*BFRM~kY9nt&F38hZg!*2;1&b5 z(NHA98I5THB5>rncy`<50Jy@eNPm~Pg43>;tH+AfpNRxV2x}`6J(6G*3cII2oNE!Z zaKOK#jEOR@NR~oe{xDnC{4**@L;9Q%s#ps{F1pZ?l@Ib< zd-u10*+p)+rRpgYeD368PLAFohN-~)Riz=UylKBIv{KPA zTM1Vw8@Rl`ETu4!3;N(=(E<>UW5_M<_o>#bmdNg?()giA;{L6wf0dvFa%dg(y3E`u zwyB~#B7d14rFD>(htSX(hMCc!Y#a%_Vtr#$H1NxWeVaW6ma-N18z_aq9@*3b$Ke_O zXtM}O0acpGSr=tIWDJ4PEqM#pKsTsgE3TsA(;jXfmDu>;Wv*9a4(f1H2%d8P@i zlRpG&uv-}?+k)ScKHbBfKsaF%x)6!^>nf-l+%h_!-#s0*@~M!zd0-8dU%+*5JY)w4 z8XOXD&l8RV@1u=ESTC_Nf}zwd#g+zN*R zqTkMmJqi)8^iBu~Tr@AvOhW851EVOC zBR8bi)DirN#{%9wQM+k~h_}fUG7WjF)GXlL&8YHkhXF{0$myWJG#xD|k_w)cFt?zL zFT1e^D_O5hrVf0FMIip3Nj=w+bZUHwnK)I^ z?s523HBHKeXhAcdxj=amE0mN(*1%m|zx?hTB!7Zeq79eERi#3qunFczUc6Yu*bfRS z>v+Y+r>^r!?UahVBn#m`Ntl1@Qa5qDs%f_IAfQ-6$$gBtd%<)6)aSbKBh726^oF^Q z*wsDz|!buA37l$%>#Ed@D{*6>#*|H$9vO zzKWO~;vd~b;D*-4q+{2eKs>?Bb33!i27fu=@%smHH!)*cw5@>o&)u>ZN5}#oa&Yx( z3FMo!pU5!($&||1x=@R3(4FQ_Wc?%^xWbU(lv zU|g-R8LW$YWC9l(c%m;=kXgKvy`SPG$KsV0%cbl#5Xl-1XflYh=V!(}RrWo3(8Lh? z2ZFI^WU8?czuQH(tH?O8sHLZPO+@-@dpyjjt7@y<3)|19bp0iH0IFx&iZu^;Rlpi17#l(&r@rPXc6esSk7T){#|7vaP zQ?j9t9njB4+t(Q7kAt}8cfTz!h?keM(p|s~t>gL1B#=670!MserM$bllCXf2_04xT zviRa+GX?vVea>`#@VBCa-u~HVvA(6{>A^8OKNw(7)c4EmcVCx|)AavDU(nfoXdffw z?&Md4SF1fMWo=2zZg|(CwU^>r!x97CP2umh*~5m;z77&8%5`1nsfcGC*}cADqD!A4xZsRXOqA~6D1ECQ>h^!R6RAs zJ=Cqr>~LNM+e(e4+G{5YGpNDSj^e^I5%Ox4Ak0Tj{23!E7Jjk$<%4&dxqPAVeUkFC z3iuX$&p9(&8C}#6)qv`VBQw=f`;GF8A5zte=wI~?w=WW-JsNNX5$2iZX_qf80dY%s zl(K16Gyv!Gm3q+jQaTlIU<&whDfwSY`d7zIbV|gJmw3%?-zjF+q-Slg;D@tcaAPAY zy2mCF#BJe`F{b8t%;t#6tP`dZv^W~H2aJli0&+f|7Y(tFi@6x9uxKvdV&gjMW|%BB zt+`Jb^N+X|DOK!=>41qob7K2pPYsGtfgP`01r9E~w~7~9yH7ib zI(ioxQ4>Ka)=3jKO@p!&HRO|XARE(p+LhOb&yi3-JO|Dz_KM3qW|3gLLgIQr`_AGr z_=z|*zs0~lPHZC-V}tD6<5WtBRl2JBOqzBRXHJm|#F+`nXQ^#L#dx?*2cc$uDQQ2q zV%21Dg5q~WmffghX$OZ(`OpgNvHHY_$vj0nWiezM^iR3>=|T;3hQ}IngBP)MOOB6fYd?hQA3KyT=kjklyp-t@`8dNrN9!X%k3TxTJg?$Y;@fE?!vbbtW=xC$ns?ou26*yXy*luv8!BmAFF*xwVC)+#Y2=C zIx%Zfesf^>DXhvm+{s+q$6KNF%o)_ag+o0n{pSwMKZF*6vrh=2;gbduTXKj>h5KE#Dq9%3s#XNcX zrPX`qR`$hN9ls`Xq*q&>l_CwoL^8&OIz+!b54vczhv_)-#S%Yow67rHRc=et(X2Ay zNWR`8+QO2NAXO z``@g>VihWH5Z>u+jJs2>t7&@BdavN+&PZOdJoNofVXkXhc|^fB6gy+DKK&x9H|fAF zudwJDM*sTc=W}pFxa>y1-l#~!QVA0b+5chb8`$gMnyyc5Cyg81wr$(C8?#9oG)@}Z zP8v5(8{4*R>zwc0&-?v_xn|FvSu<-b7`!;9R^r6>0DVte-?fmO9NVh9tb$g8g2W)w zI(~=ks!XwnRD{wR1}tiP(1}&2Be5-!qr%McayQerYKm)3bPL=o7X;yzmHDjZg>@g> z`@JBte14hEz)lBH&tecDmw#>~qlj;fazaB#&Ii+BgY3sGBj4 zQuoK3!un7!6ug?vK3+s`MVK$juip6P^ho(PD%r@lFc4B_$tzdS7<2#aV+X(L$EX3Q z`SG+&8HQi+y zjVm3LPoSJ9=-XuM4<~vBkOgOFa1Qq=fKxpU$YWrIq#1|T zPM_07A|q>@#^H7FmCiTy*&|IG;cO%+zwEW~K1e?LeqM{_JlospG@cl*jY+;i91JX5 zY=9;Gwn$>OAQ}C{8NS%~*r6jjy3UGgKVBafB)b9g?a>PT{WVNdVYpUV$!0ps)DnqWdiCDE%%y(=qc0dVH|-FfKo)Lf-RHPLpII&Ha2R z*huN673aN+Vlg*_cWMN-;7>PERXv=<+u)DrWu1-l2|k1Y2Fp$mdRs4ub<_IFIfFkZ_gzs;Ev7`y#~FYd{ZJor}y>NEounDDd6{?=Pm!!OJ7D)a29LkOzZ=2Z-f0Sb0O+21Twzo zsacbrGbRTL)3hpRu2*D5!A^zj@@#Q^lEPnq(r&Q9A*_lk+|Re=g`}g5bfKFk{Jf6_? ze*Ar%*Hunxvf48x)1=7376jE`l7V0>>-Fk9;BhHs|v9X2;H7Qi(OhUl}8wNgEyuyE$w)m`Nxbg2U&|bp zS~x{LSMb-fbkb=H3~D^n-Ga+vKSCifFRoZ1FD;F7swA#}!DBuQTX=AN4Hm<55TamY zE{*J%S>9xZA(YDw zjFSvql!zmwVlVqJufy+Fs-J`ViY`5m2co}>>}Gm6Y!ongv;G~heW&%KZIBi>K1`(( zXG7>FRSe^A71vyK<_cx0E+sS{`}^DZEg4F2I|xN5w9?ajK5=w>f|IaS(rSo6HU_U$ zK66J;Ccu1sfmPwx3Zj*36u{s>T|1jk?|t#N{7FfSz~^Q6!E5t-=zVoce{(BuZcdt$ zC*ZjR)%j+mjo!ox3hBZx9bSsTv$@*#<9=$}#s<_rNa)obrK{o3wQzR*iD||kL8yn- zR@HYal%>()7q69gk|l=wbN#^Lx+nFk&|B2xbczp4+X4!+_U_%xd7b;pvC5Qkb1-6E z5aQ0*!a-AIfX@#CsauqS>-4Z`fo$MewXtmUWP{MCh!;Rn0jibomi5wAkpT==KwzR^ zy@Cc!K4AX43xb}6s`@}S1@A89W!REt5_6;Ppq6Yen1L)ifnIBJL;{J4y02EByak8K zNI&%;6*HGI=Pqq}KPs6z&M^pad^8ls1DO zh$k!G9xY4%yI$C*4;$s@9T?jw3;VNr-Rrf;%KV3@vYF zDf&MK%C2lG2y@Sg<-{BAB`3d00jZ|yRdByKWN&_8p=kW{ zsp5U(Ra<<3f=^FG$h*7IEg5{=VYH+}LG9Z)i?pu>5n&4-r`v6SP+3=wz7btW46@PT zRSk3|#x~Rv3!W3~S6*}zrB<5s!kF7^q3L813~s?BZT$ujXApEh8!>6vz3|E_&i+_# zHGlr}inK!hWS6?j1yw#CV|@4Fcacv&U=%=8{H@8=JLu=TCN#-l7Z0SK`1h~k=Ku&;|&&`kEGV z*5YA_17Cs)MS4^S*lxz$RM4SNF>KL1;h;{lA}#?Yq$&u9Vy{V`yR0|=51&N|A@z~W zx{nmuy~m9gkBP$ZArq%>yKvM0 z=Olzb+4=cpA>ub9X0zH9FrUBm{N5T=vmU1CQ9F7zL_#7roQcD~k|8M{*I>a5HS8#WQA6X4$kjA-{G_*D@dy+%#>TTTXnW5U0sImcnkKTP6V)X7knoEf5@ev1 zj1LNe5$z=&xY5@hjbb(N?SmgkxGL z9)RFX=))-?H{z@Z_ms)&f= zX5d8q=>&${F#KLl`lZ<%i>3c%|JK570(;OQ;SWp7ZRCV6TnL5o6ZK^-MRgki6JD3P zV&KghueG-8rXtFAg0sK@|8YMhaQ(mJ1_%9Wt%X4c!f~IlXP1x`gF*!6KUn#)K`sdP z_m}N^@*;+_XaFy?3x#mggb8>+7rEcSdW?!X{i7e9Mx*kU+i^^U&5N$ zU<6ymZVCtfBvT%K?C1F)BD=2sDzs-<_*dw9A-m3RYn0)KqhNU3^}@$8t~v(!Ttyhr zE#LsJ5zxdDa_nm7UX>y?(gM)QoWI@<9&9Ef70{N7Yv(dkE$i#CCv)n5S(U4ydM9F- zsAEPi#^N%kdBRW27W*dIO3zkjwgfyoLpV_Of0_ZN_l(e+>3>0}Fyc0LkY9(Uk5KS6 zh`~a@D>TgtQQ~;McyciDN68KT3*pK=!;TU8)>oELl=&i-(Z>Ca2!2&o9Q%oBr(3#} ztsBDLNc<}%Z6tZTh+mGd`~9#zwC9Sc2~NuQl`ci125!Cl*1Xuw2pJsJH}0&mvr;3J z?PJwRDaq=nqpl1J)+ZMDY-><2gAGUp-@w4&IzCS(8!!jH_5BrqNJ7(;b9F_<*Lpw0@&fi{WSP}?yk!j2n+t8kDa@Scmcykc z+%srs&!(`l?DfB0mjAgno$%0}GF*y4fJ?&S_krJ|w;?n93Fk6m3m^#5kB!;?fym2amt8>;-2a_7(B+c%`fJ>A7z#?rw7C z}BsN$wba81yV-L{VfmqNl4m2aY6k0sqOdFAQAI?a~Y(|4) z%**)!*G>;3XDcFZP8NmG8*LIOVbx1OALJ4Z=(ifX&^Ns(O`$9c**C*nk90B~Pu>&H zl=*$or;)GZyB&GX0vZ^;hjrti(jJ)y4EbEYZ*{&A{nuD~vAc8hJ-)0RV+Bs$moeZe zMb3y(cKVZ_L(>MU=cQu=X5)QHPg@hkhAr043HicLi@Ffz&}$DtRoo|qS@tj3GFlM>GW;x zCEty|rN%+E*95Kd`zq>KFe>vAixJ4REQWSYYZyUb(eky4A-pTp2O|XG&&ibQLIb6v zJAPNVzz*aAemrZriWy73O&6nm?#_amcHCSKo9$u2%Fgxa|sCPAaP zmOQWnjKBQXLw9^Wt^arZ;zi%8>^xiPnw)&{{^VI+q0m$bc4Sb66#^QIWS`w`x zylq{3254JfxE4Z%IU?xhz95w&LP1n{>BK42Hkk132_VY+lbfiytMiyD10Ngxs(CX9 zhFtT+n9bCOBPvg-o8;>{&$`2o&n^1i{3K*9JqLGp+KX;btA2*?b!C(LywtMMbO}w# zFh;D~YSu%IeDT`#G?^Q7?aQ-ge&nG0+K`QQ^oeeVxYZ^XC6sdq$xiC$R?^G(T;-;w zBFd-FQr=-O%m2+Ba>NCsLPDdG*Tv`el^;+R2(bNaXTpN#fI_|tWM@<=!-gww&a%ct=Ku*+T6cqo|%Eog+du0y@GrE z0-+eV+qM}ND>eTQ?@#=}=vOl;-U4p=x%`dZ7XB})tFnJMze*p~WkrQd{6GlR7p0NQ zJ;iA|G49gnTMW_jQ|%Gs{?W{j*(66H&Ed(6-jILmab5yGBV_K__3b1oZ>Wh$Wg=a@ z+)D-vvE>z%@j%X#(j8gd4Zc7=k!ycl(@Fob9tWTPBggZmaWM}dZaF4=RO`hBukOQ` zt*TMOgzM5+jKlIL5^T6>QV}&jydszt)5*CA(IbG^$V#nx#&vVJ0M{b#TSI$hz>+!f z^G8LbIX`tZVgF!YM==WRXAD2KdC+r(5duYa+ZoJO$Uoody>5pgh-t4W7&Vlz@X z0EHrCrGTy*&QT2Gh9^N||p`{n1Ng*jh5P|EL*fE;V|8UhN7? zMGth-&rKO{ib<2X%F>Mc_g3~WKNMWwaVt-dZn3+i6~;(q$xhiNeLtO;JN8>@m|rci zKH-F4shkH+8KJLGBtQPsza*M|D>PG;V>Ol7G_$TCE*aMZ-ON9;4JJSxz#U>QK~jav zo%0$AJadw~UoM|~RohaU@BMpBF+T^&`4kBx5()ZnD*jyvMfwb3o1qMuAq*qSxSxCN zN7H@C)GPnLYS6HTWa^NzdoVThY|P^VKazTYNhVf(plxbB7VCWMN?h~QFa56chs>E+ z4b8M@#pjYxmpypMd)LNkmreM6Tf{f{E5Gvwo|e=#krhLSWduU3n6&kie@bV+5m7;11dq08vE+6SE)kVhb95+rmJZ~Y z1iMnd>+O}<#tDEgiCjQ=U&I_$%D4`rCTiE>{6~`TD#n)TN1o0}bE6Foe7Y4DGk7P& zh@gjG>3d%KC?3~?v2qQ9otv&opQ|Aqo05u%yc#NqZv(^976atx)=^ftzHTl%hB&rS z!>b;~)FQ1$X{dgE_ddc41c{iP05W>;N3;Ma+poFXa?y`3i%xK&{1BMY1Iki$kSoX{ zFYI;uqHY{Aeql{Y{2^TXl7GK|b*7L*l`6&$j#I2VDr+G-T8J99GcAdVzr$skv;t8*Nk@?7|eM8wqTyPBhkPz~HUk6HU8!IKLwxTTnuB(q(Gnb8EWO=uK!L1wt zE(ntS^7$E>W5m$Aj%F@%T^^cCIL^yd#%a)+St;hoBGI`3m>sDM{?3jsN|UwhJH+h* zrXKZk=&e|{dKQ<12MuFt^>jQ~U3HS}^Bzm4=fq~3(RIY`D#E3BkU2XuVqUi&ZVc*I zrC4}PjRR0DOMG3)0%}ty<)BN0YBa{}%eFlY#P!eMyedJ2!RHK}jn9;rFxlik zx+gU!)h%9LO88UE+At++rlj+OX#bop@KI3$xu(ZHaoeInG@zSS;5rC)SDhkWo#+$7H{<@c*}) z_T-?V-@1w5Q3ccfvA|951sJ2ZfZ+KD3V^EThQ>aXnQ^L!8Az7TAU3tqe_&%itdKAdm_MA*4KrR<`~aUT)=QC=!q6dSks*NoPu z2gl+KCR?pMv(th_W4DF*X8E0c`|JRcmc3HAeuIzcHQYc6@oq%-lFbK$$|Hq}=4dEu zJ*y}biPfRH%smt_x{>}st~W~YGLSMRA-aphG3icOTU0~^_L>3oxbl-JT6GQ^3gb8 zpv?oP?@0E);cX>41C|vm+3lw|3>h@-dAY^1SU3JV?5{PIiK`1-sZ-P{d`Nem#AxEb zEOkb^`-=@!S2ON71lvSaip01DNF{yn`*594N|D@T_avF$w*63-x07$~@Sv=qfLD^H za=qYFP(jm8{~+`mSqK(JpLMe}spWLD%NPkhtZNUPr0P6*JH7}lmjcbvraB^GeyO@0 z$wq9!^m9u6Gf>*MFh>*a!0kkytJI`map!SMb%Mp+^IF)%+!^k5xoT12XT)Tt>roj< zIl^UZP*+>cRk9*FkW%gf?1fGEw5Z-r6sgKbiQ|qk*oTG)8zv_E!RWMEOl%ik2bI`D zclC26sNMUEX$I`qx4xuBlDg4ZZxsPAwGP1z3;Q~*0OkXvzb(HF$0omvvb_r~(C;VBgAiT8t=IQfwY$|bE5x^KmQ5)BQ;*Y(-&Dz=^DC0B zr*Z|t)lSkv`f=u$ZTyvRc{9vP51gSxHH_Ao~7-)^~IxBU;1s*O1+o7~_H z6th|u^F|hugd&1uNNpPX?3O`D%)9_~M`CucIdA;8PT=zQLMk%mR)s{VXQKJYXK~YP z=Gs5sgySD>2g_M}Cka6fsaj_%0x)ZN01v^Br6Azp9`=6Yd#`qd?qXlhZ`Q|@oR`#< zO@msC@(^jeO_KNFod0}tB6}aLe(_p#`5T3|fSEKy?U|T3CZI{-=zi zgJ>*p_XaM`Xx%vi?qtpfqYibS_5ezaL&&+`__h0I5DHa)lA6vGZ^DeZUo|^u;x_!> zhM{>5kLx0T1RbW(z=sW_!qIZ6X$nlVGHS6@@+pv-SkX4akN8h;VGO9*_Na|}PF~#pGiC}8&NJ>T}hCTUUg|5VQjE{MT zMjzP(uC6s&YMKkE3Wz6Pn>qfS26A}Ev$}kT{q`TE2RI1HRLXGGqbW@d5HkCrv)}=nk&5rS6ul&+V zTufwWI$Oe^u#1N%hN^o_lz+*Bf|ZqpC}uk*lqBq}s6nYROxLSk^U|lAipl?q}owR(-i4f?r%YYT{vP1`s4J zXgdkhrHkF~I9eC-Abuq@V72!dMM3eM{9!$=ZK7JSep=#%wJzcfguKBb;WhS%NS?53 zM=mdnw`LPRNH^!0Vn}iGg;xzdQ>3i{M8ibmu@|{h>?KU@$>|sj8IJYqis$E@n;7{` z6@*pfNgn65#Pl4lZCWDI(kfnbH_CquHpfJHQAP#9so4if|CKK}a^Mbkx`Z~lW?xGff-0>?!b$hS;#d5XsK92lcT$)C~~fwJ+$T~dSqWe|#2P=E|=zyW>8e7__RbPc+YIeA)l z`A_7;r`19q#+4nMtTFZ78S4=tn^n=`nr$0VTPmQxAuUPdl=^98r!_pNUMPj`x4?_=sviS81saj=ZK;PZ*A5i?ek43>NVjrBtO3)n6KO+RB1J$Z5ap$>L6PbR^zkBWMm4M;?3xTd8vcBl8Ug!HVgk1j-8kR zGD5x7)q{26WPSPgg6fT=$2`9to0hAF`X;d~+U^+?><@yhx6|50_~($Xfm=02he(dg zRfxz+Prn1RPX+ls!^DBmX#vP?BJD=L9YC^1eILi0QbITZ?U&p<&mqEsHNV;552;K; zeG2|4Y36U2-C!}56z1&cAYhz+gi03Ph(mZ5G9Me=3trz}bb}l&Kf8|Ak2Q10LG|T% z>st=>fxgChAbp2xBLy9fFSfoaLKtYtIu>+b5p>tqO|I&tF4ZD0Uf!K|4Lo^`a zLv@!`cUwb{`lgu3ul?Ov59r;1K$Vt{6~!6fx_za7cEMc~bswMMa#8e8Ux1NNA=haw zfrRCa!gglL_U9X$Y{YwQB$2X--glvx7D)rc+05&w-PfS~#}J*=6DS#G_X9DIV6w7q z0qRN@^zm2a$L}9y)#_M-@9h@~(^&*8h!xfWwrLbT(>#I;zT$8=#=enV;=MKrUQ9@) zT7$EU%9(jua1Dzp_iIr6wwfc)JUp-=mGiAf$5{w^G*s_4_kMBQ?0@~j!*YU#?A(1f zp3vAVy)iHr8@&pX>;Aw>^ieJt@B5r~7C*gJPcM)}9!Nv|I5k(2So<}<<^Pf=b5J>) z*T`;;8B6JIFB!}~wR?SK3nWH_xO#GlVbjg{ZUZmE{DD6ZAF1oSq_dk@>rbTA(3L0& zmjV>hxhi@N&YbBg_Wyzj+%^}34f%4J14)LA2jjYDy9{Gn4!r?Neg8oUZ{BTw#aj&c z68hZjDnFHd>)qn5`B*qA5#Heyd#q1=$?OhGSfQUJG{Eb}U1YB(F6#AN4OUjNTdYvz z7pF^gESL#G4ez0-bC%U)2V`Up!bI$>!lAq0+l5BvCf1h&t`6dmi7-heTI6nX;$f{~Der-j`AB7o6X5yK^NObqAGfKGoj> zb*jss@-8WOn>Y82g%k<0H5#f72~PZEeBSR7UNOJdpRk&=>snt#>|j3ivmU;l8KI?F zn9w^>-SkwHc|)#Gbz9T9gfvPGToM(~83kO6gCb|8%aq7mb$9Xb2MP{_4=Ucd zT>aoA#!y-h@+-8%bp&K&WpyaQLrFt0q79uxe#}L-YmthfpA&3+aSdu#1M~t3J~&5B z7Du6|eg}V>jH^h!mvu*`yGVH;DWxDDB*c+cOFA8Yw6~=W345bDR4;Q2wTX}Z*ji5T zj_wD%%3DeP%pA4uT8>T_5Y&Z)7!1ot|Mql$4?`RFYs=Xu?XmgI0F7)!gSFrV9LfLRWrdH*CHOD(tp;P2WtF*W^aZjLZ(od3z6B+uvrU?8t9?6lG4!8ub$uw}VnPB# z35)5I;|#ND=vhF+>qgUX3}g}RcDV3pBMWAFOb+NuwT#Q_=6VrE3q|8o$gg8A%x zOol9}0Vxd#>b zD|E-I{*230FVE62`%2D}Aw8@H*cPr}Z*~?f52#pJ+CE=J^4ZE^P#r^jB6m5RO+&M79uyMo*14rIR`+-^LN?8_!h@fvD5JG-qarCxJ+r_sil z7yMgRUn(b|TH;LTmR@+L>+rllT)KdAsmN7y9pS5N_8y1C1QZ}iR7}%g8+yTn z?tZ}$n|q|g^t!wrl+RMrL~~V`+EiFs$&XYe2;1o((B@>!Zgm@L>t2N0&g?z`dXr3viiotX71}3avF| zD#d9W4Q3}R(kd3+wX|PAb_~1?+|J8QPjLDfe*Q+M6B;jz9m5mdV-i*(S0uM42$#uU z((1E29+vXnlm-aeJhw+M4zZ*fOuj7 zuWWRfHQJEOOnkC5G&d)}750A-7Jp}(c7iw_9<+gN2TEz27SE~T9d|1cbX5Qe(U@6ym)3^}(ervjGu;CM`Apy-{Cb>~C^*)2)kIZ#`%SpKW`^1)bV8G;E`I;}JGnB)>? zWLbj`@hT7T(ie3=Ck6KlXglC`p`XQ2kV=5ZJ3sYA@9sBAU)E@(WpZJ>-Y=5LWZC>B z-6$SBJj_r=nK-!iUW(U!T?OJ&N^4ni;5!}+>DkeyO_7uEy#zIHF5G6exVxVM)>|*S zUClUdEd!ohqJ2d{LZMQrn7QId>D8k*W_R!WJi&Of!1ht3am(V!9i}4R&ZaWM>v3e- zLI1ra`biv~-CNX=4V%bV3_;;2EvBHr#X>9!k=Uue2ev#n`a#DIp332>IF+Kxc-e6- zQe~f7cI;R4BajSA(1GXXzu?Lh#9b+I<_Z$(u;;2Jow8{`na3Hyr^QibbW3u3ih6a! zS4F3GTh5pJ?e5NBg@>{U#;=NXFyx3GOB{jmaeA}$EAUux2t6)j>VW6~o12;p?3-cv zvxt9JxTXF>;LnTXQv5Rp0p!v^3nhxA3{|mz=@KkZ4A6$JB`e6q6qNvg|1ZcfCkWh7 zFR{M-UQ7CR?PUsS+}WLFgMN@gcKy37G!@BaWYBZc23ajVvn$D5 zxNz@#&edHg;Zs8x#p|b+fhar_wSc3b!uOh_>+_Ys| zc28nulvAJ!Ym`u8rV8630Cb#H(B1P=L)U)5H(y4bX1MCXNL;UGt(-5=Wlbd85>>*i z?4p{HO@acJ6dq)YQKNSYfSwojQY@EZBTkYO(j2cuY6#5^zG=s7^;(C7+$Jg?Iwh|3 z&brSPP)X70JrcyAlZn@vc}OBIf~jiM+##+_(0n`M!{FLx#3GYKW}@^ zlZp8O8v1nDa$tkSCF-&}QXZ>Pcam(d5Z!ahw$Fqe&Q}xYF)Orpz#^d{J;kNjRFV(t zxm=7xc`bhqUUkc6#EjtvG|vOF#F|au!_q!H#QIWUP#~biYH+`;Lsp@u+yZfx;>w{& z&n%t)FzuIL@Vbn2u9e?-KChC9q$N$zqw`+l4g{D3lk2#1oqp>}S;sXxq z#E)^vw9M#fRk@{x!eu1X{qjC~4|uTWS5nlop{;`Vb)MAIyUS~b^m|%{|IRIkt79v$n-D+LR{)-*tLaE`< zTT!ehs&VHMBb%3FZHON9s5O7oA>Yv)U^@E=u(!4P@!>+dTbZF?l%m89F?nZm9!l^VoJIl=@22Ni#^B1}$lIEACn35=cn^D{7HLU}-XiQ>8}u!b z66*1MNH%f%{Y~xl4cNZ56XKb8SG~FXciA8@pxQspv%&6GrO^$bh-lY24S8QcR7EiUu2|Xp)bEhQ8*QNL}jA#rM zQYFM06uzc}otD^Bq9%h#4p9r6h+EKDjKPe6F(Jxx)%b>pRNtp}< z;8>Vf*cMBugatE@DUz<_3h6f^fx0gnkC7U>c!NG(%B>LK8zqSZeQrjNWcHEC5ChIM z@{e^jOnBNRz5!L2rhl?=tNbHXrKkJt6RvpK_XU(EL;8o5Aq&t2 z3+P7S?j}#Bh<5%6_^D!tJtSqKzx5pwuDB!uQQZKSQk$&)(DdM+FEG^=C6p_ERlRed ztNnsk5~e=87f$%edg{|8=wh=c@ExWRnvo8&V7Tasa6{I%7$7UGg0fZ-;&tA~O}`@n znnc+*g2uxKw_)~D?+}A9;5Mu-ll0nOt&INEVkxja^5M7C1MBgR6VM+fx5 zx$XR}^MKv_w{L{0iZ`EUJGPKDr;k$vRjse<38P*##67IroQbo4LUYWPCJ-kdwjDJT6-kv?0DTejpRiVK(2h3`WfO3?|Cl*D;inCHB0hzZGF?_g4Szt;-Ht zd0f(ov&-MiIeqW2&&(Vyt`9rBxRCd6d}BrNwi6gY&s#mrI@Y_Df;!6+8f0&f8F2&> zqO53>*r9T-NfLxlrJ)=N*Y8s~8(`PFZbmxGcQ0M;5^j&08)#NgVxyBCEsdnow||lo zKG#1;Ku;F#4}~%{zm8T9b&P1!O?=JlyhDnR-Mo(%ZTQKY>Kz10k}tboi|&8bBP}qc zowvJJoEz=W1wS+dFV}yV_}**61!Xq>i7w`RtlH}aenxDE`T=_kac8mKSMW9mn0PaS zwkh#R6$ix7%MG3#pY=HIRoyYp% z?yf7(`jpP=9)l>21a9_%&-a+#mzZ16P6r7Gc%RjA=C35fu#f~W@S(goGq+zl8|~(s z(fe20sYdDzxtT`Nf z9YIphUIu-^k2`9wAVc>oIXE!lS0xRW@-;%nK6<*9fgH-4AV6h`;#bF zs{0H$lt6H1cFO^6Y{GG23ngW~v@YZ33khuz+yJlR)pK1jnhmpcZMKOeVmnm?a73|V zacZsU_&QY1uVFHIgK95A{~Z;_phr1H&8w{KmmLe~#EaY-;S=*_P+kb`bG{}mU(h4C zPi~R=ju6ZdpB?z4zr0~TetWHrQ|=P3J9{EJFHk4I%t6IVRJ-gI2KAfRw|xreE(=J1 z@ZyB}gy}MJ^nhN8UFrP93V9g+BnFh{@u1WG3S;;ngo66WiTG8dg1hkXW&e6W2|Q3p z%`gMoH19;FSZG3q0Ipgbx>wjmKf~bA#yppec!V(>pl0!0r&f6rY|b%LC(P4|;*UsH27Z^mS}+0YPz4s@vZbmN*Cz zsqs-8nR|lxlu-B+w|{C=+Hhg$4kXg2p3lxtkL>#Q&Y8fyj`rSTwjUf$v%m{|!Ma|S zZ5^dKG$=@IKFZWS*!}axjiRLGd5kOPb%f+r7Q|K=pyfdng^Z=*IhZmoc^M@<*V^%`Fc?!-s7S ztj_gH!#=Yfx$=v`{!F37GiRg@yc$e7Bs#cMAc=LxUC0REVUSVpPd~>UWKDbC1LWrx z|GmzK%#mQXIXgyX$E$C z0hFhGLa^I=`j7$W^~dLpkwOwKxie=qF$eigJjHBX@2&3a8B6S18UpXrUT4P8w`GVY znu-PDg?=pNk2ZJRyS-oxnnw5?yyDrDd2wWNWf<_JOByBj=ep5mG+>HNvNC&0edj46Pxp)7lY?TBXLYTzLc(1?@B; ze`2L3e++*hYQY&5z|1?%heC|%8Q0xhcbSg+81%XE#4h;wQe-BnrxdX?Xxr67Ps}CI z{b0iZakivVe;K8-vW-`N>w6W!t412rw=LkQh4P7qS}B4(D$*(i96qaiqKtp^S{F$M zrHb`;yCh)^AQ1i!z%k%Je?nr5LJK^R*uV(^$2tS|lDjd7n_DDkH(9B%iN<5JGXg;~ zBvy{xJUUeR9~8+Pj2`BO7O8IGUcU`Pb3fjfkK>Mz;f14dtEuaKVC{Q?Eaftv5+KwV zew5_;bL^>|TU0BOVE%=!_#e(bRHGinM4AOIanmR!%IyS;DZ5I>fRRn{=!A6==q{N_ zukHu}6BFa-aMg$pr4o}Y{;36h?!&kz{b`hbfduN3qgx)Me?JphnlzBN-d_euxj^`}eb(>B*B>eClCI=>^J^XFRBDDT-^Smfsw$V_hWk8h%H7vZ1S(Y0*p_oJ)5yDb-&ir-EID>w zuaOiYkfsd<6)M@%j;`});uAou7TVQ@k3ltB$P!+$O!d_jeH-qb8SFFr`FlwcW9bsP zC|az`Cw2>XUK{5J>nQaN7dyz9J<;avoBu4uwtRqJ+D(r&lVll~cO@5+%|zWhWn*oB zze3sms!R@@xF~(}%L=IEeBk7BH>|B&(VXc{ zc@d&kw-JnTUs$vVjr!%?(>y9l`XuyBU0H(kA#C~?z(8R2x39r_y7;aZjzmG~9J-|j zuUgCX*`m|Cq^Fa$(d+}?Na8o;wwPFOFO)QEaeH!oy4|w&Y0$LrgcC>`SwlmkEq`P$ zST3FsDjrPobt9uL%3b%JDa&Yr_ola^kV&?Z zDk~Ims?&Gk02~epL)Ktho20Sb*lKLsb{aNrY}+=QG;SJW#ctBrwr#F|<^A@xkDs&W z8gq_uYfQ^|MO=@|w;xGXUzJ1aHqUK;ej^|G`*4G+QqGvHeQY=jby3bpeX??Z@+8vX zzWXRG2)d(StE;Pe>^b2`Awox;>$jFp84Mh;S>#2c%$rp{_p>pprmjT^zu$jz7swb4 zov_^S*RzUY=}{p3gMzm1K3Nm38yR`VOYB!TgH~liHzLFA%W|Rc?mBF%vgx2R97Gj6 zWteGTIX)bF;Zu%AAEsxH_nQGWfD5qzPv0GZ6@9_TAE@uK6)O7Ck;K60LGXDh9+4IA ztSO-D{@9P(%ynz3DDF{eKXFOQuV%h)*M3G<={yfbi97m@z6)f*?R#cfK@rrWjr z_cb6-ONq4l)28pZySz?rt|Z1pv{^03-+tDr%cYE&d04)2)@QmO_8RpcU>orjJs98+R%o^tP~f}Zef?aj2%-P4dvsGn zpT|CueJ*G4&+Hd(K!R-Y?>Fz*>#+9h<59~L?rpaDGM9$CKXEd>6Po9~Qx4N)5{snk zaZk=FZ;sIK6%2uo71IMT5_`oJ?NKqqWc5&s&wLhGoOw7P`dP$HoIk*JE`jxX*P{b` zpHDfpTGU+#ez{y!RW*guS1Ey#>uHxs=sl5}TWeddu(8?x(eK3o3$DN^(%tIMb`*=9 zjf@)tsPF60V-Ngsx#I9!`kOj!mW!*F?CKAJOBpJepSgz1lf#7DVz&h(*8NFd*{bBFtMH!t{o+6B70 z_Be58k{F0jCn;118#u3abSpSO&{3ZGPC}@x4~D6@=$zG--^TXE=FfJ;^auS`y@=GF ztDPYs#=jxo*Z~~ak?puJEJFVTz@N6l2tqzC&M#Z;eh2O$86;hg*9u1zJWRJ5K3h-- zsyF&ut$%|bFt$`kVTS#j$xmF)&n5D6!&$M7i6{x6VsIvRll#+A3GqfiuRr^&sHDY( z&_fbr3^?qyTXj94v1B?ZPWOD?Ot+UO#+i5ax+g*C`I6WJ|(ggLVU0U!?SA{F zW>`$5#gdiqypKP`|AmStk~>383w}!dkvffFeYGZkbNP+bUjoOdWLrRJ)s~G~I9Gpc z)(aF*B>1I;(1K0C8b^{Ofa5?Ka`9SaE6<$5jHU=JClL8F^sLH_n{PSM^b71DnOc3# ztdrrm*cw6PcTA=Ey9dEXFEUM7@T8>Ve!A$C&VZ4|4p}h3C^{DHX4~x!JTdrx=bQqt zd!{nKysx+2QanM2>JI{!FoS4UWAw_A`CqzR6j2?l}ve^u~7{sY~1#H-X`=~ zpgR4-ihkM&j~fwC8VjT*Jd%7hZpIX!u{MMv{cK~TWxM=4JGPtx?ejN}YdHHk+;d_^ zB35-G4RMH4YuHf=#0tI;@y3Pfy#v&SmQ2+o!F*!~8I z#f`{lzARjwoa>hRE|B#q z7e?$`_eR+3d3L@`bLv(*SS*y?;nI<0sDubm0U!;vZ@isf^#*_sGc;=m7h=E)L}Lb8@ptlEeErhKMcPqLj{rmA{EDLjz(Z#XYMN6KqJ+L4}beo_BQ}lqK}1 zO)sCa8`hEHdCg&7IAOX`tUE@5&4T~x7xEe?Sl#*J7Z8lhlbE)1#VT;%38<~90ko&Wb0TZP;bRLk?w94o3 z)?vP*Y>37T-98WFwaMBQxz9q?-m$ouic=Qhr;N4p#@&cup(lRC880cx%xzqUraJY; z0KMco?`Hqf{AZDmkIy@sfg+9XzcOQh@4A)iqCCiPiTmg$;wWHU)x-)1Iz|P6kawy+ zqD86t7>PuD%H(8_hh?9{8Wj^ig86aKkOBQsCQCpNqb50|@c#b3 zAY*^fBopGI!pawlNn`UVex^mv*bycIW&ypnIbr-1_QIKXq0j^K{d$zWFtY-=J z4>}7IDG;1jK_T^BaumB;1QGsGTY;yhnUMPPl{t2pdPyqTM&FA)uHbDycsxlS`gYhT zV^iwhf1Ef{j8WZpJ>B}Ps+Gs4HnNTXarNh16nb}Ma3bPaz1ti}Oo=F|!GnhQNYq6Lzuv+A88G;6}szRd(j@^8|QY{=Q;fOu}NR#i_7X zbf_}m1&KHI#F?Ic4a+)+ewvgZ&J6fyAXo`jg! z)OmaA_a@+=2GiB6)EnYOE=N&^v8*}~?9*lVp}<-Ydr{lM}ov3zRf z^8jmzWN?db!LGgAAcPY-l+CEZ_$NJG*zd>>dV#fxIy7kQ?F-bvjY1M7ff}GGck`Q` zPF2K1*FY35K$ipRl9voS=3}KUAJoU?7W}w4B>1KO^>LS=iIfvl!D#G>g4f?1?&_t+ zayoUZ54hqxPa#Sbi>jye(4Ku~t2E{{SoqHKC&^=@RTdSzx#AAwF`3|6Pwp209QB4Z zZxqcp$={gF_JB2cu9nxgBum-qH*~GiOhZOTg3*iV@0UhH&AsH{#Hn&(splD9F>IKN zf%xvWn#KBg(%8d^i*o7m%;RY()KtW z@4?fEZ#*$=J{;@VOtYAumT(FF)Dg6uu`b*4Q(@+&Y3JsxYwa&j`_To4N-EIKK@Bk? zPA9EcTkW^p0ZGXa(!rL^Q<@_~tcoLpA&cl0B(FYc!&(5M^cRFO+?2I(Bk0a;Iw zUR4G}fGq?A@!7xs8E!ttIR5*y74CJcfQ%S}da!FL8`+m}SZQMQQmpOKoLdrNf`9H0 z0am@E5psTQ4fLm9{{4EIb-4e6zwb|go-=%&B6o;HE;?r<_G$>0x&deN2O}5$4=ky>{@JtA80^~xJsJM_JFwpG*TM+_`dwO4=XmA}n`YTS}?d-;-HWOX$g3|!5 zZZJ@~Wpw(*cKi%iUzIOZm<}E4eqvg)9KYeT0S?B`GM096;h5obBkwn7T8k=To>J!v z3Mu8#UR#GD#m;==_TSRD$S$=FZonbPgj|?yENpI z^v0Hv$V(Q3EmyfXQ!ibAv{f$rqf_GmR!-4q(U7qKa1HjOEz=zZXUmAO9L=?a1m8`U>-MJqP^Lxs7T7l%B(HvJ|*p3CBLXONoUtbH>AXarn*lV?kV7=%7)MO|WHSN)3? ztOw0vSTZ=kCACbvYiX3+Y%$nK2K%VS#C9>Yy#&dYh)KT1-R70K zxf?4P9MC7-j|)@W*9a|i!kP&3((s^`|V@(V=IQKs&mHK!4-?N`c!3^u5e zwtuSgM|saT_XUPMf+KTqYCmMqxCe_96&p?ak2VgiaN(^8FCDV{U+Re$;Y#TmJ1->4 zsP`#td-kda{TZ&4YV~*?7LEr}!({=ow&?b`+zJ@7rvdMhZ?$OHozt zVu0)Q(OhSH(R@L;^-AIGU3(WTTt5HoPq`IE(Py-h{m}R>c5B_Jey5t&e{Y<+74jV_ zuj9YsbkS*x030Xw=Pj>MwKBsO6ixLfLrTC44bdvXEGOp`u&?ku32Sg90$ho?Xwk6$ zRiZeG9d!4a`vzmbx&Hg=(G|(R0c=tWyhQvhOP-tul1)}hen}V)2mKI~);Y|myjZxs z@JDUfF%qU0bxMW|80nT{<&eN(kky#)!~NrM9iCLU;mV}UYJqqa1DBS7mI9%{e@Z; zof$4C^kWcCYPD`6Dw9^%;aQeFYSyUshsh}mlL7IKjwZo9sFB&vg&($VT;+@uN;y#( z7w#H9p1LQCWIzfKp>9X_Cd16!uSKdPa&^~VE>24)Zpy5M44t*tyz*{vl~f<9t+Gl^ z4M9Bs_-(h+1O#&g7@`dL9RJPIoFAr)?I3W}fSP%OoR2$PK2Lls=kom5`H4|Qi5yaC zBJejN$(i3@ehzq=7Lj6VE@>|0-Re!Y+BtL51o@E9GGlkc>q{#0m9@)4?+bBMZ#8bJ}A|N(&P|@&UiTYCwC+gu#jh&krl2_ngRuhjHZ|XCO7z>?z`g_3Z4aV z?0P}3vjZ!?MFuRYIJ^pH&10s&b|<--zLWPG&@aKA)5ke6^ww?ldd!hbd2H%EWcIl@ z`+w8xZqY0CBoHOG=j6+%eL}0_^4y^}3zs7jsW?G641he_^L=ab|0)S{oOX&|SaPTl zOpsFCNRu#VIe?2b(zRO?)5Qu=WXwAkga>yVb;S8ue*!wz87!E7n*v+0|1p67 z96hA)hr`u{{qP>C&T8_%v+M!xC+mJMXQJ|hHA}RfAUSXMnw{?u=cxcQkyxv{Ao8bp zWb&5y@60oweY6b>r{oCwf7_CNUK+|n|4mN!Wt()~WnxF_+eD{X(vj#FvL{2(Nd9W; zKjQ>NGJn;%BzFgS>3(s(Kgm_Z(-=5AmkeUJc6g+<4(ZP+5UfYOe)KErk0Us_Uzi0f z)tWnn+b))S3E)+W;b^P4RTGORH6!(pH#5{3Tp)1CCsb8roYUQh)JwAtMlvSpF<)M4 zJ3T!*7)d2eDsRZV8uPpJ zMJ^ahz7n3xzj}YECE?;{bF+WEX>ypLUBav4Zj~bu?}eYVMEipfmvcO-3wRbBG~|gq z+0W&G>dv&xTT1c=X9LjxS9HYS2~dguD&)iTmu{Dqn+?;Ey_}4LUamSmrra=UxQWRB zD{5C-zeHqP#YQ>|h4vo_Xb@v%lxUBG>sC)eJ#d_$w!I9rgM%7@X?Ra|OWE;IQwH-u zXx)&v0ALeQ8vj;Kp-rZZU7E0Am~GC=?(ymr*Z66^az}&()+VIw;6mu`j~xu{9B*;` zx0sx<(<}uP>@oJnqvyrb*{s0?(z}x^V&1wt*z0bU@L2Q0Xg#HgI6{r5Y3@%8M%1jY zGpo$g>Zuh%(QV}uB>jp)lSxK6&+v{;EYJ<>Af^Vv=5ObGb!Njc?dwn^rb`(Maruw$ zrs@i8>vyTQNb!SC5t3vcJAWT$(<@Ea8OzXV(9IuoR`#GA{0h;Fu^M1mXMT;QuBPcmvzn~|rO!HiBVx6JZ?|q*^<0W-n>UTi?-{gKJ;hZ9s zL#n2KR{DRg#S{-lx(MoncKYi7E*o=93?%63#bh}x&p)k8#SK4Xv2t;kv*BS+NK}6> zFRrlrMa`jr0}W*ubI^tBqFe^I5(>H}VY?7muAQFuNg#=?D-p=(xSBik@Iik>o$gGDRd{9m-d>0YkYfs_%T`$iy&s~ZDf7FSP-34; zI<3bF?dIXhCi?fcZ&SDs&zdzi^LDM-^?n9f`JQ`jOPvU#rz`x)O$-$1T%`7`EWa|d zb+^7cV|_^yUHc9Wvugiz8MwnQm{Wx_4bN7s|DGsf23UXI4i0B=|FV7VdUanRT9h^b z{nFwyFgmlnOt2RuhY^0-Q}$`Z-v$}5CeTdR)qNo~+^$@pPDtU@U^8Y`g^{(fW0*Lq zH#36qA{#dpxGckMpxa(zBs{>mFjM7=yyx<+!L8dtCD@k_7Ay1cAFsgN3fgI#76cwgc|EY&Wpi+Wm>1dhzw0a4PJb zWYJ%Gy9K@nzh#>vdGU)I?qFSR*+vOB)tMi9HhGJ`3!d18CWBEwSJ@Y{6y9LzrU3Je%_3A@G1TPX9NUx(82@= z!t#TA6WL$|Kb#v6by-wpBOb_iMb@&W@+X~*73=kD_|p~4lIq_!rzihDRcbZ7gL)*P<+ICxLtdWSp=N5z4@pmtU4yCsjnPk(d?{mn)1&^p4{uayYiQfZmeU zW#9B)BS!0@3i%X!C#B8Q5b#8MIgngb|on0!t^l*LkXc1 zhDeGespjy=efZ>|<;9f8CJ8UvF1kHLx@WPW5Y_)WQX1G=V@>PA<_w85k_NGL)mMnV)A?FJx0=8@`BbcYMxl6fw)uTy;>ib2>963Xw) zRc{ChQnHpPOjFMPEb

    >!9PMjC}bfe_SSV5_F$ex0P`Qb;5}_rN(52F%DG!wZ{9m zF6;noXHsziWBU!JH*7!O=OSN@(W7Hy1P?srHO4sHB>7oJlJJq-tdoQ+c!9&tO6P~W zv;gH%TM$^G1Vw9&Enagryb~nAhrX00`j1Ku>YM*FVCVN8<4*AM_-U&1Ls|w110CrU;*I=ymis z%v11De>g*NM9JgX+-0CIXs$V2M7zT|!#KqGE+ypJMVJ?Ipuki90SHmA8U1Sv@i{p@ zM896mmj>i~Xy(N$}7Ync-MC1vA7r3<3ialDl;+J9n?L`2j` zGU!PHVzGAZdmHCtFj(L5(b;rrN4(#UX0E$2hIaYjq%tJ<^%P1p3lD;%?K~uU(|da; z>h4OKoKal?hUw>#n~O&WCD9~G9@x`$a<)V6?)c8?ke^4QIyZz^sBzAC6-vuQQ-2VA z(({Iwa^SlXt#Dp`aiht6)tz9wfAv3$-ry)#^*(k~{NA-#=v1;0BZhA(s7JDbqzPJf z5Mjc}8rMdA)zPXE77X>idhYUFiQcuV_3H$y-oX0$`ilg$5H(I1WAMNOw!sT_ysTZM zq541e?fe3O*#T3t|DtpkT^{vdXU3(vb>dO_I^(?bRCAmgsYu~@F?R1+lYUI-fXWu+ay`R9F3?v)yr}%eb_#UxHljF_iYEYu_MMUrGj?FRlpbJy$uTt!P|mNuEIs zDFS&1qs+6zD|XlIl$=$%t#lC_y&0)+ytxMFh~}_?TPisEGG*0Y4)`0g(Diav?9L;{DYB(-L1}>6>FGc82O9pZX>Z3kt(RtV0!Nr9Gd&Uff7L*^JJc zqjkf;0P6t29jjl%HmMCvj|2&BMms;>!2ZL#k`ik2<4CRb{MG14yQGda5z5-2eA#qe z+a;=-KZ*v1(x`^(%eTniV=MTLHA~}t-O7_k4q+Uwrd_!HZuo6+)w%55s7Ff|>~sw` zC9~4fLf92+#&tU$MV+Il11D$8=mxNpj9q^FCw&{dty@**3T?$G2rwQuHPu7rliNMn z5G0THz3^alv=M+8ZJ#lAz%>GR;qCz5cO% z_ij9)Uw?uF$>8(ao{0p>M6%5lSnIuZ@*#9DdRUbOJIOA-f>A5OZJ?&x6Xi1Pxi z$u<4GXY3J-=vY7(V1T$>pht{~Ytw1UnKSU7@hfB&7g z^sn{>M3^b4Sit}{T4FO{UmuB%DW+w&qIa@@ZPiMpRxIPwVDcbJPGxFn!_aq0>;SRT z(exaui!Jb-7zuQa!hRRaafTA+!z$p>r|$n#$O%pxGrxVtfdh+Ziv{4nN4Y=5+-Xxu zntCKSFLq4`cR+AQUnND(^v3GjMllr>f0==UfZ|2Uni;W`wx1Wl*maK8d?YI->F&1~ zG3wy|l<-LE#U2jq(yY5v+J*lCWn&Wq5!qoIySm8%q3}>b%1Ju(7og+IHmSm1-!C+? zS(s36C4WfLunWq?ad1J%MNIXM>sx7f^Od8VBcjGCNQ>zkR=JzyWB!V3yh^UrX(kp1(acg|8V9V3d+u|BWdG37K~A*m z{7Cu4D6(QZ`UQg{AlHRERfRCHZU})@;M5Op)j>AU3Ype)rTLPmN#y^@DoqTT%RwjZc`ZFe9{^L`*omsb)G+vk-^N>TmdY=Xp` z&Kix%mMDXNONoVZ$UaVU_eJHmu+@NeLFC;0x5rYZh*b73{a&Cm9J};-i_#LsA@TjX zA>3~X`2;nFe4lcoDJjC2R621xC%Yhf_I2rL9wIr(Z*`upzhg#a+$`oAz3r3nI3xcJ z`>am7+>OOvNM!qVmS4DKkwD7L{i)v$6yq+~l`I%<=ao~DywUg`dDmgf@vDW1_Bnm1 z%enOXoT;uj$L>$?%as0GP}1T{Q#6nEU=_Q_N(^LaY3Y!x5ujlLrkHkz6HmTk89z*f=t*r{01Vw0=0XEeGQpNbFHs|#m_ENx2Gy)|g?X_7FV9KU@4SEM# z%t8?pjz^996H)=%#VbDl66xjOW8q03J6XFHaq1N33pVfm@@9Tt zs$2yDcXP&fx;!YfsiK)QjcbHfRpkyIkYBc-v!V3=)nAC4;_eD+;m#@~d z+vLrMw1{~a;6BAyRV5hV{U#d`=M?+K@WN47TX0kq3p3&z9exf@jtP3w{EgxjGq`^9 znV84+Vg{-q2Tmq$r1i3CT0<^E&dMOcl*vFZC=?c!Vdtybz#)x+QDetlYzW#*|1!D`$$&Jr6j9GwlVk% zEvF8=zzC7#gzhJtPKDPe_>-E3(&*8$cd;(UP3XvO`2s}gs%q_QA+<8Av0>}nIGCws zJ+x9+sIcYvkp^DzH%3lboxteI6QN!Gg)aN>?<@S~kJ7Tcx&-u5Es{amh}Ka1YUv0_ z>Ud3$w|9hNwP_p#LC5c~=TEuluQ%X`gi!kf9t{P_)p-4W7NWjk^-mXW7RK$v`k}T^ z&@p{5><*rOlP zc>IR#v|1=7HE^j0Rb70{i|{e)ZYQ)5L>~qG6D10w(9DG>$VHrd4d3Sl z6C7tL0Uw5J=ROo}7W|LFD>wLK^Fz9je{#oG>rCWL!2y%6{L7@5h^Fa?7(xk_Sd}?s z&oy}m4S%g8f3`p}x|o*~ojaJUB+g)Wp5cEU?hWdG-9cn`*`s_D|NhlSRfT;cMgHH7 zOAE300Mw-#)`S6;O^y~ipe?0Tr=hS__&#xW2Rn#7crbJxz*7Hh^w5-`=O4_&uh5Kz zQ3POJ(e6CfwbixR&+G0cGh8IK@6bJrc-6+-EwXn%2Rkp0nqfFhg+pr1$O^TrMU(f7 z;2>?6EqCld=RPc{3qU3({ggK=n@V5)D7W@7T#X`UjNZ=;*Zna!hJJ?3-KELv5d~-$ z`QXi?kEDhbn|yQl0=j+RmvK+iY-?Ak`bP_n`Uo`D4*mNp*Z~bz_{TLjn7A-D#eYmH0apAL3H$9o=k`c&h>)oQ}&D=YW( zlUsv?66(f4h!KI%d0NFIIhO`JS{_Y9`Eg9ZCK!=z$Q^3Yzvh>OlLG;Kw^%@ zy>SU@(ewcso3g=K!7d)%fxUbThQSSrg6fHvs{jN9F#s z^|iYlBmXmLP)`P(s%f?77h4!Gp*5&Pn2{{^Z;kw5%q>4MkJNkHXf)o-&C9B)q>*H| z?I&9jNqvIWZlJRDT;TP$!_Ix)Kr&(9`mcD2vtGSTFJt4^-JQkPYr*!3eAG<0>pzIR z@(vB0w|X^0cqj?ykbSdu8N)<^%t(caDq!OghW8ph;e5h7dF%!hzID}uGCDjKxH9uT zQEj>JWg&(no#Lo{z06Hi9lF2T;D5|GeM+v)z!}5Z0h_?kFd`GAYV6=CkIH2(fv7Ft z%s@$HozP2@4!q_^(nLRNOq`Pd7yl-JPvLuIh9EJ~D)@UY!V{uDvUPM60Nq!5eaQ-+%x~IDCPhiqvxHMm=NWo2IX1yrrc8Z`updyHCEUkFDkFW=oQuQ9zol#*bZK213_F3skn)_@wS;Vr**J zpunxYnmC<~;o*vY!6H{x08Ku`kDM8uN$X1Oa$;=#n8lQ=)@J_AO8PXDBDf&(y{;*D zGcfDVESh{u*<(Q!Hb)5NU^u?*Oit)vc_=2s;sv09ckEa$hu1AZ@DPe3@%)@ycOXPmVUL6xKbW{i@9?tJ@kv4q zcLyTo1`Mg8l!zOSoY6fA;gkw*m@su!c=Cqa8GyAIF$RMEie;sF_Wivxdi_H&R?Hg5&S!nRJS_N;4!t2KHY!oEuE9Cai`=6WV zL~47ew%@JZyRW_`k0ubJU;zAbo;|ibipMm18BE8C!Nunfy2tm!;M=$1e`md|RS9Qr zbuMN4Yhb9=9C9-T`V9eol;oPHp=&HS1WDjLk!BZWC=3|gNgQ<-EDskSx9d(o5g_Bq`t`R&*|QbCnlFLzy48h&LL{Hrgibx&}!*QgRffjAq$)!0{IaD8>1~Il@4I z=A)Zk-_R%95?<70Z39~Kr>&_7HyXthQHdQ~-?Ux0#ik(QqzTxMwD<&dfs)1vhZivN z6jl+AiO@%$2}51(KVG%wE7qmh9O>~9D&$N7U`}G$4%GHe1LOUs_7d>V!bcVlhr&=& z!i5A+9aq+7tp@Cp+A`{CO9<18+8_3f2!vpKpF^p|GL`uK&@iLeE;0|84*`?2sGBx5 zaE{kgl29Mi7_k!4ragEs2bwL(|CiZ6tTVeX*%+0g7p0_l?!@X7A_=4@gTBzWCBT*Cvk8tbL!^Oo1LN~^_?yMpdwf-fA3>YT` zp%zIexw|r0yuu7uO;cY}tS3)aw;g~U?Kzx$YvEld;-YOVzvvCu@^9~hd{BXx(*&Wa zV!u)=YG@i1%5^`N10hOGFCZwC1QiKy-aH;}yz|kkutpO`8*R_0(Ma$1?VI1cttN_H z%OBV8nY=R;%isgM4b2!f~M6=C@G~`V+$_8 zMp< zCBoI^LGV4atU@xXqUj%OqFC}-)J5=}#*tPdPWt-Xz%F9Y6im5MKX0#XBK+}dD{-*m zBe{t?IIi>FRm&%^p;mXG+sX_zk>k_lX!L8^m{v!C@J1H{KeSgDn}%e00547bN}Kl6 zc`)P9(PFCa-%G`6o`;6XLR|S(4S?txr|B3iI9dFZbxcS- zje;3lPi&zwrG!4s*gjrXHl^W5Kax!10^x~9SS}dmEuyzNY}8HvD&VS3-!KS=xVHah zZIt#rN|WGggqMtS10!}k={44`#Emj=gt81L*pttad#&x5S)x zTkzj}lMCDhY^`S~9a^;ceZX-xZd86vyR>Z-Ronh(3i1MDBEO42D&lJXKevAATyz*1 zKmBuEdbP-CF)$Wtgq5`O;(WbN^Tj)RL*?ED`-2#T!2Te6osSuIW~}l|)gJSfum{CC?0k%%SCFe)KALoW6veTJ9a3$o9zGe}1kh&$ z##X|xCY%zI-y>u^zo-0rJLtxHuuq>nBgqUj$H7)I70r_BR`g<7 zs(@V-r$v^yG+khZ8OSwyH^NQPdKU`Z?X|l;PCuvl+QiE_<|K;G-?d`~vgd~(?ZU|X zn%%%_A|B94mT{GgLMpfnfxyeup^c|FcW~tQyW%GoM{SoVCB&`D#(Vp}tVB4W_b+5= zMBYsf8}G6@X4-1#fPj;bXvi8weXpaRJE4#~oFDkdt`JN-XLmhii^@y3Gj48x6B0kx zT!ocrlvWBLDe|8S2KA5a8gbjN-pg>!s(1vElPdnp*k z3>|nsKHrN#^L9OU0p|qGtTA;1vNr*hMi1u6|Vs?k1;X8PK5g7jI zCk(`t@lK&wTl)*^8qi&EF%hKCIGi@*9C4xht79z8XDDxYVmk$(pHr*7$@~+c+}6ge zf0+kgspvIfG`Q`TGzUe0XSBmeINo#D=f#!V13q&UQw4m$G7mPG<0I0?bi50&h5neH z1i-0Nwjf)-j+3Hl=ck*p`US?e(8e2Bn;wfReMSnb^cu-A!pzF>1aD`mbHaLNl6dQ8s9aSnzC_Gl(z zEq$jOij6gV-TciiS+|+j-Vov4<@cL<_H9R7aTp)l0P!tprIio7@o!5Y{vNtZ&SVGY z6@Y15pj;KeNMR5=bVWlT*N-O|O~$1?uj|2#l=mb+#- zG2Ezi{@K)Xis`vIZU2p8-UeE@ow%Er39;olAS{5uz9q2mC%Cs&5`N@U9$#wLxeh}W zFh$lPpVf7}l+p2Tta1tQo9}xAO$OP7^B7fbWnII;tjI?D0iH?$j&@WTZB}UX{S010 zK{~NK3eK6dTA8kUiUC#@9YDc?dUjQ z@mnu@k@mnl&|V%rZVy$Sz(}PSy6=aO(XQzJfb!YNj z4KKtsRO$%$1f3a@fln)vkQ5QR1!?EBw=+x}Z51G^f^}u|@=vAp(Nk~87Sb4&Gv!Ni zlJ>vHjrF@sluxYHC=tqU6z+^!s@1{M`4VMtok#DEROe%b^R@yWD5cC%%uKpiD+$4Suv_eGY>q8M zwCAj}a^JUcx@g>2orWHRlRtVM(T9$6H?KD&Wr_>7JEgzgzhBi!=1qsfpt+ebxl*8+IvVCBmX!NvV*}6J~wn_Owi8DKL&|`pV zm11S?Z))|E*Q^h6mvPsN0q(elv(OaSDrwpBvJHy}EM?(_jH!}seG-kjeIq#cV_0Pl_r`Xv zxy5f-be+Gid&s8;F_Yj=fXWDhpS-`tnvE+$2ov(Tod%Da#G_T>pWOydoFBc~@ph%f9FmjDX7~*xizdq2W-OkM355Lo2S1X2C6IxN z_J+L=^Q4A${c{KxIU7a`&?%!Hg2XB`FMIow{C8fOe}+a)F=PEA#U4HUi`+TcnJe%_ zLh{_{r3B6sKN)GBTF2~?q__rZPD;Ww_@9}opGnbxeK}6o zA6bB~`4|7Eu4QI_fpu&auY<&YyP*(gY1T_fQ6xsRzWy3w*Y`uH?+g`P4z2C}as4gY zyB(M7Mf}D}rbt$00H52lgW<8Xpsa{bW0g#i4JzF(qoNbLDB;f2nl2*8hR+bFb*(jf zBnf3V2E}oc=Nken;Kye+{G>h+;~^+UN3_A=EgRPElQG55`Gh|3=2K@?a&31%)VI*f zsilWYKBCVT<-%UJX`M2l0LUf$Uz}#_U)(oG#8N*~YCr=)5kG_;Aqu{cw2B-HfI^Wo zwhQNaG)N4{B%6L^J@7w7&Xp_FpYW{gL4ZfhoW=GuoVOe8JZ|^Y0Lg&Hc<&3Kmf%C{ zM6A}&eU6XvNsj&?lRFyeS@Db>=UJadR`QASDR>^_8Cw!8zrUrNbUBa)9n^+3eYfG=WWc^u#++9!O4H8(*<>cV)Njz34fNCdPlwtM0G>w;;Dm$7!4&BnuQ7sOy);Lmuh`^V|`r;!$kVxED9#Io|Ww zPge^dVUr)U3bHW48w$9Vu;hFpi5w-voZ_l|Zbs zpHxJ#Duyaz-7E|z{*N1YnmS+o&*K0#_4;lIFr|b1xF;5W2T>IuPy8ExV2`a^om1o% z?oIe766W<_J}*kXb=Yr-2T3IbNj%r_EU~iJ)wVsBlu$us8BE#c#{AiKp#}=PdvqDY z1zA2~hW41(4Nv_zWGO|3Y-?~cz&YF7|2w~%(H_mh-t1?CJSrTrp6C0%T>Qgz zI2*IGv$L~v-vdjGr}^uWvM7`jEl<)8@_ifZT2yUiXWW5P=G~=OztUtURf_r;-P8EO zCpYLttl*9ahD>D=*c;Z~Va0Piz*Onm@;H#nQhhu_wHnbvk3;R0CS`K(pf@n1TN;M z({MvZi!_g|8*LlXH*N<>fZK^i6GW5#DeeWhx^16MPzHCR8BM}Zc4p|Rgqk6ha-z+L z`oxC?E!H}zb(@|gNH0mcg6+Ayr{FBff%Wk3T>Cd~j^Vfmrmu)%kBL$Scu>T@QjsI;O&7e6 zs*wR_DZQE=RaX9kTad`NE6`gWw3ZHb@>%ne-VEFx?!Bnm--%JTLRAua`uYIW9jhO< zmlId9>v!14^_Qc%j3TsF>^uJPN&vSvYA|tb3eVcskJnnH^4jnKE0IxibB@8yWxmy1 zO#I2g@=5n**o?@ePng373Wctz-lM`tI|RkgtzV?kUL*p|^0_V_;6LwN`)jCAYkZ&2 zWIgs~(Z87UCukwLyE%1A8fdY!@e$Injr6fnT8bK2OmHQz42{ngxLh4j-v$fMD#9e; z93xy0S&8SzYS*iNU46$vi{;_JSxK*guw3fWoCVF5YOOEeC%)EPCiq$6DNp#;pv9^; z7m+|n`MHZ!+TSd94LZ(zS;?qY3d(HRgpfS6*G?m5jWxQoa5Krlu}_k}dmcKu{<(RE z_8B0R;peS;R<;)lHKoW?xbs+fz^y(;lp0ZE7bEIy>TvRgG7O4-t9<>G$A0gIZ%AdH zb)e^Ft#b$@l7`MdF~PlDXlDWUXs}YTq7((hWC@v>c`-T08Cb8eM@JTwwVUSmaduPi7hl<1i%x z+F>Fs?h|TLnC5FY&IGiJL`ChKtXaNjp?+KKYYF=WD^YI}36)8Xd0gN_s`6!2DGU;_ z-Fi)OHSqk{M)n<^v2Kbki5VM|x^a$bJlX+?KqRYEb`4?8ceQ5KtEuetOJ-Y4vs)6N za=5GbW%mBQifyCQWWM~l(cw9ci#ue0B5O!zf;QHgg<>!LLpLo>V9Z0mJu!As{9(WI zNCvvmr_{nMb+7>^{KM8|8IZ9z;Crd~q+9F-@Cp+^g%Id~+t#Cng@mL!M7)U0Op}2U zDmg9$C_uW3jO8@6xF0jUle9$Sj{qB!K$NSYy}K#H1D+|TSdYa*02 zr+CTXSpTsd|F)iCm@~~{e}J({PSR_Yn$IW$fg0V_sS;E6(gxAYUX$usQs=p83{M;# z^`rOBj*R_7z!u>~K2>~;kmy5`gv`$CSO=FLBc%DSqXqHRcCohNf zjb^1q2A7Wi-Y^>Hc|H&df6)kT=v#*hGT_12@-G1rya^TS63z)~dUB!&6N5EUE56(G zGG=N_o;(3P+3_OEw?KK}x^gmW;b%-?)-)Vtl;LZW)lNo}o$Y7T%^%Y51-`1HJ6n)V zj{6B+bo){|h{YGm?5@H-{18+cAX)ShSwlR>=x66Mb4$DSCowsGBF-`)Jv&Eg%9joD z(}|URb{1{5t=U01fX>U3c(@@Q9_emAySxfVtyg@&VFtuqJi^0-U6 zHTOwrBu{%z2;|ACN*#^WMTjn3fQv zS}Dp3WbC_)SESpnsstv zC&+2%R{GWp7YgCnMI{>uJ#9Ax)sHsbj$B9evpmlq_iGaK1Es)K1`FLpjh@`8x6*cO zKI`?P4Lq~@*fTTrw^jW9*4w(onCcZ#Ma@rTZr`n`=*xlvo~n{f!E531{TcmQm#5aL znCF-?SDK`G8Ru1`H`Gog;bt?j@(&cZsMz)Ab6pGlKH?j~%VQV4@y|D9)b;e!1})(m z&yZ2)&PcH*U0XaLfAFX2vfST%d{MN4NS`~*Ur{_`cPJb@NY>uqqEC~2f(OJu{zsds_(V;1RSk=*&cU&_$WzkntQr~e5G5K38DQJ3I+Q(bLQ0RTdFez z-|1GxuI}W0@vx2!@hWGJ3)XsD8LD6yU}b`K0$gvRo=rAjJU2@GC^4M7&?%i>)$d*j z@saYLGw6TuL63!O-|sceYbP!Uln41u>2!H6y7=5iowEDOk_@+=Ra%Y}O})i@>khJXfw091^!9iB{K$d0bPc zKi%~@)t{9>gs~5`@Rg!YKxM@FpFe+omI5{h@S6a&ZU^OXpLQUeWk1Br{3T&r6ZgdM zA`xGO$cNb^aTT-gLpBYyy|z!JmDd_a*fiXjDkF;gFRg=^a(K2gA-C}lh) zeez+@7A2vnf!u6|*pao^-%vP%S~_?r^O1{3wLm&1PEE7FH-~*&P70;>WD(r6+2K>p zf+-iV7t@4oTB2|+=I6o2@5O?7k;&{Lc)SO79YB~J=IY<=ER{A#@U?y&YjJk1r;I75 z@wpxMPd|l^vwQ6c3C@PgRiMd-0DtJZ-YiX`JbK9Q>-^UNX;}4suY3QT$%b+o@>lsH?5ZYn8@1Wd=@E4~LBFYFBI_W=LmxSs8MJ3o1lf@&fTp?Zn4+fj?gSYsBI*QH#uvKmbXhApGiFD%mV zOzJWc@w)O9AUc6y$wM5l()3x*`n1W0#iE7vF5?y6Ui7ed61xJ4$|mIE>xAX!)vkg? z+?h5%vO2T}QWZAy4V#7P_Ll6mxy*rpeb=08o#MAQPeo>?VFeD>)3#V_9YsFr*_~7O zN@uN{Rl1LMX2AVR9C)Pt2N#Ie>AXhLQvrphf zoF+M1-#Wo?u*QWnIGEx0j-R>7-R|r-)t@7oN|QtA-co{o-!E_lAAW6omNeBFqmeUoco~-CaCFq2>*t-e;e}HG6zQDZ?~51xO45Af$Z)N)(C%$nqbg6=2x| z2Yf7lHEp&7No@kw&weC*5vWvAxZM<}R!*mFGHvpfj^ryQ=LBmd-ScUwWt3ALOdI=bw3gm7nhcrN3wvM?`{-M_LwqV<;?tPqILsRu)5 zEb10bN?yMS(s_C^u*XoCmTEl3!~5=b#<1GMMks(j)bF;N{hO5P9Yr?YI4kV0ZT@IO z2Z=VXkKEPw5BY&y-_^G|H>_brJ7h{_TTq+dBirR_eY(EmFBzpY%TD*u?B>1W4m=4| z8!$pa^|%pB-b%MAo1scP5)u#T^4k!mfRAJrbI4ag})s=S7o`$LyQ+r_EFEK)`KjoP`xT#&3z5+CN$)m46&FObqs zNz+03M~~q7!thq5d#_%_Q2gCnStlXYNw?`gt00#QEC1*q6%R0Y%DdAfN6t%kR z*t+=i5(WoCy3lES>~TDww(ie%R9$kBCO$SuRz{DA!;Q^csG}C)!Bu$0gu0@1?;;m& z1g?)r7Y4qa+>T4{0`jOuQ+Tk?1I8P?v=HKtp19s2lI?G#uEs0ZIQwF3-G5Bm$PK3a zNR;c}(lyFJtD>H>$IFc%HoAL0EoAN+4fX6X{x53c*2;9qYl(tf0fk^PxFr)XxtJ0Pfq1 zkmeXhjFJ^P!ym}?5*!Toc6Djc{5wO^1m9HMybTJ?qu$IvK_4k`b38QaY9lQ^`VQLY z8IlSkDe8%4etvzBxd_l0@|jtVygR(6s|b)1aC{cO;HmAs|6uh~c``K6aNoObBjJeFSOwQT5a zS463|zEyN48E3&rXx$(722Mv27Qasbsb51bRDb?lt#W2AU!k6x3YHsT5z1elWF}M6 zzYi0wM#Bq$X1EXdLkneizcOZoe>fSue2YPb6P-4W4k7@-{)N6j`p&*&W&yu)ZMuf# z>PsW`NcrE1shzRjkqOdOU4Ij1yFY;CX1b5syAa`8U7Ci>O8i z6Ei7&lBhirs@rv{RTPtob88ZxoCFBv`ftHsW!QX8 zl9!Cgf0ngNn2z{&Ux~FVv6_H-3V8^stlqozP7HD6a6e|$fxSbCuSQU5Un^{-(r3XI zr&PWjDeGG?&;BU(Km#wa_eC$w?eOuQ==4vTEow-0p)M|Ld3H(m!jd@ge+vu{kKNXp zYRLVj`0*Tf&HeTA5*^`lvX~-cpN$Pd)sJqYVsMS2NtNH|!0tHuF0*(3PxbLXqqH$@ z@gR)CwfPwgJ)h-`j{AaCXFfeJ89vm4paUiAxcD8SrLiT3c1Q&&=6YY!-S2aWyq{qs z4^>o#g-YD8qL^2LugBC9ZLwm~GWf@s_5DeYwCTa*0NZn3J_e6lHv4I{=QVaCz-ogr z!sodASVjR~VN^8_;bysE;Sru$`1JD1L>dBbD^>mWujGz&4M)bpL>tO^Pk^yq)r*l#B@(a$r`0VTq%6-y`&P^q{%iS z>O-0ye+c^D#Qc!&&tkIT>XJw$E$Lrj_LCy6N_wm9#%VUAN3Mdz>vzd&^5~ocqc@GE z2a<~R@oM7AkTkg-Qgx8!U*cKRtx~n>rR~S$IXCp4*G_eQEZIr8@ww_|umoud026|+ zLK~r5)*_@NCwt~PI*I(f3gGww*@vi2&fO!wUx(Q>S7zDUe`rc~!LLbZe-x)}N?#O> zw3x!>VKFvDmWP4s)kW_o8khFwtVJRo_s#(@HYlf;WZ0)tvc6oqs%kKeRJ%l*`KNe4 z*t7mf2&p^XiDKAfVXoA7uT|-kDesVn8k=l@JSW*kC~j8GtDF~Je<)#@&`evuK`Iq2 zpH(#<`-tZL3j2#&8sEMif^N-*g^K5Dg(6gchbx`!em4xu06k1CDXBr1z)k;mtvJgY z#|}!Ms9kHq(lb@&;+0Z}=m@A>=D(>W_@g#iHy+Hf2?|{+N+@jyJ*ItUvs8$Yh|Ase zxG2P-R6tn-nWu1*x{oa!i;a)MOZ-VMkWpFxN|#A6iQ?4ZSvW+2Hc!4+vSvkuv88hQ zz$l}QwZtLuP9GQa8-=XQ$!OEMG@0X-ktbAE=<4n7$v^4tdpnYps!%R+oX^ zA77+vM~h?U;Pa4MeJJpzM}TtsJPw>0^Iz~FC?Gizz1K1Oe@R3j70N)3$L9kDexl{6 z4G+fNZ*Nz37++`jOO%7-nk1Bv`w*iBg7_K(ysS1Kl$~@MSN=y4(hK4B$ZbLA7 z{~m~JI*PaUQ~o_RIwka+mT>AHg6Gi8DNEw;f(t3x`L;;7g3xC}p~>)<_X?6dRYlg= zXTiFc5vbq+G=Uz=0JX%@!Hg`(4MA@cKzs!yHk{@Y{A_h_`QX0$)Is<$^Nl z7$RfcaP}TjQOq6LBHRU0N*bx#r><&*FekVTjY$Gn+aJ>r@YcxCvWn*N#?w6?LLb7h z&X?nfmsZHQE6Fe}K&KDm!`?05vy66Kn@i#WV)Hm0t1tfXM`TGh*{{`pvL56-B}~x7 zO)B2CTvl#7&$m+f0)aYYB(@ri^Ocj;j%^;6{nWwT+kbppHmGO;E*jkDaGF2lPM=SC zBy`}JW2v~5B+pEouI!h@O8$(ecd@?bNyN7w1Y=qlA-_t>`m`3J6~W6w4#S=*k3`KZ zCX4A^u8i!`*=H4e_MJ16^Yw?YSFE?nxYK#*IfV%8Br(;b6Ah)Uil#Hdm~5uJ(Zimm zFiEdj%VMR^8kIRgJKWbL(&iVb-X`&{@G#@j>KP&`dU11SwN@heMn_B_INwIF$l}j@ zp;rB(n}HV%-00>*PCEk7790gA0qRhM-+7~#Vg8W%B?%31U7_8MQ;5spjBvK)F7k0S z78>D@$XVjVr_`I|YAML$hRltYKGcR}P@CY3SIAkk`b(>+G<=L26OT(pQkhU;B4Q*5 zk!p?!?|vIk8hOsqN(eSy{JC3>OoF}=9ltV1`RzHE5s4JQZ$xINS#( zN3AzK5uR2hr?S^5g+N8FY^pn;i?=!Uf&K}#yVj(q^8?>Z3H#;3cJ1j(ybWFsrwU{q zM!V;0*VjY}5@@_7()hPs<0SIW8BqQ}<`@dVOS7t#MHhnyU5oh7fhPoHXSN)qAIIlK zhy5XZJZw(=?Lj|kYE}7d6oMeDi0`4i>^T%mDT+!>zw;q!TaIIMN@p%#SCPSF4L3*1 z$gW}K?cOk)!0DdAuSL^~iLHz39q2!;6Nh--x3bbrnvGFk_~k=tSQj_5m_|yDve|I7 z6FrCJhl~UdRFLy#(%+K_(UuGVu!HU%AW^2L_1l@f2rA#c~kDX@%=UDgjF{{A^ALpt1#rq-(nH>qK z2r&YpMt}Tr zbl`V>%KFJWnyUGQn!sm9Snu>zd}lb0fYCrg&yG30na%{0tyk|4eYbT-mH|s-{=pK3 z+Kqq`y}Jvx-3V#G8E029PZ2?*a-A52PgY~@{K*}U6&TkY5rPoIs;1)={V=;7W;>fq zp^{<;p`p&f!?%=oz3ekJES&V+6Y=DNZHRdiBS?K`-*`gO_Y6D$J>$R;fHXjl%uu+F zi2x!6(8Zt=zk&Cg0DSp(>L2=vE>a4*?u}}gF&(VV$#{AnW|e+*>5nmHR#!D!wxeh< z&E-O0`G=#Ya(;y2iKQYVgf(0=Qf1&`BN&g3@7Z0*<&@bP{w^{Io;r#BfXE$3dNYT+ z`fy}WA~3OdElz$EQ{z99$iew4g1P!nsOYwH)qC3zWL;Ko5m7oj?((kzgDgV$gH)~^ zAbR>q`puR6p_Q4qqa3{S~~_JJx# z^(V_~qkjup|D7b-Av4sW30C_H@CKMB{Y|erKTLCq>4g~&I=T{ZtTIk#1*J}*3Yi%- z=2@+Y9Urowi2B4g2XZj|gOdKOm4W-&dm9s@S$^x#l7>4f@>d5;9$qM`xD*x#_m>Ug zgq?07c8Swcy~#bFME6RLZVlQjFpkm@)o^EVC(iiIII`4h|5 zXRsmV<>toe;aIT9?{F1VRCAh2HJf8OIT(!Hq}_Az6fi&a%a27`k!pY=prFoY&WvfH zmxHg>BehBUo_db!B|@lHama9BfF;D6ud!<^;)3R6xyl0yNCQ)Z2JR0tPgE04WkAxS zlBii123za24kdBu{u^9A_6tgT5xC<}SCit*OnKauiqN<4jw}*RRI*H=ML5q$LH6cr zX(0_ojs8bB3j`>9x$=~sevAGV$(X7o{DY1{YC=FN^;!ZfM_{aWn( zI}F@mWh|BamYKv%^0BPhq_*jAowhfQ0M&^ftZ%%po6*ppKTWmxInxN)P%l&S2R)4Q zq?7U2zKYquJ;Jua7>Gak-X(0b9IEL@!jI1K?KL&(aCwA3BMKg3gtbmcIk97fCxw^> z%@JZupKH$aD8IvHdyEfLfjb|fj3{C-EYigsbz}I9#|;@iPI0X0Z)FS>bqc5+Yj;>b zo&7n}pYbw$qcdnIV7hiOyVgw6%&vS4tC(*m-Uf16@x%@LI?4SW1T>`%PV!sb)t=lv zc~U>9Qe30Ro|A+Xz4MtDW}<4BW{jo-ca{m46I2Ql)2>asE^K$Uo-o6^mv(n|qhE-- zK#mxrLrTV+F9boNXd#RIJdx92nGty{Cqm9pi*vN{sON|WCJ{$Uq|jEa=%$7RkwX7V zQ?W|<_9|91$Pa34+9_J)k3p*m4IWEu&D+8BKMk-gJVl=bW1}zsjAJVU5RE`MQ+7JM z*bKS@0hyos)FvV@0yi4c=(^NWDp=uYVKRgEK-vQNV!L1FGcO(C6@3z4?IMn2p$z*`Jm0ZWkDjE>SNvLB%3cSXGRs`?CaAra(0br= zg0I`Eu;+6kECEQ79S=G#NvT`<(Ew(<7YunN<(992E=sybRjc5uev0;P>DSR3uZ`DC4|j zU$b0Ck0bSm1VLrP@1)i~tL|7Zr7YACiQoQ-SNnYdZ7R-SM^?b9^udN5b2W0M!ljunAu8{0crldH4Iq&SLt7v-E;HWzuO>Q|{^4iP4?kq<2ZNA6 zbH;>rB30^E0gQ!FBbrDwygj z#(B=tf-vPeuV8w2#)B*Kn!U=Lm{A*Iy=H%XQoSoN@ zH#7CZk|&wc%68w7$M5d+MdVBg!M)!<3RZKJ&1j?)(aV*(2tz*NTP`JF;oL`!z}P5a zV!&A1h}3W-XZRYei?IhG3MR)`;DYdPD5?%T=@F^#9|qd+y4is96~?Ejm_O`5Km0;2 ztDI?=XC9XFpZQQx-%zpsQz)Y)<5!7cR}AT_jPla3Dcz{k_@s5yL7>xbeG3ZzoPK%1 z<6!6A5o!;sG^lwrD;J7l7sCB3NkS;6h{69a#P+G8v)9R-+TQN zyph0&PZ}t?*m+`pz{Mpf63&3Tm*Li|zOtDE3y(M&7RIctASP!2$kLFqP=gM8pKcg3 zzh@N*LG)Srs4Th6@*WNx8VVB=e*c7Q{; z))yVYuGCOVV~98}H#u0x#H|M?>GXA4`>lN0Rp#?euz5r_nDPhOS~}Z`jQzUa&t40M zCb1AIzfZdm;G#g^4sb#Z4x$diq~QGBgM^rx2Xpktp0nK2`TTo+8$yAUdCEsIc?e&W zoh4VQ`q-9)+u^~-P+XZqA6r?#CtndP>4AkuE%ao& z@6R+p{E6p^U5>CMkiv@cRO36kNt#B?eGup-FSjdzt8O5_aeTVp5F7K zDYHS#vsl53TC}iB9A5eWg8~ZgSqge+t=ye|6iY$FgDQVJ%8UU&4t<6A_fQ~&2C{W| zT2?PkZ%5|#bEAdhv6?J!D8g;H7viNsU9#Pm-J(>|D2s?xlRr7Rf5k@@!3 zKttZ5_EA+7)x9))hH3Ur2J*0vRe(>p#U>(xUsu_x25(;tZ6IH66;6aLU)QXN_KLA7 zKic9L^XpsqE!G(_QjLmNP(_)_!fcNwcQVe6TkrvTB0R9hjE&p7#XdOM@Q$ATvg3I_ zJcsI0Fq1K2jS6X5yGO>;2T=yqcb++GKg=(wP{ZUnjGUZ+`$_V^=IPQ~un7Mo2r zLbs&At>9?u5(D{=4XSCUh--!|6AC}CDxaR$rv2^2Wf_La=*&EyRG=0P5IaHvxgo9G zy>JpkDnw6yINUtS&*Yk?TUc8YuAhlvlS*7X1zV(!SH4*cq z2kF}uA?mUur*}USO%Bwuk&#cM5sH}j9LvO>)^kA=!Q4{LddRr(hVocY#Otu1!=%u& z;|ITZv$}3+lXLvaNM2Md$5VZjZKF^_cimr(`Ot{+*t$!Ei%{|Lg8wJ_0E7TEg;rX`arA@T&*41j{M?+`;hzJ;oGk;iLu8=yr72p{~(GvdU zJOik)-86llS9^wI+QS(>mbP*GB6=lSt=Y$%FlS)dysZ#^pS`R;p zIli0T`4))|RrfI^^_Xa0tb}?LZDiWi7TK2x+KEg8W-CZ4Ku6tL4>J<^vp%F)iMrDI zj4IoIyq>n{voTts+En=1-n!A(IKQSOt^U){AV1n-VTGXhH$G4i!Wv0-R+E_)*j*+% zsmgxei7HJ0P1y5tF!Bdd@SpI+qZ~d9)tXZAlUP2tskb!;*QWFF~bQ- zMpOJOYg6$}es+sE4IfuSH@YkXKElms{K#A>COlfm*=@%+@)TjAdLYRh!7tmP{bq;MVeU3e^N=(;mlTd-}#SWLzmfm%b-f9^qoMxkI1rHNe_A$=G=I82C!8CnbNZoVb2x- z9fG$6&4Au~x;arF48K^~l0LQg8*U5XiX4J3S9-cD;1!S4fsktFqPLBFBd+#6Bk+pG zuuZzk>Zq~l>fUFpGD}Y2dMoSCWX`~jpAaq;3?&C+FO_~(c03L>`U|4be+NTTIx?p? z2yprjY|tTDTAoP3HI{kXqoxEI)qgb1YUGh9x6#+;Ae~6_;;oU+I8Lb`jXEtZ%V{vV zD|Xj5v3rOjeoEf)vryrE2UGVI$STZvfAtXmz(NGnVo14fbq4k}IFk*MvWy39Z*NdY zV#7R)`!{|uMVW=ZGTIHlQs5x*Z3xb_9o>Gi)8t@@@M)ups4M<{e@{d=fW`ImouQBPk@s5uOxGZzZ)x6# z0AlS8DHW%t9tQQ{dR15o8gy@MWxQ*XSb@5<9HtE&*duJbw*qF)el{lt7SIRr{Mpcz zyQi+QD!BfA-OzIB&7q({XdUCr2uo7iCOykZh65+6F;!QPmKwG7Kt{n~G$bJ|;&_G1&N68^fBG z&X9%$s8m{(I*c^TjBBly4?&zDN41s;m@o_^%OWmV0Rt>Ns#iDNUs%-f>f)F~v(uIcM?yQ^RNc+NP3qB-wDIVk>bFsJmHMKpPm3y}%VZ~qTn0;1xUn<_$EBDPPoZmt#CQJ!$JnRcX zcchU1C)mP?vm`G?y9;t80$Dvl>K`U;o5bUnX2OEe9%1TFu$|!pVN{xtc$G4Q2%ZBa zen!1UXcEHRcS25!jibT+%)aYl&#Z@^+z-*+&ViJ!F>8-hp6$E-iB^RvYLSaOO* zqd^96IB_Ci&^zCEFDQRV#np+=r^A?swe7UmN+`W4!$Zxr8&;>ZTlO^W-d4yb@{5?# zv3x9Co9biVMqw=R$|Zye(E-{bxJ&~T^0YwB`b0XRN>Fu*EnX52eWs4+o7%#usjeR@ zJ0#ZT4n!xg5SxOwmM$1bd>84PO}Genjex#zLT1irppM6^oCJgh4l9;g2m@9O<>I%O zWE2thF9vbp$&AaZ=Os8p2F;cYMl!|Mhum9-30q>tZ!AHiuuwKIO`3Jz{`yPBo&uH6 zbr0?7pA4UNgo$c^Ql17l6Ek!|L-GvxM5KG5JX-m+P)qrww&3x{d1`Si+=a<6~H4MdmbFo%AwO9j-OkC2W1qhlJ3|6i$fM z=2AYVRZRDp4aylN@|ZcYzFr{2GD3u94nd<}Z*VCS$2V3Mf8{!i#23bB5()0>M$tr& zt&SM-+JA6&WQsRyYbIx!YQ(Vv1tx0Ks9DaivXVFwc4x8`M?#693JHF0ak;0iKRv|l z1L$mE#286{kbEC-GwRG5B?K=mH5DJ{vi&_{HE8B6eGMNUKHsK#p?=^YCp(-`bn9%8 zMhJqM|8(jUYme_cKa%MzE(JYFrdcOrhbT5ED%e**EbFLaSQa;(7k=6HZFjtxT&!)Y z!UoIeOs7+HH!z)L&xpL3p?PRCQ^u4M&stAna7;x#OG%F?>EzEqT5UjrZ??4A#pV4* zSoi)jo#$gB(M!pKmu-i&mg5HtTKfVDhilP%qwvodi9R>7fgbkK4-=)+lQH=nh!8X+ zBB4xl3hEcBbg^8*VWk%s` zUojPU25IcES+VuxAocHKD{M;|h7~mSn7GNESe?!hSm$Jk;oJFM2Tfbz8Qs_g6+F4! z^8}iDW(e8KxRcL!BXR4x*h~*u-C78LPS(54;t14oJJ_u8p&{V}p$)($QJ-9Go%JNI znv;oxF*})kgtqB_D}^ExDPY#LbFqo8~0*IkU^N!QTDH*f1eoPC;izMHNe>7 z5=Z_i8X(%FkynUZ%y^tf4xht>4Uu5%X8H=H)?rlwr= z%5Iyn(@|L$el%kWUVOL+_RCw?q|a=kNjEa_H=m}56r9%y6%%b(zN4F%w*@`}U?>nN zKsaU(J?NvQW7@{>W%M5dLC?w!d6>D3{Dj*v9*Zr%2` zP~oKUSaWW%P;|Yy7{s6F_1D!s@U=byod=_nQH$50{o3OuW+c)(+!?yx0%a0ZH+Z3z zj4Gr{nA03Ffzq!<*pTFCR0z@|&=#oLh30|V+``9OMUVaPnm&Bpyf0d80H3WYa8C+} z_ji-_6Ayl+KbaDR0>7iIrQudk^H#$?aJvuc~ z02dS^ogl70R+iVnHH8Ymt9&``VVnd7%1Zfdvf`QLF6e-u<_7L=oCYMF&L4wqNv*8g zC%$sjOz66ep^1E7Vpi48Z**{ zDu?xYHY{Zrnhv@HTB?P>7l8i z9RKmc@!Vrd{ZX>Ph^FnJ`(enLQL-`tWbIcw0V^xb?|H>A7|6z#*6x7C1gQufo zPBKLyz!DX_SfWBnLaLL4U&Af_QUJgc05INKQh<-_B0z^&e#5n}e%)`Bk=BnNcOUDa z4=W889u^3Za+1=c-of``A&HCaDif2`C%|hr7vp z%uM)QH+-pH#Q0QdLKM*Qs_&yO$`KC#pW2F}T=d_^bt^@hk>vRR4)xvA!0;kt;<1nd zv!GXa(`8r6v`^var|IQN)1Igwfp5$+pnSDl0N|yF4cZ&Sh63>6E&ia7k-?BY+>2OE z%$<(crMt%=M~m+A#2#l!0(Tcq01zzpz~L#4Z{c-xMA)|-?ANEWJq*b8 z?H>pC&Sgr;ywi?+iMNFcrcjVN!pR%FcCXL^tLF%^^w>UZ1RdDlDPZA*Vd{cL`w)%& zMUB%woMy4Bi{g|kuML%m4hh)lC^|&hy?GuQ|JmJhbsQITW9WH=L#Ba!#hv!7$?e^2 z7@`Wi8icq8;IXk1MCt^z-2$-4?b@Ctkr85dq`$#1z(1fN0$!Y5ePKZ+;;Sz?0>guY zsceFR-cl|Ct@W-_Hl#a|5Q~dg7}F{#aBo9AI_!&2@#0oc0(({+ngH}727fIMOWX)M zS$I)w#9Annm! zggGg$J`eK@6kDGBe;)$So9l>wGu$c)N1rst?^_$%xc=?d<>Of&&G1a6`9OzW#uD7EfpKl495r4z~+co1WBEAbpmp6vMI6~9| zf*ziC4-O81OAp`wS_nsLcYQJF#q{z@O0Ak9>InZ$`PWK~FCd8`q!$4OsQx>m@t3R8 zZQ)({i#j#x($l_$?O{Y9atKb{ZRDdFavCo&o_T>aSWZX0U@cG^YEfzqQ$z7x*|ZA zn=j&MT*3Oc7bc*Yd8WdbOQ;qO5R(VW5^^C+f&Nj-(otskI`e^qV8ZChzvplYJP@}c z0P;m%#Nw|t4X`#~*(1pSGHYL1E3_f`-v|KKO<)8mtUHf}aQ}&ZpV$sd1m2H90}~h< z`k=$kq*$@X2W3 zM05Mdvn!Bx@OM@-jyoONyORJ69Iwri(-Thod79+Eafq7$8BSMQ;A_kmCB_5fwaCuT z-zXj83RepC??hmy!9b&|bwD!d;W3(tzCZdu3t;=9N)_sF*t{Y!{Hes@e>0cj@2O7R z@0Wx^@Sj<+td(tUxLtQx<%9iq;cP!vx#$CWj{Ky$c7^|8{!_F$V_+&p1$isZ&arl64fwAKm<%@Pre@xSIXvhgz)FR1eMx&T94vW)|5y5? zI3a(7@1G==XH(K%wv7$gi?CyJ638Z)XXp&-`T9>6Kz-JGsKw7RJb4#c=#Yv%HiAf@ z#RvQ5xQ+CXe|HzW3A&|lPVEanl6tcwu(ld>1ZT@b*FFxWRSPVT(f^DLX+nsbzVFuh zooPEA;KCIXAK3Li^S@b6&-eRx>Coglfd{KYfR|YPu?pxv#e}o-8Pl#;xKEf32(tY% zB1Z75*Kbai3JMC`irUVBjEA+2EdBJ27sxmjgbnK7t>Lc)TjgcL0dUiX#7FL2(%jPE zK>x1=jyiq7V$neP%*8yTvM;1-A^*41T4atofS4ITLHC$)|7ivq12O?LaM-`gw{A>b zrg>q4aSbo zis&!=TI%Oc&r97!*BpS#jb>6k)+#9}Ew{W>LlZ+A_}@w?vd!s(fzzfm8OTg^aJdCg z9-Tp={I#uY(4Xt69s%X6W&4w^CHr5G6=5Q#Akku<3#7Zn(bvb;GS7#UkDYzc|LQqf z5f%#XoAr@QaZRo~2Ztwv(U>oZz`<&RF?j#5xkc1cbldm{5b@26k13@f{;yG~5duh> z_tmT>aI6(24`_1wY>(55pcSDq%{sjDN?uO`vKa&^A3Cj}{_DpE&j{;{cmu5;N3z%U zbApp.xaml.cs MainWindow.xaml MainWindow.xaml.cs + MainPage.xaml + MainPage.xaml.cs Package-managed.appxmanifest SplashScreen.scale-200.png @@ -46,12 +48,13 @@ Square150x150Logo.scale-200.png Square44x44Logo.scale-200.png Square44x44Logo.targetsize-24_altform-unplated.png + Square44x44Logo.targetsize-48_altform-lightunplated.png StoreLogo.png Wide310x150Logo.scale-200.png - + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/app.manifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/app.manifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/app.manifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/app.manifest diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/App.xaml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.xaml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/App.xaml diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/App.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/App.xaml.cs new file mode 100644 index 0000000000..8caa9b0f1d --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/App.xaml.cs @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Microsoft.UI.Xaml; + +namespace $safeprojectname$; + +///

    +/// Provides application-specific behavior to supplement the default Application class. +/// +public partial class App : Application +{ + private Window? _window; + + /// + /// Initializes the singleton application object. + /// + public App() + { + InitializeComponent(); + } + + /// + /// Invoked when the application is launched. + /// + /// Details about the launch request and process. + protected override void OnLaunched(LaunchActivatedEventArgs args) + { + _window = new MainWindow(); + _window.Activate(); + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/AppIcon.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/AppIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..235dad2c569272e9a3c7158ce4f93042044ea5d1 GIT binary patch literal 370070 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/LockScreenLogo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..33f889e106984ab9d522a6fca51b036fe85d0ffb GIT binary patch literal 1090 zcmV-I1ikx-P)&b zxMup`R-qg+6mnXG?R5g=!vhZ{B%T$C3{J*#jNh1hW8OF6FkFY~o^r2s_a+uf+(H0QDRr*g(#0 zlNu*NgVilaJ32($r5Ipc0eTGq>2FnqRYZ%onM&!&F2sOn0qO#)x4-h+VnwvMO7&nI zW2AFM!LkCcUPp=kgDw$~e*VUvD+U$;2mI4^3}_Nz2vYZYjrMGoIB@7q(18`) zQrt#(_7TsHBodYtpqqP+>FBS77>@@azm)ewU?)=IKome^?cJ{BKfxk^USdC{qrc}9 z;>4cL6$Oicm6R^7b$LUBO$c_hwFilWML^+AP>UvSV~7(@e|9>H3KjvaKDx_Q#)v?B z7R=R&XaVZ~S19M}X%r+t0;-lsIsP@&xj^B#^HV1Us$-UFTSgFbmL==)$X7 zNFuNTbAO!hlpBMTl=3x)#pLu9d}}k-S<*o|0hI6fnd=xF>og^^vu0#(2J4*TRyvZ> zGqG-|LYy>{cKC+$gMCq$d2#O_;mx0=rl-+HT<2|c$-ii-d8O@@VKNw1M}mueyr4q^Y?K99ZS~GvB;sw9V6)LLn(_)H8ti+qJx5d;4Q9hrD=uhL6ovL*69u$^)}Bjr*$0tZfSyz5qg33VntAWsAl z+lB3+5ih(>`*SZV?-Bm`_ireG7N5)e|780HlFwv^9X<|!09gBj2F|(qf&c&j07*qo IM6N<$f=X5F2LJ#7 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/SplashScreen.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..802c79d6d7f4a181514f1cac16931cbfd654ea5d GIT binary patch literal 12625 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 Rd16UVXrIz5IA(YCe*qp{r`G@g literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square150x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ddba42adbb45821d1123a424657ea248ad7a411e GIT binary patch literal 6357 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..e51416a8e42d483453d06da68f57aaa2c5db4671 GIT binary patch literal 574 zcmV-E0>S->P)D!2S5_J7ldulh3Kr$xyeFkPI7_d zdA`B>2VVEkh3Fo(61wVh&N8th;R#sKfm9ez&?)S-6|usQVq9a4$Wy({3^Vw zphDr%m8mNO1$s);V1kfmw{TFTYjzf3jMPH_D)6sNgGmedoAHL%o&}K9nd``Q&i`D6 zm!43A`v9_oZhakUgCOHn*3cjTIN%0i=LLB>)Bq{4DQ@wd4F-_N6=_b_LV-PpDSRM( zltjK$*w+UgEq55-w7HchQO=CFGWW|p^_;?CkMpjH_$->@HG#egU;^8N1GNI%hF6LE-sc{=N^MNf+#(=^ZVR_`JM)0Zh{x&phK0(*OVf M07*qoM6N<$f{>Q)_y7O^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000000000000000000000000000000000000..bf063eb4d6c4d14763d5d8ccca84c0f39fc6c350 GIT binary patch literal 1091 zcmV-J1ibr+P)%;e)Mb+oQkl#NdTRmo~A<(;gjdxkT%sBw>93j2n~5)+||jpL}EC7HA9`KV42*9;xWPn@+QXxK< zzDg^3Ky?Ou$jm!0>xAOrw>^};O)v{!2@uPX@EORkZDRdI zcwl7<;v5}u*(DiZT>)4PV$$F046BF^Ycr$Dl3kDiY5`&b>)BuWWm*wkrcx{z`bcCf z6)Y?8Vs(V*e^59(jh(;o$I`$e;1GYht^sW#3{L7^o@&cx@dHQR0Idi;wjd>ilfpLQ zwvXI4Atfv;05kWbspzi+8LtOSenD@Sz+S}o0Tr0Y+IwBo2SF`>XB0Qe15I6j&qw$P z%>GJQS1*8P^bb`gu5)?A0~_J&aMm733Ck8Ly#X50W^D|9!pYBGV^PB*pwmY8nM#ca zE>DB8dZ88|_J7IgJlsZFJKrS&H&NcEh!2)szJ_822yh1i`73W=QzX?Ug7aqH7;2aT z8r&LrP+Yby%d$j}?kFM*Y;blsU-j%~WI&7`_`+$$O zI;r=9n_rcpKlRHvIl_7A<>6LfW3Lv0PX#nJb zz+=0xJUqmOSLq=4qVfUZpMU>`0&wCpdi$U3&;ar&?Xbi9;V;i{h8m1}(AWR~002ov JPDHLkV1ke!=|TVi literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/StoreLogo.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be865f0c378b74ecc9dc740f45452b9763e59917 GIT binary patch literal 1106 zcmV-Y1g-mtP)LZf|FOXf6EvNm$pnQ7pc6nR046AJ zg2DvQ0XXs|D4l?Gg0>4lC9D)bV<(oO7w#V4oz96ZEB>%7*#_W_JN^q=`pagsiLv;K zlEUp`h4MMevO=$XFqFQ)iNp_--*7v4L`hJ(C~cHXZ#0Q?wdVu9BlE_|pr_ElH(FI{ z>O^KmtJT_KL6RsNM;*< zxf+@zBPBt2sA{CnXf)G|5}8V)*q-k9`)(9PPxu;xiZBHzm!L?PWB(kkNTQaAFB$&$ z5M@LIM-rx)n9DB881)M*=O_z3AB2)1L_SJYZnj>pY4AIg39CP&^iVq3uT=`Zzvub| zs9Bn@ox!Cf2xexd-0^}2Qk$|P6b?YS4H206e4KX>)Njb7W}tFIEeT>yy8Pq(L#=D+ zu((%xrBm|rkfiB~PP}d?U{JewR-{A* zpnkP^Ss@|g5n^X-e+WW&6QPWaMU1=Sl^LOY$oS+5em~|J{@(S80G|PHcl^!PSVcyd z>~b!X!B#`i9;nH!Ci9wdJw_L^`fHx6zsYf2{wo1=JW(R_8hvv3VAb?~>I=;F* z*q%|{6DB)R2$syqFJE0=6HB9dDa;Q)1-hacIT~i4cfzu;J0Qz5&r!=7c1<9^1X;Q-dh>t~9 zaU8yg2;*!oBuRE2WcqA>0YXTL%z*bo^y>*T_7N^J97HCd67C#?5E0=)OhNr>6kdbQ z*fuh7x)PmAPMak{PKYyHkPCQy)b%Ez*)hq)D9>0whX90}5ZkyQ-)U8C5N2VcuZ|BP zhbn^fglMh_TKqA}4%^0c$x^pN`uO;rZ7tx!8%^(96xYJWdU~coO;ASozQU5W`h~v1 zWReNqLZ)zvPUK$nr_Ic;Uwflz!s}kEE;?!VROL~)4%GMT9?T~S2H$IWCc6UEj7<1s zm$H7FiIIN6vT`N6kh^9tB7u1#2jTX@=pRJJx!6NUTniz$Ggcx^k|-f1VgXID}tkx!s@xO65+;5P9B0avPb-0{}& Y7w}?(qQZ`_82|tP07*qoM6N<$g5HGdP5=M^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Wide310x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..314d297f20b765ee16ca15c4d3a066e0b7233c62 GIT binary patch literal 5843 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 yOHd7d7^t+2t&o=9fIe%#|H + + + + + + + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/MainWindow.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/MainWindow.xaml.cs new file mode 100644 index 0000000000..4f78cd1ff8 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/MainWindow.xaml.cs @@ -0,0 +1,99 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Microsoft.UI.Windowing; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using $safeprojectname$.Pages; + +namespace $safeprojectname$; + +public sealed partial class MainWindow : Window +{ + private int _tabCounter; + + public MainWindow() + { + InitializeComponent(); + + // Extend content into the title bar and use the TabView's + // drag region so the tab strip acts as the title bar area. + ExtendsContentIntoTitleBar = true; + SetTitleBar(CustomDragRegion); + AppWindow.SetIcon("Assets/AppIcon.ico"); + + // Reserve space at the right edge of the tab strip for the system + // caption buttons, scaled to the current DPI so they don't overlap + // tabs on high-DPI displays. + AppWindow.Changed += OnAppWindowChanged; + UpdateCaptionButtonInset(); + + // Add a few default tabs on startup. + AddTab("Home", typeof(HomePage)); + AddTab("About", typeof(AboutPage)); + TabControl.SelectedIndex = 0; + } + + private void OnAppWindowChanged(AppWindow sender, AppWindowChangedEventArgs args) + { + if (args.DidSizeChange || args.DidPositionChange) + { + UpdateCaptionButtonInset(); + } + } + + private void UpdateCaptionButtonInset() + { + // RightInset is in physical pixels; convert to DIPs. + double scale = (Content as FrameworkElement)?.XamlRoot?.RasterizationScale ?? 1.0; + if (scale <= 0) + { + scale = 1.0; + } + + CustomDragRegion.MinWidth = AppWindow.TitleBar.RightInset / scale; + } + + /// + /// Creates a new tab with the given header and navigates it to the specified page type. + /// + private TabViewItem AddTab(string header, System.Type pageType) + { + var tab = new TabViewItem + { + Header = header, + IconSource = new SymbolIconSource { Symbol = Symbol.Document } + }; + + var frame = new Frame(); + frame.Navigate(pageType); + tab.Content = frame; + + TabControl.TabItems.Add(tab); + return tab; + } + + /// + /// Called when the user clicks the "+" button to add a new tab. + /// + private void TabControl_AddTabButtonClick(TabView sender, object args) + { + _tabCounter++; + var tab = AddTab($"New Tab {_tabCounter}", typeof(HomePage)); + sender.SelectedItem = tab; + } + + /// + /// Called when a tab's close button is clicked. + /// Closes the window if the last tab is removed. + /// + private void TabControl_TabCloseRequested(TabView sender, TabViewTabCloseRequestedEventArgs args) + { + sender.TabItems.Remove(args.Tab); + + if (sender.TabItems.Count == 0) + { + Close(); + } + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Package-managed.appxmanifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Package-managed.appxmanifest new file mode 100644 index 0000000000..980d0b475c --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Package-managed.appxmanifest @@ -0,0 +1,53 @@ + + + + + + + + + + $projectname$ + $XmlEscapedPublisher$ + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/AboutPage.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/AboutPage.xaml new file mode 100644 index 0000000000..5bd3b2e041 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/AboutPage.xaml @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/AboutPage.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/AboutPage.xaml.cs new file mode 100644 index 0000000000..0b4934adcc --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/AboutPage.xaml.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Microsoft.UI.Xaml.Controls; + +namespace $safeprojectname$.Pages; + +public sealed partial class AboutPage : Page +{ + public AboutPage() + { + InitializeComponent(); + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/HomePage.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/HomePage.xaml new file mode 100644 index 0000000000..9db78fa9fe --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/HomePage.xaml @@ -0,0 +1,19 @@ + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/HomePage.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/HomePage.xaml.cs new file mode 100644 index 0000000000..c2cab60d76 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Pages/HomePage.xaml.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using Microsoft.UI.Xaml.Controls; + +namespace $safeprojectname$.Pages; + +public sealed partial class HomePage : Page +{ + public HomePage() + { + InitializeComponent(); + } +} diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/ProjectTemplate.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/ProjectTemplate.csproj new file mode 100644 index 0000000000..7589d99c4c --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/ProjectTemplate.csproj @@ -0,0 +1,75 @@ + + + WinExe + $DotNetVersion$-windows10.0.26100.0 + 10.0.17763.0 + $safeprojectname$ + app.manifest + x86;x64;ARM64 + win-$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant()) + win-$(Platform).pubxml + true + false + true + enable + enable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + False + True + False + True + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-arm64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000000..8953cce984 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,14 @@ + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + + \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-x64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..cd995617c0 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,14 @@ + + + + + FileSystem + x64 + win-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + + \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-x86.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-x86.pubxml new file mode 100644 index 0000000000..a70c69425f --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/PublishProfiles/win-x86.pubxml @@ -0,0 +1,14 @@ + + + + + FileSystem + x86 + win-x86 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + + \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/launchSettings.json b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/launchSettings.json new file mode 100644 index 0000000000..e25cd6a4f8 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "$projectname$ (Package)": { + "commandName": "MsixPackage" + }, + "$projectname$ (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/WinUI.Desktop.Cs.TabViewApp.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/WinUI.Desktop.Cs.TabViewApp.csproj new file mode 100644 index 0000000000..c5979d7301 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/WinUI.Desktop.Cs.TabViewApp.csproj @@ -0,0 +1,94 @@ + + + + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + Debug + AnyCPU + {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {A1B2C3D4-1111-4A5B-9C8D-1E2F3A4B5C6D} + Library + Properties + WinUI.Desktop.Cs.TabViewApp + WinUI.Desktop.Cs.TabViewApp + v4.7.2 + 512 + false + false + false + false + false + false + false + false + false + false + SHA256 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + Designer + + + + + + + Designer + + + Designer + + + + + Designer + + + + Designer + + + + + + + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/WinUI.Desktop.Cs.TabViewApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/WinUI.Desktop.Cs.TabViewApp.ico new file mode 100644 index 0000000000000000000000000000000000000000..bb2ced4899e6f0adb8119b8b25d2f11a4e38247d GIT binary patch literal 381038 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�OO(9lwHtPWSHGLn-cF~nB6H)`c_ysg>> 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 + + + + + WinUI.Desktop.Cs.TabViewApp.ico + Microsoft.WinUI.Desktop.Cs.TabViewApp + WinRT-Managed + CSharp + true + App + true + Enabled + true + 2 + Windows + true + WinUI.Desktop.Cs.TabViewApp.png + true + csharp + XAML + windows + desktop + WinUI + + + + + + + + + Properties\launchSettings.json + Properties\PublishProfiles\win-arm64.pubxml + Properties\PublishProfiles\win-x64.pubxml + Properties\PublishProfiles\win-x86.pubxml + app.manifest + App.xaml + App.xaml.cs + MainWindow.xaml + MainWindow.xaml.cs + Package-managed.appxmanifest + + HomePage.xaml + HomePage.xaml.cs + AboutPage.xaml + AboutPage.xaml.cs + + + SplashScreen.scale-200.png + LockScreenLogo.scale-200.png + Square150x150Logo.scale-200.png + Square44x44Logo.scale-200.png + Square44x44Logo.targetsize-24_altform-unplated.png + Square44x44Logo.targetsize-48_altform-lightunplated.png + StoreLogo.png + AppIcon.ico + Wide310x150Logo.scale-200.png + + + + + + + + + Microsoft.VisualStudio.WinRT.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Microsoft.VisualStudio.WinRT.TemplateWizards.UpdatePublisherInManifestWizard + + + WindowsAppSDK.Cs.Extension.Dev17, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + WindowsAppSDK.TemplateUtilities.NuGetPackageInstaller + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/app.manifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/app.manifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/app.manifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/TabViewApp/app.manifest diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/LockScreenLogo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..33f889e106984ab9d522a6fca51b036fe85d0ffb GIT binary patch literal 1090 zcmV-I1ikx-P)&b zxMup`R-qg+6mnXG?R5g=!vhZ{B%T$C3{J*#jNh1hW8OF6FkFY~o^r2s_a+uf+(H0QDRr*g(#0 zlNu*NgVilaJ32($r5Ipc0eTGq>2FnqRYZ%onM&!&F2sOn0qO#)x4-h+VnwvMO7&nI zW2AFM!LkCcUPp=kgDw$~e*VUvD+U$;2mI4^3}_Nz2vYZYjrMGoIB@7q(18`) zQrt#(_7TsHBodYtpqqP+>FBS77>@@azm)ewU?)=IKome^?cJ{BKfxk^USdC{qrc}9 z;>4cL6$Oicm6R^7b$LUBO$c_hwFilWML^+AP>UvSV~7(@e|9>H3KjvaKDx_Q#)v?B z7R=R&XaVZ~S19M}X%r+t0;-lsIsP@&xj^B#^HV1Us$-UFTSgFbmL==)$X7 zNFuNTbAO!hlpBMTl=3x)#pLu9d}}k-S<*o|0hI6fnd=xF>og^^vu0#(2J4*TRyvZ> zGqG-|LYy>{cKC+$gMCq$d2#O_;mx0=rl-+HT<2|c$-ii-d8O@@VKNw1M}mueyr4q^Y?K99ZS~GvB;sw9V6)LLn(_)H8ti+qJx5d;4Q9hrD=uhL6ovL*69u$^)}Bjr*$0tZfSyz5qg33VntAWsAl z+lB3+5ih(>`*SZV?-Bm`_ireG7N5)e|780HlFwv^9X<|!09gBj2F|(qf&c&j07*qo IM6N<$f=X5F2LJ#7 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/SplashScreen.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..802c79d6d7f4a181514f1cac16931cbfd654ea5d GIT binary patch literal 12625 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 Rd16UVXrIz5IA(YCe*qp{r`G@g literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square150x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ddba42adbb45821d1123a424657ea248ad7a411e GIT binary patch literal 6357 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..e51416a8e42d483453d06da68f57aaa2c5db4671 GIT binary patch literal 574 zcmV-E0>S->P)D!2S5_J7ldulh3Kr$xyeFkPI7_d zdA`B>2VVEkh3Fo(61wVh&N8th;R#sKfm9ez&?)S-6|usQVq9a4$Wy({3^Vw zphDr%m8mNO1$s);V1kfmw{TFTYjzf3jMPH_D)6sNgGmedoAHL%o&}K9nd``Q&i`D6 zm!43A`v9_oZhakUgCOHn*3cjTIN%0i=LLB>)Bq{4DQ@wd4F-_N6=_b_LV-PpDSRM( zltjK$*w+UgEq55-w7HchQO=CFGWW|p^_;?CkMpjH_$->@HG#egU;^8N1GNI%hF6LE-sc{=N^MNf+#(=^ZVR_`JM)0Zh{x&phK0(*OVf M07*qoM6N<$f{>Q)_y7O^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000000000000000000000000000000000000..bf063eb4d6c4d14763d5d8ccca84c0f39fc6c350 GIT binary patch literal 1091 zcmV-J1ibr+P)%;e)Mb+oQkl#NdTRmo~A<(;gjdxkT%sBw>93j2n~5)+||jpL}EC7HA9`KV42*9;xWPn@+QXxK< zzDg^3Ky?Ou$jm!0>xAOrw>^};O)v{!2@uPX@EORkZDRdI zcwl7<;v5}u*(DiZT>)4PV$$F046BF^Ycr$Dl3kDiY5`&b>)BuWWm*wkrcx{z`bcCf z6)Y?8Vs(V*e^59(jh(;o$I`$e;1GYht^sW#3{L7^o@&cx@dHQR0Idi;wjd>ilfpLQ zwvXI4Atfv;05kWbspzi+8LtOSenD@Sz+S}o0Tr0Y+IwBo2SF`>XB0Qe15I6j&qw$P z%>GJQS1*8P^bb`gu5)?A0~_J&aMm733Ck8Ly#X50W^D|9!pYBGV^PB*pwmY8nM#ca zE>DB8dZ88|_J7IgJlsZFJKrS&H&NcEh!2)szJ_822yh1i`73W=QzX?Ug7aqH7;2aT z8r&LrP+Yby%d$j}?kFM*Y;blsU-j%~WI&7`_`+$$O zI;r=9n_rcpKlRHvIl_7A<>6LfW3Lv0PX#nJb zz+=0xJUqmOSLq=4qVfUZpMU>`0&wCpdi$U3&;ar&?Xbi9;V;i{h8m1}(AWR~002ov JPDHLkV1ke!=|TVi literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/StoreLogo.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be865f0c378b74ecc9dc740f45452b9763e59917 GIT binary patch literal 1106 zcmV-Y1g-mtP)LZf|FOXf6EvNm$pnQ7pc6nR046AJ zg2DvQ0XXs|D4l?Gg0>4lC9D)bV<(oO7w#V4oz96ZEB>%7*#_W_JN^q=`pagsiLv;K zlEUp`h4MMevO=$XFqFQ)iNp_--*7v4L`hJ(C~cHXZ#0Q?wdVu9BlE_|pr_ElH(FI{ z>O^KmtJT_KL6RsNM;*< zxf+@zBPBt2sA{CnXf)G|5}8V)*q-k9`)(9PPxu;xiZBHzm!L?PWB(kkNTQaAFB$&$ z5M@LIM-rx)n9DB881)M*=O_z3AB2)1L_SJYZnj>pY4AIg39CP&^iVq3uT=`Zzvub| zs9Bn@ox!Cf2xexd-0^}2Qk$|P6b?YS4H206e4KX>)Njb7W}tFIEeT>yy8Pq(L#=D+ zu((%xrBm|rkfiB~PP}d?U{JewR-{A* zpnkP^Ss@|g5n^X-e+WW&6QPWaMU1=Sl^LOY$oS+5em~|J{@(S80G|PHcl^!PSVcyd z>~b!X!B#`i9;nH!Ci9wdJw_L^`fHx6zsYf2{wo1=JW(R_8hvv3VAb?~>I=;F* z*q%|{6DB)R2$syqFJE0=6HB9dDa;Q)1-hacIT~i4cfzu;J0Qz5&r!=7c1<9^1X;Q-dh>t~9 zaU8yg2;*!oBuRE2WcqA>0YXTL%z*bo^y>*T_7N^J97HCd67C#?5E0=)OhNr>6kdbQ z*fuh7x)PmAPMak{PKYyHkPCQy)b%Ez*)hq)D9>0whX90}5ZkyQ-)U8C5N2VcuZ|BP zhbn^fglMh_TKqA}4%^0c$x^pN`uO;rZ7tx!8%^(96xYJWdU~coO;ASozQU5W`h~v1 zWReNqLZ)zvPUK$nr_Ic;Uwflz!s}kEE;?!VROL~)4%GMT9?T~S2H$IWCc6UEj7<1s zm$H7FiIIN6vT`N6kh^9tB7u1#2jTX@=pRJJx!6NUTniz$Ggcx^k|-f1VgXID}tkx!s@xO65+;5P9B0avPb-0{}& Y7w}?(qQZ`_82|tP07*qoM6N<$g5HGdP5=M^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Wide310x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..314d297f20b765ee16ca15c4d3a066e0b7233c62 GIT binary patch literal 5843 zcmc&&i$Bxt`=78<6sg14t7=|2c-^zKp>H;SIn=2 zK>IKt5TDusFz_Z;ap5EIPbl!p&0rAdkoew@5A>|yB=C|i__~!TsJdTz7I+ZwHL*1T zfyfz$wr>dn&xb=SU?ENcw?o2j-Sq)k`uSpS6_In0AkYcBtL7#*?(uQiUxHYcJ$ycp@QqK@TN{XZ2 zh_ejYo^y<}SM<_waw@f+&&HC}@u2q|GeDk!g5#+*>6DHTSwRg&1vF_(JJ7XyNR?2*X_$Et=_8a(bGV$i@vosz_*-RUl|cS zT47$l{|gpmC5F+s&kbv)HA&Sao@oQc-r809PPAEFA#XC13Y|EYm;O}(bVthcKad)-E+>L^(6@xMKOW05gfdkOF{~?-`|`#J>kb1YL`3!)p@#? zzXvE}d3UE9uMpgSnbaYf4E=tE*s(1H)wxLTE=baXfjhtwr{!4gS*fU{N&5JwfEQDJ94nA(CTD>PSn1+L;hL zmVi(t>D^hKQXfr79m2`b@>7fwS>Q`+N{}!a913I!S(>g1h^9Oa-Kgu2~KkZ#euA>KAJxEQa^;}-DS5l!?3AZj;6 z=q}~jZK)n5RY+Nv*@kmgv1#kGAB=|=@7OIWF-p{dMPQQYE|x>p!;9;A_RkIf^1#bo zYuPy}AsZo%9+Z7;e(Oulo5)KsA67XdHF4Gpzl-p4NJ;YA-=TV*Z=Z?(15?57#xbH740*RvATI{?5K4fMFK9KeXUJ3>PK@t?c|HaR-2J3F7&CT_E3vFt6cPCu)47xJO{?bbN`X`=vy zh$zM(|C$B-=3;)0ZIsk-q(rku6eMn*0F7*;+-2W9T<`Byzr9At>sJYLdQne4RADP^ zLgdT$#vLrwXL`29?zBW#owX$0EtyWocy$#M#%QU@bLr9Sh202A$+@+^2&X5jmnX7+ zj~90v)gVM>+yw(ED{q^)y3<=LrjZce9N7_D;SB2B_sj<6vO5uyR=Lw&+_ z5*kJr^1L*(mff@TO4=jq8*=U)OC=0`U-%$G0p0#c0CL0sCrY)Gub|;xmjA%>)sti%QI|frOCgHqV-cGCsx6)z=!Pk3W6=r8wr-vMQs* zq}=>(6NPfCBa6X$G&`>;BdMotKSDxA>I)NKI7=ZY>Z4F8wss3Wab6j=9eSrnd4M~j z>F@ZqB1sFC=Z#CWJ&xtM)uBReaGiQpMq8A>*Yw1I8u-nNN9C0!wgal-cVEglBkB_-ELIto*KSOfT1#L2LqYFpYo~@ z3%HFey0DHjR^kCYS!_j8oguH~L;Uhw)c$l)%wYU6iILe4nJh?a5dj?-; zR&F_BIaVS9=nX=y`ZcXU1HOpuzoX8ylR+0=(9-+%<5rf4)Tz;uyJt0)*upL`Kd|*I zvr^7^w`6K?7qiIV>sWY&P#IMU3fkyY?`4HO{*^h$BG zxB+3iT+;&a%8a=Q|kP)xVc5c zcZnYR9TWlSPZBav%0IeL(d`ZSF+zCu;v|{Z;sP`Gy z(z^Cf2sp@efU_kp$he(=thD~J_phc?Ghv()a@)0l$xo#YazHGzt^aO?HFKlr#`%pF ztm_EuK;~n|s5d4)0P-kxjb=)4wi-$r%~|`9>dhHNe)LNTcifJt0M&J2wrlfsk<++4 zLT|+^7f*fI?WV21x%PMPbxI9?WeSknEOhQ>x%oiT=%jpZ3iZWa#AmtLoY9hV2_ip- zqITR?()tTnjb&8{u)f4?;Ss(YW+W32M$DP#8x0xxx~>%Gqv)H5sWd;X{NiD?2Y^LP zJ&PtWdo#V7s~<{nK89w8VhBaUK&0j*6N~EVYT68M1A|l7ccy$ghK~CEX?c;>b*4Q5 z$WR}yOvO*2dcorN*K$178mZ1nU2q0{0JQ> z<96+OYizGdyvoU2xJY885iJiWAfzR;bP2`*;*VP|KrFjg0;`E!Y1Iip{B3E@a!5_D zyAQ0wlw@MK=~=J~ITV(Ff=3fQJUn*BmlyZfNATqUsWE&dXPd9Vyd!s$e{Tb1Qd<(a zX5!{>TQVbD1mYmn0ZzX%jNDDOmKMWWGU6?cV%o1`rvi~i`zOBw7>{UX|Mt3p=qzt2 z#QC2z4xjbCb6oin;8XwAy&&V$482e0@MqtD!$G#9n0ADXD7x^KCDTYTy!8>|`DZnryX_kj8!*#|v+$0%bQUtmEt00aaow8KIH>C)+5fYZ>c{@xy8VsUj~< z7RaAps?~rpns!mAn2DY1O7SYdKAIoQ`Vc?tLIwexvtkLwNng0%Cf>dekh}|Pj`=nI z#MRZ+tLwe(ade?unfeZKD}jssv(1l>{k481Cb~U!+rkzA5ve~ys$UTDUS*Ouu4yIx zl|d25n(ox)R`C`EUyuHL;7?U~K>7Rg*~+Y!$SS96love|*+6E@AA`ADd_Rat%YML< zbt(2r2;>$n1qkCx%H!~uLr0zjAe8z6KL<;>3x;xWggA+Pm5JWCUUv_V)}OjQhL1R- z=K#$YmT=x!m7Lz0ox>+RaJ_*30C3_ef=qJpb^WGgSa!Inl+TVY$XN{IP)rk}&NVk= zHg>xC`q6U`m@62-=bnyDW7sT!5~-L4&3YI|O_8}Ypk^Ds*0lx+*NNW*K5&}Ig5m2p zI%SRBZocw#=wBgR=zqY$jSt>*k+QozPiEY_OcBZNr5!2JOAt}H6zCRW7|72kQ&VK< z1*cP2v|Q+IlkFkOH>^n}t%<~A2D5kQFS^`(@pLNNKLA`12DzLK>^TQ26GNzo4S&_O z|5|!oe?h5wMzshGlga*reAz0)rEMz(IY@4V4Q7_i$aka|a`fc|*;TU+mASw+h>Shu zj%Af$>N?$i4AEVxJvfC;c24Dw3@p8G0S82_t2<`J{;4gr*9A@tJtv8sX4W|m_?>`U zo(6meTtOMAD(IGdl0p|=GiULQRI>#fv;YXy_s-(_q}_-jhW5)~`CSwJdk0Qd0@ML2 zoSf#k^``D9x-i%RzFAPgZ#ClH3Qsi{)|97F-&_xW_cbGY%>%c`8?H2Nbqv0wdl_$=k=KI6E#WkO z?D3sgjV3S_xMlNJOn04x;qj#LjDzGg60)qSWg^N7H;SEFbOPD()Z$OX6yqll^}9?n z|M8ZHTHaKKv5Pz-a(Y4cp=)gTOv>Q=wykhnY_Y(gv;tWKzc z^+64gf%BPrtnMAaWy`*f+?BIg`?f_M=Z1B+CNG*p06O3!4%E%;d`&Za|3dbU(-XD` znI3WM-esP?2U@S$UQxLfSEIBOs+=XA`?P}w6wt5p@F-j&V0KUlft^?m+0LPLhhDlJ zaDy9Bkcj%jKi?<8w&V{_JV9jRb7#@5m@iD~wqXwXQ+L`cna%AKK-HJ;64HhkxqlTrv>=F)F}e^WU9i~nNh6%*5{DNr$n2gaEO-vwx|VriI>O_`(QkB$bUEkbg6*8;Coo&$ z;}ys+c?FEaOD6!R)2K1|G#A>8kymtE%3@K@l#gUY-{at7T6atVEV;7>XlKK2QSp8) za?X%o{%{3sJMA?HpW~^#b?TcNc-~lQTEI>L8mo*dUS5*=6bAz@7Pb=uF(tWY;7mJaKA2708;SitYhW77f5y0;pdzs z(;~S66}yU5lC%5xx4#*hh6iCGpzJ&|BDYT=W%ga_(Ix1qfKpFhRA1DqD*K4m!iNV2 zp#Yc6g9BfPJw+;osah|ekgfepo4U-4+R*J6y|ZNw0UC;qw;yyFYtt`>Lfm`KeWqpj z;G3p*pg5op=ZlBqSsXDuJBZkCYn>~6{r*mDg_JS93jfpzBM z*yj-~?4WE1_)uLZY|G(hNg$;8USH~d2AP$r9#FgJ?B3mmlt4wWGRMa6n^5*pNzFk7 zXz7ny*7TCw^0|7yn*x|wcMI4(#ak`x0j)tJOUj>df=xPkO;fR8zHiakM@mbsxW{YV zb?c)ndcjBs%2O_jN6@*r_5d~|?~-B420X>XkO%1C zRbV0$j7T?2f>u8D#z~5!)8v^YMtc(%VvsQX&&0(Hk$x5sKk~-qi=l0DN!>RS*jk^ z#%fOnrcN0>`wLVV4S8bpuy+ekjVIo?2r;z#=Oh%roeinu(s;sZ`@ebIQYo&Oe{}sC=qZ35 z;?@e-h%D^!c)C_zrWiDj@igyt>JiwR?SRRvpr^q6>hDXXBq6#bYrMyeR}b17#&r%I za`v=c51n&im|Pp*ozIQqZ-3za5BN+-czC#YGuOz4Z#A-QraLwv5Fi8nC3Ce@Jln{{ yOHd7d7^t+2t&o=9fIe%#|H + + + + + + + + + $projectname$ + $XmlEscapedPublisher$ + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj similarity index 59% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj index 3d82c137a9..764fe149c1 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj @@ -1,16 +1,17 @@ WinExe - $DotNetVersion$-windows10.0.19041.0 + $DotNetVersion$-windows10.0.26100.0 10.0.17763.0 $safeprojectname$ app.manifest x86;x64;ARM64 - win-x86;win-x64;win-arm64 - win-$(Platform).pubxml + win-$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant()) + win-$(Platform).pubxml true false true + enable enable @@ -26,6 +27,7 @@ + @@ -43,6 +45,26 @@ + + + + + + FileSystem + ARM64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + + \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x64.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000000..cd995617c0 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,14 @@ + + + + + FileSystem + x64 + win-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + + \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x86.pubxml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x86.pubxml new file mode 100644 index 0000000000..a70c69425f --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/PublishProfiles/win-x86.pubxml @@ -0,0 +1,14 @@ + + + + + FileSystem + x86 + win-x86 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + + \ No newline at end of file diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/launchSettings.json b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/launchSettings.json new file mode 100644 index 0000000000..e25cd6a4f8 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "$projectname$ (Package)": { + "commandName": "MsixPackage" + }, + "$projectname$ (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml.cs similarity index 90% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml.cs rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml.cs index b6eefff4f8..f403c53bbb 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml.cs +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestApp.xaml.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.ApplicationModel; +using Windows.ApplicationModel; using Windows.ApplicationModel.Activation; using Windows.Foundation; using Windows.Foundation.Collections; diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml.cs similarity index 81% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml.cs rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml.cs index b3db8f9eda..b4a66a02eb 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml.cs +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTestAppWindow.xaml.cs @@ -1,8 +1,3 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; using Windows.Foundation; using Windows.Foundation.Collections; using Microsoft.UI.Xaml; diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTests.cs b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTests.cs similarity index 88% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTests.cs rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTests.cs index 58f0b468f9..3963e7486e 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTests.cs +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/UnitTests.cs @@ -1,9 +1,6 @@ using Microsoft.UI.Xaml.Controls; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting.AppContainer; -using System; -using System.Collections.Generic; -using System.Linq; namespace $safeprojectname$; diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.csproj similarity index 98% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.csproj index 4d7748e3c7..173cdd8a37 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.csproj @@ -74,6 +74,7 @@ + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.png rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.vstemplate similarity index 96% rename from dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.vstemplate rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.vstemplate index 90cdd3a246..d5fb8f612a 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/WinUI.Desktop.Cs.UnitTestApp.vstemplate @@ -46,6 +46,7 @@ Square150x150Logo.scale-200.png Square44x44Logo.scale-200.png Square44x44Logo.targetsize-24_altform-unplated.png + Square44x44Logo.targetsize-48_altform-lightunplated.png StoreLogo.png Wide310x150Logo.scale-200.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/app.manifest b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/app.manifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/app.manifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/app.manifest diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.cpp b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.cpp rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.cpp diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.h b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.h similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.h rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.h diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.xaml new file mode 100644 index 0000000000..65073698c1 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.cpp b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.cpp rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.cpp diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.h b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.h similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.h rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.h diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.idl b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.idl similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.idl rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.idl diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.xaml similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.xaml rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/MainWindow.xaml diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj.filters b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj.filters similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj.filters rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/ProjectTemplate.vcxproj.filters diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.png rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.vstemplate similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.vstemplate rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/WinUI.Desktop.CppWinRT.BlankApp.vstemplate diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/app.manifest b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/app.manifest new file mode 100644 index 0000000000..0f7e64319f --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.cpp b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.cpp rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.cpp diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.h b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.h similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.h rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/pch.h diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/readme.txt b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/readme.txt similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/readme.txt rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/BlankApp/readme.txt diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/LockScreenLogo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..33f889e106984ab9d522a6fca51b036fe85d0ffb GIT binary patch literal 1090 zcmV-I1ikx-P)&b zxMup`R-qg+6mnXG?R5g=!vhZ{B%T$C3{J*#jNh1hW8OF6FkFY~o^r2s_a+uf+(H0QDRr*g(#0 zlNu*NgVilaJ32($r5Ipc0eTGq>2FnqRYZ%onM&!&F2sOn0qO#)x4-h+VnwvMO7&nI zW2AFM!LkCcUPp=kgDw$~e*VUvD+U$;2mI4^3}_Nz2vYZYjrMGoIB@7q(18`) zQrt#(_7TsHBodYtpqqP+>FBS77>@@azm)ewU?)=IKome^?cJ{BKfxk^USdC{qrc}9 z;>4cL6$Oicm6R^7b$LUBO$c_hwFilWML^+AP>UvSV~7(@e|9>H3KjvaKDx_Q#)v?B z7R=R&XaVZ~S19M}X%r+t0;-lsIsP@&xj^B#^HV1Us$-UFTSgFbmL==)$X7 zNFuNTbAO!hlpBMTl=3x)#pLu9d}}k-S<*o|0hI6fnd=xF>og^^vu0#(2J4*TRyvZ> zGqG-|LYy>{cKC+$gMCq$d2#O_;mx0=rl-+HT<2|c$-ii-d8O@@VKNw1M}mueyr4q^Y?K99ZS~GvB;sw9V6)LLn(_)H8ti+qJx5d;4Q9hrD=uhL6ovL*69u$^)}Bjr*$0tZfSyz5qg33VntAWsAl z+lB3+5ih(>`*SZV?-Bm`_ireG7N5)e|780HlFwv^9X<|!09gBj2F|(qf&c&j07*qo IM6N<$f=X5F2LJ#7 literal 0 HcmV?d00001 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/SplashScreen.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..802c79d6d7f4a181514f1cac16931cbfd654ea5d GIT binary patch literal 12625 zcmeHti9gj_^yrr2UWKAEt5lL3NgQQLnMy<%$}ID6jv*maG@IqhP=p3U19EgYmrU1K zhfHxCClQgMLnO-7TU+<{-sk-b@AG^<_x3s8z1O_<+H0@1B8^Vza&rlDA%wV39M?L7 z(Apk^)|~r;1HQcIw#?u*cRe*7OBx|c2pAK84*=pI7_Z$-!8$6A-821gMp zieJBUejWVgxu|{aqOq6r#enk{oRE&23+a4DQL+OPZWGT;PfyQ@-zK&JH59$x zxy)D!UMT))y>Kbi-@oKfl={aN?(mW9yyPK9yjyy1(FSC3`x>)wFSTML6S>~6=FliU zbIvlGX6W{OO?a|(&a{;)dzR@M5!5o4d}SrQAraZ>$!fy4qkGs8ci^{?md=YmW$F~e z_bSIv{Mt4=u8OjDIKN5VAWp6Zz;# z@%;*3l$Q!by8r`&pMml+)Ot|feJY2X*Uzc&XDB@CPa-mT#`HC?Vju9C4_JdtUh|zs zPv70&J}-?1_P4%$`_^VHGSRVP&r;r7AmdOf>MDf3ro7^1D(xkc)*xy7NGa6C@GKSB zQNZ@q@aKTYNo}^gI3d8AomMfYi>h;njkW1)C`s-bclgtb#dI`4II<3z)NKHE&(8^? z`LAIvE-q8-NcyWb(ooB2@Fuvu;zoMPu^;E!n!{YIfV>8fm+WuwPTsR;k3ep2?k^q` zR9;rLpl)3m|M63y-zH?l7W{(E=!R$Ds65B)$J$%8Qm=lVpUxZY{w|~X3)NcqhXtVO zQBaY4QPidgB3h2wOrJAjLt8e2KI(@ABbzwB%I$2V5MNfQpn=< zb_%%Lj`6en7foaI9oeaAdV>~oQYdQ;n9lUvzOA-8>$C{rOw-MDd2j&fKZxk-rUdQ* z=cIayJ}}P(+umz9vi~UO8WKh(ns)5rh8r2kzfKWR!6{JbMn?EQ{Ggj}z+#R)zpezC z%~w&win$i)hgWk{@7lLD+OKSB4A*m067tmtKgO0u=1CLh+F{vu?K#rz>l-=L-ZDG z+ZRc!evf%j1wzF@$QOL1+6O$Y83^fv7otWC6bwM70JH(C1r#y1iH__J0n9}$f}J#| zNH7^x#HmHd^256fVOM+vQR5k20Xj$tV7h^hocI-Pq<++q-2&60f+ndqnmFE_vSJUP z2BKeuBt(q<0_n!Vl+|K@fdm-xFou9#WH!o1I?9p-s_(Bgam2uR2wwn|cpCz9TQSfs z0Ai0IR<~iG6aeA{AWdL3%M*ZRx0Bf#B@5UzmVxZ(2}kxgZNNYP3`XHi9Cz@F3am(J zIkM|v7#V=s3j&>w-#S|RBPMM44M78xO{w`xtL`RN_uGkO4`ZC7XW zwQJ_nr%$$=RsO~r6W_ki?A9$Y2nfxr9LXH>@GP?}7e8hd3Szltf>^qeWCKfq4zr?Y zXWQKALn~aazY>p~-7s)^{`--iikq_zQvM@{TB5vEKU++)7hqmCbP#*UYzJZG#6Z3cT8&H_rKRomtEx zn9@8|PYmTQtsnbbmC={nP*}9yGcD^6(0h(HNWvCL^kcRfos1t!tj!{{&Ab(6xlG*u zYA^bAA8svDBRy5E2(zR$7nHKHF5tDog@Ci|KvL; zm6J&R%s%WeSl2Ncjv{p3)1)n`b>C+go}U^o-k1G(nV+eC6bv}V*MsbKNibi`Ek4Ok z*x4v8Me2&J?V0O6`X@dB`f1;Jk=(;c?rC11UDl3^>dyOa#CD}AdD%SX{S{%|Y_+bj zB&yG0SvP3OcKGvlXMK$F;5BZf<1A?z$azx3x91YkkkbAo^VYZ7bYjQ%z-Ho~Pr&Zq z2Es^dG}bjc{x$T7;eJFnfJ@5sTtmMLMaE$e43)|Y9wWVjtY*dIakkto{4B)9BMqJ- zo4+f^Tf3Iu8=pB1x){N#i;5u5`wDjd`@vntqW*j5r6dPtp#F7C0%C!NlU7M9?SN!# z|FLsvQBJ~zIU9R1`aKx^E^^=Vw4&r%iw`u~ihE~q%uUTS31I$P=Mmv;8HXbN+6_{xS7S_X}D(CeHJ3fr9|C4M{6CHYH#FAR2R7Z^-TC z-bS)$`-ghjR8m=dKkt^v4hL$Cb=I5s;UUjY@l|nir_5W5domtpj>%hR(l=v4wnH4t zV)Kn6dVP5H`m{_V#Z1B|&dtj~puOAe)w3PQufH~DarXPiBNNUXvO|Sm{e?-YA3nQ% z8veJ{BjOYo_(ka-C{H8kQCY0`*68|ScZzcFWhcrg;qnnZN7|`Vr`|S35d$+RJvS(( z?_^r_X*JTV$1Uk)#Oca1A+N(FYGVbqx_tznzDM{cgqKOrAI%Ox6_{U50b`}h8{3ah;+~xk=AV`0I9i^2Pe_D8d#}Dby z1q0#3b)NPiKQk8cRq7r{fiF^HA+&IN$dI#-Py1HZ{V2|ud6F4;ZRyv^p)sqJE6KOT z%R}790|l6s(S4Ww94s1S$;+E>z!|On3^BBgx>dr`=FBCEWvBAUbBd}ZD^U3G(|j$; zOozig-YZQfb$y8AMIQRN(8S(Fd4<5F_N**?Cu6B%nP z5(!Ot(5N7f(@Hxqc4NcuLowS2=@%pcGG>xk9x%K?rI=822 z37Sm#*t7H2^3tG}dAJp;ufOAC%Zj-GT*bX(x3GC&`W` zR_ti{!M_&lWud(@uOB%yyIR(Jz8;-1{&f`?R=tiHRxop%7}SdM zpb5T}^lv|Q&Z8;fq;5))iqq`t#$OtMOb)~fq zOWsVFYPaQ?cYkpM<PcV*oTmRqh!2m@Gbu7F<$3}8^8skN)C z%W&+%Cf&LJGTF=9jEu^{zNz^MHO{{b&PT`!0$aGpUP0AJw!z+vCY=-P4U~%Y^ZU^Y zNT|@^Q~NrHO*iN}KDxeXu$OZ2SLJcrMIVHUVX?Z|&xa))SLM|et3_B4{Hwrk#$zO9 zRxM_xmko`BQ=`CKHHM&C>5p)moM`m zyArtiQ=dHGRiv&@h%L|CSHMzZ*%+hh4UlljY4%lmn7*ZMVo(jTeMnQL^Sx_+n=|lD zu#U{5GZG?7PgDz>e!jR?V>q-9HLS9Caj`%x?oA|7)O~vaixCgzIF9W#mRxA9Wj-}@ zT#G;knI+%6SuDz5gHpM%!6Yg^w$kVY51$(d_dlN26pd^mc(K<}LZ&jbe>TlM4Q^pW z2XWFD@+tcPO=_aNxVYFrIAsU^2&hXd>7aC1|rWQ-i z$d;S-{1plM)vTv1@9C>p+V_TRvKcuagFTTG$xo8h8DE{a`1Y%>XeY$--Hh`H?o(Tq z|Gfv}8CyK?MwYwfI=lYCS+of=F7~c0S@x zDL2&(KYsikdih#YgY`Rj+H_P^#gRcn9j)dIS({K6A4X(Us_^nt%-vU0z1phbO${XX z7>{7xo_N+CPH|MNfGu_uqJqSmw>FDkDm_Y9oD*V2-igwA?!1qeX;g%Vo!wPz?o`!a zQqj3PF$S$uWmCN*Edq}sAAN4ING<+?=p}^s@u{qXm!4kW*N(Qd2%=*?_{(hncM0q6 z({biN<3CK0#U@`ZVM}wrK#8pC$-Ny7qL~p!~sL5@L{^dNlh;a za*J`T4@>Z*c8fiG_@A2~DU&$!>QMXzPLa*l!a@8ABpVB?`!nrla-&AfiH6`9Yr!#c z9({^Qow7#~OjZ3I1!9-B4ljwK>RlK$+isUanXS>Z&41~&bo|_xKNdN z1d@fMD1D~l-jKy>bK*0E?tz6g7Nc5hROV_pGIx>*wQp;`j*w}yjmj=E#mUo$rSXK0wcRF%aZvg^_dkqz>Rc$s$LN(C zq9#wZ``t;apWB7PCBg7*Sx;IqU>E7_Dq!3E*mTHdq~QzpcI}jo<@2h0cE7^^xZ^Y6 z&)9pbRH18Mgr`pScM9#7sin;<(4Ftb7q^N&!WWyJ%* ztlLdyoIb3~GIL_u=u}ZH56V)*8=TAgGIWJnR{4%SX;t1uld3(>iP{7)+s32b*G5*E zZrD)}+U+Df_2|egF{I&u`8pod87jVxN9lNir&ugM0W1|y@XcD5FdRqH?6)T zZpAD)a?R?S&9zbb4K*fm6C+O3D)_~jgIX9fys;5WYSX2A>hA{#5|-wJy|vky9%4>B zDlhamBVmZ68ti&9y!Ze8$Wgk9@n$1EO3J6_iqk{X1_dJ2`yy%$@D!=EY|77A*hG&q z*A@EAhD`9&mgBM9+^z*0O|!p#Lj;j`XF*b@48OH*7-k38cwDRPiw?!EtcV?yAos;n z{Wp6(s%pfG_~n^r735o?m%``u!nUzFf*7!~K&-`SHpO-^o*m`k>*{;4>PyZ9mj7Vy z^yAE6ey8Nf@qa3|+PSSlFV8kiFmXmCbLQcuITA;qt z2&q3moufEzC3)^Vdw3amk5MU~52^FM>!Dx?W*n7}K1rEZUnmAWNMrx+Gi&d(FFMEh z>)?EoWI^o1IzAF7n6MtRYdN({$BIzPl5{FaFt8G7QC=wK6+tH0tM&YXWs_1VWS*7t zo_NhPQf(uv7P!G#z0K~y-tx_Agqqk9K1LnIC%bWE*}r`G;DY5kWV9PgLy5|OoV|R& z%s8GnXd%|&QB=2&um}ugW6JOR%UR3Ly(=C82fKhR(`>CTTLJAEa0(OmqH`f)%Xe%1 zb&aC|)UUhUc1qI_g%9ELeyq=Vgf{v)lxzDMrkeh4a-_%ivAJU*+m=-?w6URgCxCI~ zq;p(z!QNi^x&)tmn;Xf*LU%jV*} znjRpi$G?(6(l3>EA|oi>0nD^y5dUn4o+Cf~Ub{+A${}k(B!xXi`FkioEBx9qcPyU@ zm)OM@{~ckbELsEI&Ae^Eb|MH;|U=E1P8llPUw*BVvA&*P&$}_Dc8xCZ& z1uLvLW@R6*+EojQG-~%tgIO1B{TS>s<~m_(mD7T`(DGN=X(2TUAd^6AROW0 ztT0QBrm$=d<=HG@EJ=2N9n-Va`9*Br73`y}@}4La2cYpY_G2kZQ#+p>0zv$wriCfk zt07<2uzuy15y7<+u*s}EhdL_0Q`DSam_B?62)dm3QT5~1Piri-r6Y)tAy+5BNkO^< zd$41U2gsy|Wr_|>l61cgAZ$<+0h^ZnLF6ac!4`x#z*=a7hlsBKg$oyE3)xV$EkJ}{ zv9h)f&6G{?aonaJLJe7*W6i_Tc8rWBnfmwv&IbvBr`B_<@&p7gS~2+Hj zhLFo)ktzOZunmby&A`>JNW+bt8z0wxNcY)LQk*vfF|&b z_no0-xQ=l8GlxSXMJ*xUn#n5BvMc5UXTy(`1>(cpV_t)YjZR`QdhZO*S3Rr>fbfp% zF>fAw >SMG_Fy=LzojipaqXqcM+*&6X5H#Z<^g+0vF-OD9&?Sp$P-l5V_ac9V) zUz6uD?|haf8STKXZZc>v>jpuq0gGe<`kq*|G8b0fgJXLll}86M zEU+;xL(Axc@(Vs!rH~1Jj0Q1oku;1~4e6)1kC*ZbD%|+H-fD#VysKR$b=9EbMUcp7 zg-w8*I1p9nHQOx`s9h#Q;IU@6jx84E!&&|tt5^EM->zK8$|HO)-l~xaCiWraa@_|`=Db8yes@j`==fRA&KsuvprepPz;q- zd+gl#^J(M9(w-SMSYfh+S9}R76>(wQD9Zw`vixS}rL?n6Di#v)&z* z*UoWjzD@O4Nnl+nqgzGtYn@yYLP#_LOH4bd)vp`&`M|-!-o6N;uJNbvgxRI%|6STi zw8a;sQcIfF)CsHdZ3!$Xy`@*Dc-Mta^+eUa3KAlD#S z!hak5@AO2EwVR|wMtL|z5_wZ5>s5^}3N2f6pf;Ra_xcDqEp6t94C7YQoE*FxRNtI~ zv<)u_pY{fZ);-ZZ0MAdKNaB3rWaBUd5W+&SDkMkv$XTw4Io;_E4>cL=mD4IIhu|x4 zx&iKw7JS9Z{8VV4Z|{%KZ?)&A-`q{^Gk8$TO+K@SlO3_+^&Nfk?R>>O7pzp`bs{~6 zHZnX@CTZWKys1Z{E~fN(h#^;8N@49)EFNxjy-g*^Ca}!3d0<;0U)Lv5bBQwQa-#&U)NA?by(=5$@^;;xD6d%B(61AHh1$ zp-K7n)I7am4j1ozt&;nbiZ5fZVij=pnPZFUm+jAjwx&_dloD7L33Q_XYK`Q7kOefU zN4*$KWJHuvRzWvAUF}~^!CJx2`{>NOO9I2miKa@?kOt6Vc3M86zqQ1^YYpD{GXGsn zim4KRF4v$%+Q?Q0SBB_4>$RwDA69wt)dpp*xArG%22RK5TX`^>B`lvXJklm98;}A% zjB`o%>Pz&8++vPfrQJNNRdTU#gjy0K|D}Rs^`QgL7?+~uL*4t}D!0fHWpq@O>8E^? zau}*y8$JgSK#qI=qZm>8<+v-69-RtZP4Fh!|L+&5f#8A#|LtQ96H-diEY)>|rW>@Z z(n_9am;8PtE(AFj!Xp)wCMUMr<=+kRAXwV1NbQnmQjGwP+oe!(`)WgsH(n}>*vUs9 zapFqI|60R=!LDO4ncXgROFg6!n{+C{P)4_8lH$E-Sam(JlLrq^z5Q=-&&(Ch!iRD` zqz}Sz#ND>*tNa%w*C2jepPRjtE>x^{^o!eOiGl>mR>p@{fr+;4&!lpDJh)KaHOzYA zV14<;K%wC!6ZG57Jov6Q7Jw>UJ!P)QxCSx?W{MSbBruG#V5xeR7z*MO{%L*b{o4 z`iYoi(ubz1hzp$Jj)unG=lVV?MR>f|j!ls1D>r=j<;epPXuRs<{!*t|(Ba zuh#|HjvlSU@x~g9pT3Cu#Hu&M5uqd#|0vzyj373#lOOS{H{JO5GG%g4ycj-?ErOg9|R61<6fF5 zYzw-*zR5{6o=R}gY<4`E(*KZn>1}1P!e%srTY^ygd8QUkPR1ok-FRZr`ug2!hW+2l z5pu@McTadN**>NzkMAj%KEke5a)vM#Tmj6OVWZ`WO1s-sN)}A>a%+_s2)nSMW}JW= zymPEx(z-HQInpEK%y0rL@PC)4?vBqn1dGEv_Q!L*olM_(S=5Y;aj=`Ug%YO>rZRU* zVC9EG*Xsk|-@boKUmdkhaWen!rjipw5FgC3-bc&JpKZR|d=_Bs*7pGMc9X}%Foy>}KfZ`nyS zld9vxu2Yi2qX-i&a3HH2FGml(Sv1RMk8=>yRew1I4Zfa2sPy3C%GV=j&z|kir8$Yx zAN8e_1&JCN1sGaq7sc#c`1-MSm|5yo#f!qRBCJHD3Rp6oKV(8%a@p3s3j8M7e=^XS zAgHHM`dmiN)W>**WVZR+Q+E}h zK-=zoEQ*LUaBV8abR&H(xrmv3wsB) z_K^oeQfnUNU2lRO6NcVkDoE$CJ}3Xi!2KLwkVpbFv~VH)E|d&0$F)Sl9M7pg#X?Vv zLJ8`3&&v660@c5XSaNs5Ip5kZ_qti}u2}+b+Z>Ng*luUVw7kh67GIR}AZ>}=#6Wg7 zAYtm2n?t=1mWd@#Q~v0%Ro|g7Md|K%PJzM|lG_G+>c2-mtXm2hjdICuOUajW&L+p6 zG7LJkO)Pz*vdQsKq4MA#QkVfweEf<3WuFb&8w42SZ`76PeIoa-%03_dJQFWCcfIZN z*oV-2Qy-!CA1;n*=iziTQI;H<(y%DlAirWk2ohI#5cSx91otIe~fUovVR5C<2`DyCOjsw6?l^H_~_ zFb=%l+lLr z{mc(|bBt&=Ib|%_Dtnr-yBSpJZHrZ+CF8?ttEnWW3F1ws{cZ`UwzM9N5$L{Pv?#mH z**mizdfUHyBx~P+laz%rW{4#L2jXzIaK=wav`aVl>WXOXWRbsX)vj4TC`UraCJC$* z`|NN53rg(YK5{zj6Y8_f@yXEPA)R%mBn7{mnT_DjQxN1Y4Kua1b`WZ=QpVS zd6x1ErZL5ivu)BV>d#m{U$#2y*2wH$FB+`Rxl|4`Z086lw{*Me0p4 z!=~X!a#32>oTUIW!{XRN;Lii&4|`YIu0{(6l=RwE=0X#}Z!^|rsX0udY_Blv*WrZ( z^8&>}jMd^rvWWHAMk~(j7&eV5)urdYI$1Nsdj0zKghSoEt$wXtZo-Bgd8CGZN&opT z%5l#vEtaI?cJ=vw#zQP|caO(^b}F0YiXID`&)^7e4}}cgIERl;7S-x#O>`+99u7I8 zttOt^mawxUer%EXctY7W%$-wSj?I4>EjcCThLCI(8 zP(ps%>#flCL~`p^`o+;xI}T=_{@#Mn=a%>G((2{M=L$rsMkY+ITF(C{JTvgxXPTM! zE3m2NoBea4o6h8<^YG3w#{W~Wf8!%FajfgCHMOajk$gJ0vF}i8=Hn@)*7P?uEK)$r zo}9|)D8B=wU%nw?<=6f!aLLPl!JkBnpZ_*1SQWA9?rRPt3N7?3Hsg4YTV>uwaeWOx zWrzzIweO^PPPM8=c>Y{itZ7Vp;QY#OlT4V`;fKTVRjNOz-NPA~2S+cowZa(}o?Y3F^LEwcqPyHA`1#N$YWtA&>8GT)u_<(@Step>jR?H-$=r zq0@4YRV`&&r9vt!^1Bac{-mT#*8HFGk|%f5kemd*owcA$=tt9S9V#>@&AF>oE(soq z7HTmokG%`Bg*roYIbKIOpWP_Yno}0j_q@cZtiWEWn57`KLzhB#v+|EuU}!z(z`Rg3VbE&>>%BY;i(xE1?N zm@(7n0|nsTw;)Vpq3>{12LQ-!A7EImWCm}fhpz%{1E5I&a^C?!)&N9h_u?fo%c9Xw{bh!;c6m$4fYG;XaV& zd*c;I4647v$|$gEg4Kv$Hpi^kb97TO({a|dVjsbDaQQZM3jnDA&>P6pQn`J&?J#aK-UjnNKUP=Z zd6=r|1H*41(CYA;+n{hY7HAX`BEu+UIpEF$m4u&wL6u32;TA?G3P9&!-z6v=hM#~j zuLaD*3Lux%v|^Xignf$``E{0mIhPN2R_YE3%d&Ki-y?n|`-U#nDcU7Nd2^5&=FeVj z2XIsvl56fo!0$cW9L`8}lTSzPcSuR6^M zpSC7xmlz<8b%5>Zi*x%{_=ljlIGOdZY0l;MSNCZ`!|npM_nNyCSl0i2Ixv#93t-ux zbO~lN1;ypnD?iA=6B?q2BL@KmJ4Q8|pNk0+24e@()?Otk=vd%{d) z%GiwY28YCkF=%JIA)_~vu}&L?U@SooEcxyeBuG8UZt0vTKM2M*|Ab0oUIT-{SbUMm zgEA9bR4v81Gz@@g_iw6bU@Mfc`nRlB(6XdqTy)}MpcwLIhnI04lutBbGqR`E(ZCb| zUX4aOLHXks5AwgdvSz@cwZ(=#O9#uK=an@x=DnXC`P<}FiO9l4=S$$V2YB-un>mD1 ziv!?-J!5M`6tdJ@|xFbLq+4@ z8CTjOd07z8;rg=NU=DZRrgd3DeIohWI(pV3<0O}7YM^k}NFgFp_&h%Depgn&Eo2+g zZ?G@ARMF?@i)TC)p!Az%eoUm=@s+`l#0`oc(zphq-=p6sd39%$3E8#A`W5{l`B(v- z11QT6#7XR^FERacO0;EX*oqU9OBQWiVOrCRRD>>)grv~_|NDPi0~#tT+uqjHkcG>) Rd16UVXrIz5IA(YCe*qp{r`G@g literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square150x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ddba42adbb45821d1123a424657ea248ad7a411e GIT binary patch literal 6357 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.targetsize-24_altform-unplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..e51416a8e42d483453d06da68f57aaa2c5db4671 GIT binary patch literal 574 zcmV-E0>S->P)D!2S5_J7ldulh3Kr$xyeFkPI7_d zdA`B>2VVEkh3Fo(61wVh&N8th;R#sKfm9ez&?)S-6|usQVq9a4$Wy({3^Vw zphDr%m8mNO1$s);V1kfmw{TFTYjzf3jMPH_D)6sNgGmedoAHL%o&}K9nd``Q&i`D6 zm!43A`v9_oZhakUgCOHn*3cjTIN%0i=LLB>)Bq{4DQ@wd4F-_N6=_b_LV-PpDSRM( zltjK$*w+UgEq55-w7HchQO=CFGWW|p^_;?CkMpjH_$->@HG#egU;^8N1GNI%hF6LE-sc{=N^MNf+#(=^ZVR_`JM)0Zh{x&phK0(*OVf M07*qoM6N<$f{>Q)_y7O^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.targetsize-48_altform-lightunplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000000000000000000000000000000000000..bf063eb4d6c4d14763d5d8ccca84c0f39fc6c350 GIT binary patch literal 1091 zcmV-J1ibr+P)%;e)Mb+oQkl#NdTRmo~A<(;gjdxkT%sBw>93j2n~5)+||jpL}EC7HA9`KV42*9;xWPn@+QXxK< zzDg^3Ky?Ou$jm!0>xAOrw>^};O)v{!2@uPX@EORkZDRdI zcwl7<;v5}u*(DiZT>)4PV$$F046BF^Ycr$Dl3kDiY5`&b>)BuWWm*wkrcx{z`bcCf z6)Y?8Vs(V*e^59(jh(;o$I`$e;1GYht^sW#3{L7^o@&cx@dHQR0Idi;wjd>ilfpLQ zwvXI4Atfv;05kWbspzi+8LtOSenD@Sz+S}o0Tr0Y+IwBo2SF`>XB0Qe15I6j&qw$P z%>GJQS1*8P^bb`gu5)?A0~_J&aMm733Ck8Ly#X50W^D|9!pYBGV^PB*pwmY8nM#ca zE>DB8dZ88|_J7IgJlsZFJKrS&H&NcEh!2)szJ_822yh1i`73W=QzX?Ug7aqH7;2aT z8r&LrP+Yby%d$j}?kFM*Y;blsU-j%~WI&7`_`+$$O zI;r=9n_rcpKlRHvIl_7A<>6LfW3Lv0PX#nJb zz+=0xJUqmOSLq=4qVfUZpMU>`0&wCpdi$U3&;ar&?Xbi9;V;i{h8m1}(AWR~002ov JPDHLkV1ke!=|TVi literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/StoreLogo.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be865f0c378b74ecc9dc740f45452b9763e59917 GIT binary patch literal 1106 zcmV-Y1g-mtP)LZf|FOXf6EvNm$pnQ7pc6nR046AJ zg2DvQ0XXs|D4l?Gg0>4lC9D)bV<(oO7w#V4oz96ZEB>%7*#_W_JN^q=`pagsiLv;K zlEUp`h4MMevO=$XFqFQ)iNp_--*7v4L`hJ(C~cHXZ#0Q?wdVu9BlE_|pr_ElH(FI{ z>O^KmtJT_KL6RsNM;*< zxf+@zBPBt2sA{CnXf)G|5}8V)*q-k9`)(9PPxu;xiZBHzm!L?PWB(kkNTQaAFB$&$ z5M@LIM-rx)n9DB881)M*=O_z3AB2)1L_SJYZnj>pY4AIg39CP&^iVq3uT=`Zzvub| zs9Bn@ox!Cf2xexd-0^}2Qk$|P6b?YS4H206e4KX>)Njb7W}tFIEeT>yy8Pq(L#=D+ zu((%xrBm|rkfiB~PP}d?U{JewR-{A* zpnkP^Ss@|g5n^X-e+WW&6QPWaMU1=Sl^LOY$oS+5em~|J{@(S80G|PHcl^!PSVcyd z>~b!X!B#`i9;nH!Ci9wdJw_L^`fHx6zsYf2{wo1=JW(R_8hvv3VAb?~>I=;F* z*q%|{6DB)R2$syqFJE0=6HB9dDa;Q)1-hacIT~i4cfzu;J0Qz5&r!=7c1<9^1X;Q-dh>t~9 zaU8yg2;*!oBuRE2WcqA>0YXTL%z*bo^y>*T_7N^J97HCd67C#?5E0=)OhNr>6kdbQ z*fuh7x)PmAPMak{PKYyHkPCQy)b%Ez*)hq)D9>0whX90}5ZkyQ-)U8C5N2VcuZ|BP zhbn^fglMh_TKqA}4%^0c$x^pN`uO;rZ7tx!8%^(96xYJWdU~coO;ASozQU5W`h~v1 zWReNqLZ)zvPUK$nr_Ic;Uwflz!s}kEE;?!VROL~)4%GMT9?T~S2H$IWCc6UEj7<1s zm$H7FiIIN6vT`N6kh^9tB7u1#2jTX@=pRJJx!6NUTniz$Ggcx^k|-f1VgXID}tkx!s@xO65+;5P9B0avPb-0{}& Y7w}?(qQZ`_82|tP07*qoM6N<$g5HGdP5=M^ literal 0 HcmV?d00001 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj similarity index 97% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj index 25d166c490..de6d40d79d 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj @@ -67,6 +67,7 @@ + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Wide310x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..314d297f20b765ee16ca15c4d3a066e0b7233c62 GIT binary patch literal 5843 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.scale-200.png Square44x44Logo.scale-200.png Square44x44Logo.targetsize-24_altform-unplated.png + Square44x44Logo.targetsize-48_altform-lightunplated.png StoreLogo.png Wide310x150Logo.scale-200.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.csproj similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.csproj diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.png rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.vstemplate similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.vstemplate rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.vstemplate diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.cpp b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.cpp rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.cpp diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.h b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.h similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.h rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.h diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.xaml new file mode 100644 index 0000000000..65073698c1 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..33f889e106984ab9d522a6fca51b036fe85d0ffb GIT binary patch literal 1090 zcmV-I1ikx-P)&b zxMup`R-qg+6mnXG?R5g=!vhZ{B%T$C3{J*#jNh1hW8OF6FkFY~o^r2s_a+uf+(H0QDRr*g(#0 zlNu*NgVilaJ32($r5Ipc0eTGq>2FnqRYZ%onM&!&F2sOn0qO#)x4-h+VnwvMO7&nI zW2AFM!LkCcUPp=kgDw$~e*VUvD+U$;2mI4^3}_Nz2vYZYjrMGoIB@7q(18`) zQrt#(_7TsHBodYtpqqP+>FBS77>@@azm)ewU?)=IKome^?cJ{BKfxk^USdC{qrc}9 z;>4cL6$Oicm6R^7b$LUBO$c_hwFilWML^+AP>UvSV~7(@e|9>H3KjvaKDx_Q#)v?B z7R=R&XaVZ~S19M}X%r+t0;-lsIsP@&xj^B#^HV1Us$-UFTSgFbmL==)$X7 zNFuNTbAO!hlpBMTl=3x)#pLu9d}}k-S<*o|0hI6fnd=xF>og^^vu0#(2J4*TRyvZ> zGqG-|LYy>{cKC+$gMCq$d2#O_;mx0=rl-+HT<2|c$-ii-d8O@@VKNw1M}mueyr4q^Y?K99ZS~GvB;sw9V6)LLn(_)H8ti+qJx5d;4Q9hrD=uhL6ovL*69u$^)}Bjr*$0tZfSyz5qg33VntAWsAl z+lB3+5ih(>`*SZV?-Bm`_ireG7N5)e|780HlFwv^9X<|!09gBj2F|(qf&c&j07*qo IM6N<$f=X5F2LJ#7 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..802c79d6d7f4a181514f1cac16931cbfd654ea5d GIT binary patch literal 12625 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 Rd16UVXrIz5IA(YCe*qp{r`G@g literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square150x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ddba42adbb45821d1123a424657ea248ad7a411e GIT binary patch literal 6357 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..e51416a8e42d483453d06da68f57aaa2c5db4671 GIT binary patch literal 574 zcmV-E0>S->P)D!2S5_J7ldulh3Kr$xyeFkPI7_d zdA`B>2VVEkh3Fo(61wVh&N8th;R#sKfm9ez&?)S-6|usQVq9a4$Wy({3^Vw zphDr%m8mNO1$s);V1kfmw{TFTYjzf3jMPH_D)6sNgGmedoAHL%o&}K9nd``Q&i`D6 zm!43A`v9_oZhakUgCOHn*3cjTIN%0i=LLB>)Bq{4DQ@wd4F-_N6=_b_LV-PpDSRM( zltjK$*w+UgEq55-w7HchQO=CFGWW|p^_;?CkMpjH_$->@HG#egU;^8N1GNI%hF6LE-sc{=N^MNf+#(=^ZVR_`JM)0Zh{x&phK0(*OVf M07*qoM6N<$f{>Q)_y7O^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000000000000000000000000000000000000..bf063eb4d6c4d14763d5d8ccca84c0f39fc6c350 GIT binary patch literal 1091 zcmV-J1ibr+P)%;e)Mb+oQkl#NdTRmo~A<(;gjdxkT%sBw>93j2n~5)+||jpL}EC7HA9`KV42*9;xWPn@+QXxK< zzDg^3Ky?Ou$jm!0>xAOrw>^};O)v{!2@uPX@EORkZDRdI zcwl7<;v5}u*(DiZT>)4PV$$F046BF^Ycr$Dl3kDiY5`&b>)BuWWm*wkrcx{z`bcCf z6)Y?8Vs(V*e^59(jh(;o$I`$e;1GYht^sW#3{L7^o@&cx@dHQR0Idi;wjd>ilfpLQ zwvXI4Atfv;05kWbspzi+8LtOSenD@Sz+S}o0Tr0Y+IwBo2SF`>XB0Qe15I6j&qw$P z%>GJQS1*8P^bb`gu5)?A0~_J&aMm733Ck8Ly#X50W^D|9!pYBGV^PB*pwmY8nM#ca zE>DB8dZ88|_J7IgJlsZFJKrS&H&NcEh!2)szJ_822yh1i`73W=QzX?Ug7aqH7;2aT z8r&LrP+Yby%d$j}?kFM*Y;blsU-j%~WI&7`_`+$$O zI;r=9n_rcpKlRHvIl_7A<>6LfW3Lv0PX#nJb zz+=0xJUqmOSLq=4qVfUZpMU>`0&wCpdi$U3&;ar&?Xbi9;V;i{h8m1}(AWR~002ov JPDHLkV1ke!=|TVi literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/StoreLogo.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be865f0c378b74ecc9dc740f45452b9763e59917 GIT binary patch literal 1106 zcmV-Y1g-mtP)LZf|FOXf6EvNm$pnQ7pc6nR046AJ zg2DvQ0XXs|D4l?Gg0>4lC9D)bV<(oO7w#V4oz96ZEB>%7*#_W_JN^q=`pagsiLv;K zlEUp`h4MMevO=$XFqFQ)iNp_--*7v4L`hJ(C~cHXZ#0Q?wdVu9BlE_|pr_ElH(FI{ z>O^KmtJT_KL6RsNM;*< zxf+@zBPBt2sA{CnXf)G|5}8V)*q-k9`)(9PPxu;xiZBHzm!L?PWB(kkNTQaAFB$&$ z5M@LIM-rx)n9DB881)M*=O_z3AB2)1L_SJYZnj>pY4AIg39CP&^iVq3uT=`Zzvub| zs9Bn@ox!Cf2xexd-0^}2Qk$|P6b?YS4H206e4KX>)Njb7W}tFIEeT>yy8Pq(L#=D+ zu((%xrBm|rkfiB~PP}d?U{JewR-{A* zpnkP^Ss@|g5n^X-e+WW&6QPWaMU1=Sl^LOY$oS+5em~|J{@(S80G|PHcl^!PSVcyd z>~b!X!B#`i9;nH!Ci9wdJw_L^`fHx6zsYf2{wo1=JW(R_8hvv3VAb?~>I=;F* z*q%|{6DB)R2$syqFJE0=6HB9dDa;Q)1-hacIT~i4cfzu;J0Qz5&r!=7c1<9^1X;Q-dh>t~9 zaU8yg2;*!oBuRE2WcqA>0YXTL%z*bo^y>*T_7N^J97HCd67C#?5E0=)OhNr>6kdbQ z*fuh7x)PmAPMak{PKYyHkPCQy)b%Ez*)hq)D9>0whX90}5ZkyQ-)U8C5N2VcuZ|BP zhbn^fglMh_TKqA}4%^0c$x^pN`uO;rZ7tx!8%^(96xYJWdU~coO;ASozQU5W`h~v1 zWReNqLZ)zvPUK$nr_Ic;Uwflz!s}kEE;?!VROL~)4%GMT9?T~S2H$IWCc6UEj7<1s zm$H7FiIIN6vT`N6kh^9tB7u1#2jTX@=pRJJx!6NUTniz$Ggcx^k|-f1VgXID}tkx!s@xO65+;5P9B0avPb-0{}& Y7w}?(qQZ`_82|tP07*qoM6N<$g5HGdP5=M^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Wide310x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..314d297f20b765ee16ca15c4d3a066e0b7233c62 GIT binary patch literal 5843 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 yOHd7d7^t+2t&o=9fIe%#|H + + + + + + + + + $projectname$ + $XmlEscapedPublisher$ + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj similarity index 98% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj index 4e5ed00a7d..295fe353b4 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj @@ -149,6 +149,7 @@ + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj.filters b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj.filters similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj.filters rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/ProjectTemplate.vcxproj.filters diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.csproj similarity index 98% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.csproj index 49a8b9786f..ead9f40aeb 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.csproj @@ -59,6 +59,7 @@ + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.png rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.vstemplate similarity index 96% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.vstemplate rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.vstemplate index d7d3d37f24..3f5e070d2d 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.vstemplate @@ -42,6 +42,7 @@ Square150x150Logo.scale-200.png Square44x44Logo.scale-200.png Square44x44Logo.targetsize-24_altform-unplated.png + Square44x44Logo.targetsize-48_altform-lightunplated.png StoreLogo.png Wide310x150Logo.scale-200.png diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/app.manifest b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/app.manifest new file mode 100644 index 0000000000..0f7e64319f --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.cpp b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.cpp rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.cpp diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.h b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.h similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.h rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/pch.h diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/readme.txt b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/readme.txt similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/readme.txt rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/readme.txt diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.cpp b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.cpp rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.cpp diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.h b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.h similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.h rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.h diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.xaml b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.xaml new file mode 100644 index 0000000000..65073698c1 --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/LockScreenLogo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..33f889e106984ab9d522a6fca51b036fe85d0ffb GIT binary patch literal 1090 zcmV-I1ikx-P)&b zxMup`R-qg+6mnXG?R5g=!vhZ{B%T$C3{J*#jNh1hW8OF6FkFY~o^r2s_a+uf+(H0QDRr*g(#0 zlNu*NgVilaJ32($r5Ipc0eTGq>2FnqRYZ%onM&!&F2sOn0qO#)x4-h+VnwvMO7&nI zW2AFM!LkCcUPp=kgDw$~e*VUvD+U$;2mI4^3}_Nz2vYZYjrMGoIB@7q(18`) zQrt#(_7TsHBodYtpqqP+>FBS77>@@azm)ewU?)=IKome^?cJ{BKfxk^USdC{qrc}9 z;>4cL6$Oicm6R^7b$LUBO$c_hwFilWML^+AP>UvSV~7(@e|9>H3KjvaKDx_Q#)v?B z7R=R&XaVZ~S19M}X%r+t0;-lsIsP@&xj^B#^HV1Us$-UFTSgFbmL==)$X7 zNFuNTbAO!hlpBMTl=3x)#pLu9d}}k-S<*o|0hI6fnd=xF>og^^vu0#(2J4*TRyvZ> zGqG-|LYy>{cKC+$gMCq$d2#O_;mx0=rl-+HT<2|c$-ii-d8O@@VKNw1M}mueyr4q^Y?K99ZS~GvB;sw9V6)LLn(_)H8ti+qJx5d;4Q9hrD=uhL6ovL*69u$^)}Bjr*$0tZfSyz5qg33VntAWsAl z+lB3+5ih(>`*SZV?-Bm`_ireG7N5)e|780HlFwv^9X<|!09gBj2F|(qf&c&j07*qo IM6N<$f=X5F2LJ#7 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/SplashScreen.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..802c79d6d7f4a181514f1cac16931cbfd654ea5d GIT binary patch literal 12625 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 Rd16UVXrIz5IA(YCe*qp{r`G@g literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square150x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ddba42adbb45821d1123a424657ea248ad7a411e GIT binary patch literal 6357 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 literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..e51416a8e42d483453d06da68f57aaa2c5db4671 GIT binary patch literal 574 zcmV-E0>S->P)D!2S5_J7ldulh3Kr$xyeFkPI7_d zdA`B>2VVEkh3Fo(61wVh&N8th;R#sKfm9ez&?)S-6|usQVq9a4$Wy({3^Vw zphDr%m8mNO1$s);V1kfmw{TFTYjzf3jMPH_D)6sNgGmedoAHL%o&}K9nd``Q&i`D6 zm!43A`v9_oZhakUgCOHn*3cjTIN%0i=LLB>)Bq{4DQ@wd4F-_N6=_b_LV-PpDSRM( zltjK$*w+UgEq55-w7HchQO=CFGWW|p^_;?CkMpjH_$->@HG#egU;^8N1GNI%hF6LE-sc{=N^MNf+#(=^ZVR_`JM)0Zh{x&phK0(*OVf M07*qoM6N<$f{>Q)_y7O^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.targetsize-48_altform-lightunplated.png new file mode 100644 index 0000000000000000000000000000000000000000..bf063eb4d6c4d14763d5d8ccca84c0f39fc6c350 GIT binary patch literal 1091 zcmV-J1ibr+P)%;e)Mb+oQkl#NdTRmo~A<(;gjdxkT%sBw>93j2n~5)+||jpL}EC7HA9`KV42*9;xWPn@+QXxK< zzDg^3Ky?Ou$jm!0>xAOrw>^};O)v{!2@uPX@EORkZDRdI zcwl7<;v5}u*(DiZT>)4PV$$F046BF^Ycr$Dl3kDiY5`&b>)BuWWm*wkrcx{z`bcCf z6)Y?8Vs(V*e^59(jh(;o$I`$e;1GYht^sW#3{L7^o@&cx@dHQR0Idi;wjd>ilfpLQ zwvXI4Atfv;05kWbspzi+8LtOSenD@Sz+S}o0Tr0Y+IwBo2SF`>XB0Qe15I6j&qw$P z%>GJQS1*8P^bb`gu5)?A0~_J&aMm733Ck8Ly#X50W^D|9!pYBGV^PB*pwmY8nM#ca zE>DB8dZ88|_J7IgJlsZFJKrS&H&NcEh!2)szJ_822yh1i`73W=QzX?Ug7aqH7;2aT z8r&LrP+Yby%d$j}?kFM*Y;blsU-j%~WI&7`_`+$$O zI;r=9n_rcpKlRHvIl_7A<>6LfW3Lv0PX#nJb zz+=0xJUqmOSLq=4qVfUZpMU>`0&wCpdi$U3&;ar&?Xbi9;V;i{h8m1}(AWR~002ov JPDHLkV1ke!=|TVi literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/StoreLogo.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..be865f0c378b74ecc9dc740f45452b9763e59917 GIT binary patch literal 1106 zcmV-Y1g-mtP)LZf|FOXf6EvNm$pnQ7pc6nR046AJ zg2DvQ0XXs|D4l?Gg0>4lC9D)bV<(oO7w#V4oz96ZEB>%7*#_W_JN^q=`pagsiLv;K zlEUp`h4MMevO=$XFqFQ)iNp_--*7v4L`hJ(C~cHXZ#0Q?wdVu9BlE_|pr_ElH(FI{ z>O^KmtJT_KL6RsNM;*< zxf+@zBPBt2sA{CnXf)G|5}8V)*q-k9`)(9PPxu;xiZBHzm!L?PWB(kkNTQaAFB$&$ z5M@LIM-rx)n9DB881)M*=O_z3AB2)1L_SJYZnj>pY4AIg39CP&^iVq3uT=`Zzvub| zs9Bn@ox!Cf2xexd-0^}2Qk$|P6b?YS4H206e4KX>)Njb7W}tFIEeT>yy8Pq(L#=D+ zu((%xrBm|rkfiB~PP}d?U{JewR-{A* zpnkP^Ss@|g5n^X-e+WW&6QPWaMU1=Sl^LOY$oS+5em~|J{@(S80G|PHcl^!PSVcyd z>~b!X!B#`i9;nH!Ci9wdJw_L^`fHx6zsYf2{wo1=JW(R_8hvv3VAb?~>I=;F* z*q%|{6DB)R2$syqFJE0=6HB9dDa;Q)1-hacIT~i4cfzu;J0Qz5&r!=7c1<9^1X;Q-dh>t~9 zaU8yg2;*!oBuRE2WcqA>0YXTL%z*bo^y>*T_7N^J97HCd67C#?5E0=)OhNr>6kdbQ z*fuh7x)PmAPMak{PKYyHkPCQy)b%Ez*)hq)D9>0whX90}5ZkyQ-)U8C5N2VcuZ|BP zhbn^fglMh_TKqA}4%^0c$x^pN`uO;rZ7tx!8%^(96xYJWdU~coO;ASozQU5W`h~v1 zWReNqLZ)zvPUK$nr_Ic;Uwflz!s}kEE;?!VROL~)4%GMT9?T~S2H$IWCc6UEj7<1s zm$H7FiIIN6vT`N6kh^9tB7u1#2jTX@=pRJJx!6NUTniz$Ggcx^k|-f1VgXID}tkx!s@xO65+;5P9B0avPb-0{}& Y7w}?(qQZ`_82|tP07*qoM6N<$g5HGdP5=M^ literal 0 HcmV?d00001 diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Wide310x150Logo.scale-200.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..314d297f20b765ee16ca15c4d3a066e0b7233c62 GIT binary patch literal 5843 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 yOHd7d7^t+2t&o=9fIe%#|H + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/ProjectTemplate.vcxproj.filters b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/ProjectTemplate.vcxproj.filters similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/ProjectTemplate.vcxproj.filters rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/ProjectTemplate.vcxproj.filters diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/UnitTests.cpp b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/UnitTests.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/UnitTests.cpp rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/UnitTests.cpp diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.csproj similarity index 98% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.csproj rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.csproj index c420157e2c..65c7a9ae5a 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.csproj @@ -59,6 +59,7 @@ + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.ico b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.ico rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.ico diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.png b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.png rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.png diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.vstemplate similarity index 96% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.vstemplate rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.vstemplate index f42e989a57..ff0b1c10bf 100644 --- a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/WinUI.Desktop.CppWinRT.UnitTestApp.vstemplate @@ -44,6 +44,7 @@ Square150x150Logo.scale-200.png Square44x44Logo.scale-200.png Square44x44Logo.targetsize-24_altform-unplated.png + Square44x44Logo.targetsize-48_altform-lightunplated.png StoreLogo.png Wide310x150Logo.scale-200.png diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/app.manifest b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/app.manifest new file mode 100644 index 0000000000..0f7e64319f --- /dev/null +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.cpp b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.cpp rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.cpp diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.h b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.h similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.h rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/pch.h diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/readme.txt b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/readme.txt similarity index 100% rename from dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/readme.txt rename to dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/readme.txt diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.cpp b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.cpp rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.cpp diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.h b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.h similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.h rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.h diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.idl b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.idl similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.idl rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/Class.idl diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj.filters b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj.filters similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj.filters rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/ProjectTemplate.vcxproj.filters diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/RuntimeComponent.def b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/RuntimeComponent.def similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/RuntimeComponent.def rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/RuntimeComponent.def diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.csproj b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.csproj similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.csproj rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.csproj diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.ico b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.ico similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.ico rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.ico diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.png b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.png similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.png rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.png diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.vstemplate b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.vstemplate similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.vstemplate rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/WinUI.Neutral.CppWinRT.RuntimeComponent.vstemplate diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.cpp b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.cpp similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.cpp rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.cpp diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.h b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.h similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.h rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/pch.h diff --git a/dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/readme.txt b/dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/readme.txt similarity index 100% rename from dev/VSIX/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/readme.txt rename to dev/Templates/Source/ProjectTemplates/Neutral/CppWinRT/RuntimeComponent/readme.txt diff --git a/dev/VSIX/Directory.Build.props b/dev/Templates/VSIX/Directory.Build.props similarity index 57% rename from dev/VSIX/Directory.Build.props rename to dev/Templates/VSIX/Directory.Build.props index fd28148549..e3a4539f9b 100644 --- a/dev/VSIX/Directory.Build.props +++ b/dev/Templates/VSIX/Directory.Build.props @@ -1,34 +1,22 @@ - + + - - 2.0.230706.1 - 10.0.26100.4654 - 1.0.220914.1 - - 1.0.0-preview1 - Standalone false - - true - + - $(MSBuildThisFileDirectory)..\..\ $(MSBuildThisFileDirectory) $(VSIXRootDir)Extension\ - $(VSIXRootDir)ItemTemplates\ - $(VSIXRootDir)ProjectTemplates\ Debug AnyCPU - false 17.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) true diff --git a/dev/VSIX/Extension/Cpp/Common/VSPackage.Designer.cs b/dev/Templates/VSIX/Extension/Cpp/Common/VSPackage.Designer.cs similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/VSPackage.Designer.cs rename to dev/Templates/VSIX/Extension/Cpp/Common/VSPackage.Designer.cs diff --git a/dev/VSIX/Extension/Cpp/Common/VSPackage.resx b/dev/Templates/VSIX/Extension/Cpp/Common/VSPackage.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/VSPackage.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/VSPackage.resx diff --git a/dev/VSIX/Extension/Cpp/Common/cs-CZ/VSPackage.cs-CZ.resx b/dev/Templates/VSIX/Extension/Cpp/Common/cs-CZ/VSPackage.cs-CZ.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/cs-CZ/VSPackage.cs-CZ.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/cs-CZ/VSPackage.cs-CZ.resx diff --git a/dev/VSIX/Extension/Cpp/Common/de-DE/VSPackage.de-DE.resx b/dev/Templates/VSIX/Extension/Cpp/Common/de-DE/VSPackage.de-DE.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/de-DE/VSPackage.de-DE.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/de-DE/VSPackage.de-DE.resx diff --git a/dev/VSIX/Extension/Cpp/Common/en-US/VSPackage.en-US.resx b/dev/Templates/VSIX/Extension/Cpp/Common/en-US/VSPackage.en-US.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/en-US/VSPackage.en-US.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/en-US/VSPackage.en-US.resx diff --git a/dev/VSIX/Extension/Cpp/Common/es-ES/VSPackage.es-ES.resx b/dev/Templates/VSIX/Extension/Cpp/Common/es-ES/VSPackage.es-ES.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/es-ES/VSPackage.es-ES.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/es-ES/VSPackage.es-ES.resx diff --git a/dev/VSIX/Extension/Cpp/Common/fr-FR/VSPackage.fr-FR.resx b/dev/Templates/VSIX/Extension/Cpp/Common/fr-FR/VSPackage.fr-FR.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/fr-FR/VSPackage.fr-FR.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/fr-FR/VSPackage.fr-FR.resx diff --git a/dev/VSIX/Extension/Cpp/Common/it-IT/VSPackage.it-IT.resx b/dev/Templates/VSIX/Extension/Cpp/Common/it-IT/VSPackage.it-IT.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/it-IT/VSPackage.it-IT.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/it-IT/VSPackage.it-IT.resx diff --git a/dev/VSIX/Extension/Cpp/Common/ja-JP/VSPackage.ja-JP.resx b/dev/Templates/VSIX/Extension/Cpp/Common/ja-JP/VSPackage.ja-JP.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/ja-JP/VSPackage.ja-JP.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/ja-JP/VSPackage.ja-JP.resx diff --git a/dev/VSIX/Extension/Cpp/Common/ko-KR/VSPackage.ko-KR.resx b/dev/Templates/VSIX/Extension/Cpp/Common/ko-KR/VSPackage.ko-KR.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/ko-KR/VSPackage.ko-KR.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/ko-KR/VSPackage.ko-KR.resx diff --git a/dev/VSIX/Extension/Cpp/Common/pl-PL/VSPackage.pl-PL.resx b/dev/Templates/VSIX/Extension/Cpp/Common/pl-PL/VSPackage.pl-PL.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/pl-PL/VSPackage.pl-PL.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/pl-PL/VSPackage.pl-PL.resx diff --git a/dev/VSIX/Extension/Cpp/Common/pt-BR/VSPackage.pt-BR.resx b/dev/Templates/VSIX/Extension/Cpp/Common/pt-BR/VSPackage.pt-BR.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/pt-BR/VSPackage.pt-BR.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/pt-BR/VSPackage.pt-BR.resx diff --git a/dev/VSIX/Extension/Cpp/Common/ru-RU/VSPackage.ru-RU.resx b/dev/Templates/VSIX/Extension/Cpp/Common/ru-RU/VSPackage.ru-RU.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/ru-RU/VSPackage.ru-RU.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/ru-RU/VSPackage.ru-RU.resx diff --git a/dev/VSIX/Extension/Cpp/Common/tr-TR/VSPackage.tr-TR.resx b/dev/Templates/VSIX/Extension/Cpp/Common/tr-TR/VSPackage.tr-TR.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/tr-TR/VSPackage.tr-TR.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/tr-TR/VSPackage.tr-TR.resx diff --git a/dev/VSIX/Extension/Cpp/Common/zh-CN/VSPackage.zh-CN.resx b/dev/Templates/VSIX/Extension/Cpp/Common/zh-CN/VSPackage.zh-CN.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/zh-CN/VSPackage.zh-CN.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/zh-CN/VSPackage.zh-CN.resx diff --git a/dev/VSIX/Extension/Cpp/Common/zh-TW/VSPackage.zh-TW.resx b/dev/Templates/VSIX/Extension/Cpp/Common/zh-TW/VSPackage.zh-TW.resx similarity index 100% rename from dev/VSIX/Extension/Cpp/Common/zh-TW/VSPackage.zh-TW.resx rename to dev/Templates/VSIX/Extension/Cpp/Common/zh-TW/VSPackage.zh-TW.resx diff --git a/dev/VSIX/Extension/Cpp/Dev17/Component/source.extension.vsixmanifest b/dev/Templates/VSIX/Extension/Cpp/Dev17/Component/source.extension.vsixmanifest similarity index 100% rename from dev/VSIX/Extension/Cpp/Dev17/Component/source.extension.vsixmanifest rename to dev/Templates/VSIX/Extension/Cpp/Dev17/Component/source.extension.vsixmanifest diff --git a/dev/VSIX/Extension/Cpp/Dev17/ExtensionPack.vsext b/dev/Templates/VSIX/Extension/Cpp/Dev17/ExtensionPack.vsext similarity index 100% rename from dev/VSIX/Extension/Cpp/Dev17/ExtensionPack.vsext rename to dev/Templates/VSIX/Extension/Cpp/Dev17/ExtensionPack.vsext diff --git a/dev/Templates/VSIX/Extension/Cpp/Dev17/LocalDev/source.extension.vsixmanifest b/dev/Templates/VSIX/Extension/Cpp/Dev17/LocalDev/source.extension.vsixmanifest new file mode 100644 index 0000000000..49c4398a9c --- /dev/null +++ b/dev/Templates/VSIX/Extension/Cpp/Dev17/LocalDev/source.extension.vsixmanifest @@ -0,0 +1,66 @@ + + + + + + Windows App SDK C++ VS Templates (LocalDev) + [LocalDev build] The Microsoft Windows App SDK Visual Studio extension adds C++ project and item templates to support building Windows apps and components in VS 2022-2026. This is a per-user dev-loop build that shadows any workload-shipped copy on the same machine. + https://github.com/microsoft/WindowsAppSDK/ + LICENSE + https://github.com/microsoft/WindowsAppSDK/ + https://github.com/microsoft/WindowsAppSDK/releases + WindowsAppSDK.png + WindowsAppSDK.png + WindowsAppSDK, WinAppSDK, WinUI, XAML, C++, C++/WinRT + + + + amd64 + + + amd64 + + + amd64 + + + arm64 + + + arm64 + + + arm64 + + + + + + + + + NuGet Package Manager + http://docs.microsoft.com/nuget/ + + + + + + + + + + + + + + + diff --git a/dev/VSIX/Extension/Cpp/Dev17/NuGetPackageList.cs b/dev/Templates/VSIX/Extension/Cpp/Dev17/NuGetPackageList.cs similarity index 100% rename from dev/VSIX/Extension/Cpp/Dev17/NuGetPackageList.cs rename to dev/Templates/VSIX/Extension/Cpp/Dev17/NuGetPackageList.cs diff --git a/dev/VSIX/Extension/Cpp/Dev17/Standalone/source.extension.vsixmanifest b/dev/Templates/VSIX/Extension/Cpp/Dev17/Standalone/source.extension.vsixmanifest similarity index 100% rename from dev/VSIX/Extension/Cpp/Dev17/Standalone/source.extension.vsixmanifest rename to dev/Templates/VSIX/Extension/Cpp/Dev17/Standalone/source.extension.vsixmanifest diff --git a/dev/VSIX/Extension/Cpp/Dev17/VSPackage.cs b/dev/Templates/VSIX/Extension/Cpp/Dev17/VSPackage.cs similarity index 100% rename from dev/VSIX/Extension/Cpp/Dev17/VSPackage.cs rename to dev/Templates/VSIX/Extension/Cpp/Dev17/VSPackage.cs diff --git a/dev/VSIX/Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj b/dev/Templates/VSIX/Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj similarity index 100% rename from dev/VSIX/Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj rename to dev/Templates/VSIX/Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj diff --git a/dev/VSIX/Extension/Cs/Common/VSPackage.Designer.cs b/dev/Templates/VSIX/Extension/Cs/Common/VSPackage.Designer.cs similarity index 89% rename from dev/VSIX/Extension/Cs/Common/VSPackage.Designer.cs rename to dev/Templates/VSIX/Extension/Cs/Common/VSPackage.Designer.cs index 1167253e0d..545d4e3a50 100644 --- a/dev/VSIX/Extension/Cs/Common/VSPackage.Designer.cs +++ b/dev/Templates/VSIX/Extension/Cs/Common/VSPackage.Designer.cs @@ -467,5 +467,59 @@ internal static string _1054 { return ResourceManager.GetString("1054", resourceCulture); } } + + /// + /// Looks up a localized string similar to WinUI TabView App. + /// + internal static string _1055 { + get { + return ResourceManager.GetString("1055", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [Experimental] WinUI TabView App. + /// + internal static string _1056 { + get { + return ResourceManager.GetString("1056", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to A project template for creating a WinUI app with a TabView control for tabbed navigation.. + /// + internal static string _1057 { + get { + return ResourceManager.GetString("1057", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to WinUI Navigation App. + /// + internal static string _1059 { + get { + return ResourceManager.GetString("1059", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to [Experimental] WinUI Navigation App. + /// + internal static string _1060 { + get { + return ResourceManager.GetString("1060", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to A project template for creating a WinUI app with a NavigationView control for page navigation.. + /// + internal static string _1061 { + get { + return ResourceManager.GetString("1061", resourceCulture); + } + } } } diff --git a/dev/VSIX/Extension/Cs/Common/VSPackage.resx b/dev/Templates/VSIX/Extension/Cs/Common/VSPackage.resx similarity index 90% rename from dev/VSIX/Extension/Cs/Common/VSPackage.resx rename to dev/Templates/VSIX/Extension/Cs/Common/VSPackage.resx index 7ceb082481..9fa8cce5f3 100644 --- a/dev/VSIX/Extension/Cs/Common/VSPackage.resx +++ b/dev/Templates/VSIX/Extension/Cs/Common/VSPackage.resx @@ -252,4 +252,31 @@ No output information available. + + WinUI TabView App + + + [Experimental] WinUI TabView App + + + A project template for creating a WinUI app with a TabView control for tabbed navigation. + + + WinUI Navigation App + + + [Experimental] WinUI Navigation App + + + A project template for creating a WinUI app with a NavigationView control for page navigation. + + + WinUI MVVM App + + + [Experimental] WinUI MVVM App + + + A project template for creating a WinUI app structured with the MVVM pattern using the CommunityToolkit.Mvvm package. + \ No newline at end of file diff --git a/dev/VSIX/Extension/Cs/Common/cs-CZ/VSPackage.cs-CZ.resx b/dev/Templates/VSIX/Extension/Cs/Common/cs-CZ/VSPackage.cs-CZ.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/cs-CZ/VSPackage.cs-CZ.resx rename to dev/Templates/VSIX/Extension/Cs/Common/cs-CZ/VSPackage.cs-CZ.resx diff --git a/dev/VSIX/Extension/Cs/Common/de-DE/VSPackage.de-DE.resx b/dev/Templates/VSIX/Extension/Cs/Common/de-DE/VSPackage.de-DE.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/de-DE/VSPackage.de-DE.resx rename to dev/Templates/VSIX/Extension/Cs/Common/de-DE/VSPackage.de-DE.resx diff --git a/dev/VSIX/Extension/Cs/Common/en-US/VSPackage.en-US.resx b/dev/Templates/VSIX/Extension/Cs/Common/en-US/VSPackage.en-US.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/en-US/VSPackage.en-US.resx rename to dev/Templates/VSIX/Extension/Cs/Common/en-US/VSPackage.en-US.resx diff --git a/dev/VSIX/Extension/Cs/Common/es-ES/VSPackage.es-ES.resx b/dev/Templates/VSIX/Extension/Cs/Common/es-ES/VSPackage.es-ES.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/es-ES/VSPackage.es-ES.resx rename to dev/Templates/VSIX/Extension/Cs/Common/es-ES/VSPackage.es-ES.resx diff --git a/dev/VSIX/Extension/Cs/Common/fr-FR/VSPackage.fr-FR.resx b/dev/Templates/VSIX/Extension/Cs/Common/fr-FR/VSPackage.fr-FR.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/fr-FR/VSPackage.fr-FR.resx rename to dev/Templates/VSIX/Extension/Cs/Common/fr-FR/VSPackage.fr-FR.resx diff --git a/dev/VSIX/Extension/Cs/Common/it-IT/VSPackage.it-IT.resx b/dev/Templates/VSIX/Extension/Cs/Common/it-IT/VSPackage.it-IT.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/it-IT/VSPackage.it-IT.resx rename to dev/Templates/VSIX/Extension/Cs/Common/it-IT/VSPackage.it-IT.resx diff --git a/dev/VSIX/Extension/Cs/Common/ja-JP/VSPackage.ja-JP.resx b/dev/Templates/VSIX/Extension/Cs/Common/ja-JP/VSPackage.ja-JP.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/ja-JP/VSPackage.ja-JP.resx rename to dev/Templates/VSIX/Extension/Cs/Common/ja-JP/VSPackage.ja-JP.resx diff --git a/dev/VSIX/Extension/Cs/Common/ko-KR/VSPackage.ko-KR.resx b/dev/Templates/VSIX/Extension/Cs/Common/ko-KR/VSPackage.ko-KR.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/ko-KR/VSPackage.ko-KR.resx rename to dev/Templates/VSIX/Extension/Cs/Common/ko-KR/VSPackage.ko-KR.resx diff --git a/dev/VSIX/Extension/Cs/Common/pl-PL/VSPackage.pl-PL.resx b/dev/Templates/VSIX/Extension/Cs/Common/pl-PL/VSPackage.pl-PL.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/pl-PL/VSPackage.pl-PL.resx rename to dev/Templates/VSIX/Extension/Cs/Common/pl-PL/VSPackage.pl-PL.resx diff --git a/dev/VSIX/Extension/Cs/Common/pt-BR/VSPackage.pt-BR.resx b/dev/Templates/VSIX/Extension/Cs/Common/pt-BR/VSPackage.pt-BR.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/pt-BR/VSPackage.pt-BR.resx rename to dev/Templates/VSIX/Extension/Cs/Common/pt-BR/VSPackage.pt-BR.resx diff --git a/dev/VSIX/Extension/Cs/Common/ru-RU/VSPackage.ru-RU.resx b/dev/Templates/VSIX/Extension/Cs/Common/ru-RU/VSPackage.ru-RU.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/ru-RU/VSPackage.ru-RU.resx rename to dev/Templates/VSIX/Extension/Cs/Common/ru-RU/VSPackage.ru-RU.resx diff --git a/dev/VSIX/Extension/Cs/Common/tr-TR/VSPackage.tr-TR.resx b/dev/Templates/VSIX/Extension/Cs/Common/tr-TR/VSPackage.tr-TR.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/tr-TR/VSPackage.tr-TR.resx rename to dev/Templates/VSIX/Extension/Cs/Common/tr-TR/VSPackage.tr-TR.resx diff --git a/dev/VSIX/Extension/Cs/Common/zh-CN/VSPackage.zh-CN.resx b/dev/Templates/VSIX/Extension/Cs/Common/zh-CN/VSPackage.zh-CN.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/zh-CN/VSPackage.zh-CN.resx rename to dev/Templates/VSIX/Extension/Cs/Common/zh-CN/VSPackage.zh-CN.resx diff --git a/dev/VSIX/Extension/Cs/Common/zh-TW/VSPackage.zh-TW.resx b/dev/Templates/VSIX/Extension/Cs/Common/zh-TW/VSPackage.zh-TW.resx similarity index 100% rename from dev/VSIX/Extension/Cs/Common/zh-TW/VSPackage.zh-TW.resx rename to dev/Templates/VSIX/Extension/Cs/Common/zh-TW/VSPackage.zh-TW.resx diff --git a/dev/VSIX/Extension/Cs/Dev17/Component/source.extension.vsixmanifest b/dev/Templates/VSIX/Extension/Cs/Dev17/Component/source.extension.vsixmanifest similarity index 77% rename from dev/VSIX/Extension/Cs/Dev17/Component/source.extension.vsixmanifest rename to dev/Templates/VSIX/Extension/Cs/Dev17/Component/source.extension.vsixmanifest index 1fb52bfa2e..1749810bc6 100644 --- a/dev/VSIX/Extension/Cs/Dev17/Component/source.extension.vsixmanifest +++ b/dev/Templates/VSIX/Extension/Cs/Dev17/Component/source.extension.vsixmanifest @@ -52,8 +52,14 @@ - + + + + + + + \ No newline at end of file diff --git a/dev/VSIX/Extension/Cs/Dev17/ExtensionPack.vsext b/dev/Templates/VSIX/Extension/Cs/Dev17/ExtensionPack.vsext similarity index 100% rename from dev/VSIX/Extension/Cs/Dev17/ExtensionPack.vsext rename to dev/Templates/VSIX/Extension/Cs/Dev17/ExtensionPack.vsext diff --git a/dev/Templates/VSIX/Extension/Cs/Dev17/LocalDev/source.extension.vsixmanifest b/dev/Templates/VSIX/Extension/Cs/Dev17/LocalDev/source.extension.vsixmanifest new file mode 100644 index 0000000000..ad1d752118 --- /dev/null +++ b/dev/Templates/VSIX/Extension/Cs/Dev17/LocalDev/source.extension.vsixmanifest @@ -0,0 +1,109 @@ + + + + + + Windows App SDK C# VS Templates (LocalDev) + [LocalDev build] The Microsoft Windows App SDK Visual Studio extension adds C# project and item templates to support building Windows apps and components in VS 2022-2026. This is a per-user dev-loop build that shadows any workload-shipped copy on the same machine. + https://github.com/microsoft/WindowsAppSDK/ + LICENSE + https://github.com/microsoft/WindowsAppSDK/ + https://github.com/microsoft/WindowsAppSDK/releases + WindowsAppSDK.png + WindowsAppSDK.png + WindowsAppSDK, WinAppSDK, WinUI, XAML, C#, Managed + + + + amd64 + + + amd64 + + + amd64 + + + arm64 + + + arm64 + + + arm64 + + + + + + + + + + + NuGet Package Manager + http://docs.microsoft.com/nuget/ + + + + + + + + + + + + + + + + + + + + + diff --git a/dev/VSIX/Extension/Cs/Dev17/Standalone/source.extension.vsixmanifest b/dev/Templates/VSIX/Extension/Cs/Dev17/Standalone/source.extension.vsixmanifest similarity index 78% rename from dev/VSIX/Extension/Cs/Dev17/Standalone/source.extension.vsixmanifest rename to dev/Templates/VSIX/Extension/Cs/Dev17/Standalone/source.extension.vsixmanifest index bcda1fcae6..9b706ee653 100644 --- a/dev/VSIX/Extension/Cs/Dev17/Standalone/source.extension.vsixmanifest +++ b/dev/Templates/VSIX/Extension/Cs/Dev17/Standalone/source.extension.vsixmanifest @@ -52,8 +52,14 @@ - + + + + + + + diff --git a/dev/VSIX/Extension/Cs/Dev17/VSPackage.cs b/dev/Templates/VSIX/Extension/Cs/Dev17/VSPackage.cs similarity index 100% rename from dev/VSIX/Extension/Cs/Dev17/VSPackage.cs rename to dev/Templates/VSIX/Extension/Cs/Dev17/VSPackage.cs diff --git a/dev/VSIX/Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj b/dev/Templates/VSIX/Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj similarity index 67% rename from dev/VSIX/Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj rename to dev/Templates/VSIX/Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj index 39348a4bd3..149c56638a 100644 --- a/dev/VSIX/Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj +++ b/dev/Templates/VSIX/Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj @@ -1,5 +1,7 @@  + + 2.0 {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} @@ -27,8 +29,8 @@ true {B0F1BA01-DE66-4EF9-9C8B-DBB99FB4DA4B} - - net8.0 + + net10.0 @@ -86,74 +88,27 @@ + - - {9DE11F03-73A8-4DCA-88B3-1623A718DFD1} - WinUI.Desktop.Cs.BlankWindow - ItemTemplates - false - TemplateProjectOutputGroup%3b - - - {C8DA9E71-2F7F-4E7C-8DC7-766FF0F67196} - WinUI.Neutral.Cs.ResourceDictionary - ItemTemplates - false - TemplateProjectOutputGroup%3b - - - {17320A27-C039-4973-95AA-ACB3EFA1D47E} - WinUI.Neutral.Cs.Resw - ItemTemplates - false - TemplateProjectOutputGroup%3b - - - {F19716E6-41A1-4320-A819-288172CE161C} - WinUI.Neutral.Cs.UserControl - ItemTemplates - false - TemplateProjectOutputGroup%3b - - - {2d9bd73d-5a5e-4113-aea9-53d059a79a41} - WinUI.Neutral.Cs.BlankPage - ItemTemplates - false - TemplateProjectOutputGroup%3b - - - {2C5873D8-E908-41F2-B861-80F95280FBCA} - WinUI.Neutral.Cs.TemplatedControl - ItemTemplates - false - TemplateProjectOutputGroup%3b - - - {33783A04-0CB4-4CE5-A9FE-82E2E7E06D1F} - WinUI.Desktop.Cs.ClassLibrary + + %(BaseName) ProjectTemplates false TemplateProjectOutputGroup%3b - - {938DD23E-270E-488B-AC4C-CA68A545A8F2} - WinUI.Desktop.Cs.PackagedApp - ProjectTemplates - false - TemplateProjectOutputGroup%3b - - - {D9C038B7-6A62-4945-A030-4AC7597F53CA} - WinUI.Desktop.Cs.SingleProjectPackagedApp - ProjectTemplates - false - TemplateProjectOutputGroup%3b - - - {45777B9F-9CC1-47D7-BD66-C3C194277902} - WinUI.Desktop.Cs.UnitTestApp - ProjectTemplates + + + %(BaseName) + ItemTemplates false TemplateProjectOutputGroup%3b diff --git a/dev/VSIX/Extension/Directory.Build.targets b/dev/Templates/VSIX/Extension/Directory.Build.targets similarity index 100% rename from dev/VSIX/Extension/Directory.Build.targets rename to dev/Templates/VSIX/Extension/Directory.Build.targets diff --git a/dev/VSIX/Extension/LICENSE b/dev/Templates/VSIX/Extension/LICENSE similarity index 100% rename from dev/VSIX/Extension/LICENSE rename to dev/Templates/VSIX/Extension/LICENSE diff --git a/dev/VSIX/Extension/WindowsAppSDK.png b/dev/Templates/VSIX/Extension/WindowsAppSDK.png similarity index 100% rename from dev/VSIX/Extension/WindowsAppSDK.png rename to dev/Templates/VSIX/Extension/WindowsAppSDK.png diff --git a/dev/VSIX/Shared/OutputWindowHelper.cs b/dev/Templates/VSIX/Shared/OutputWindowHelper.cs similarity index 97% rename from dev/VSIX/Shared/OutputWindowHelper.cs rename to dev/Templates/VSIX/Shared/OutputWindowHelper.cs index 631469130d..517da9f35b 100644 --- a/dev/VSIX/Shared/OutputWindowHelper.cs +++ b/dev/Templates/VSIX/Shared/OutputWindowHelper.cs @@ -7,7 +7,7 @@ // Although the strings are the same in the wizard for both extensions, // they are included with both their respective VSPackages. -// Strings for both extensions can be found in {PathToWindowsAppSDK}\dev\VSIX\Extension\Cs\Common\VSPackage.resx +// Strings for both extensions can be found in {PathToWindowsAppSDK}\dev\Templates\VSIX\Extension\Cs\Common\VSPackage.resx // Wizard strings are numbers 1044 and above. #if CSHARP_EXTENSION using Resources = WindowsAppSDK.Cs.Extension.Dev17.VSPackage; diff --git a/dev/VSIX/Shared/WizardImplementation.cs b/dev/Templates/VSIX/Shared/WizardImplementation.cs similarity index 99% rename from dev/VSIX/Shared/WizardImplementation.cs rename to dev/Templates/VSIX/Shared/WizardImplementation.cs index 58f11c0d46..9efc116f77 100644 --- a/dev/VSIX/Shared/WizardImplementation.cs +++ b/dev/Templates/VSIX/Shared/WizardImplementation.cs @@ -18,7 +18,7 @@ // Although the strings are the same in the wizard for both extensions, // they are included with both their respective VSPackages. -// Strings for both extensions can be found in {PathToWindowsAppSDK}\dev\VSIX\Extension\Cs\Common\VSPackage.resx +// Strings for both extensions can be found in {PathToWindowsAppSDK}\dev\Templates\VSIX\Extension\Cs\Common\VSPackage.resx // Wizard strings are numbers 1044 and above. #if CSHARP_EXTENSION using Resources = WindowsAppSDK.Cs.Extension.Dev17.VSPackage; diff --git a/dev/VSIX/Shared/WizardInfoBarEvents.cs b/dev/Templates/VSIX/Shared/WizardInfoBarEvents.cs similarity index 100% rename from dev/VSIX/Shared/WizardInfoBarEvents.cs rename to dev/Templates/VSIX/Shared/WizardInfoBarEvents.cs diff --git a/dev/VSIX/WindowsAppSDK.Extension.sln b/dev/Templates/VSIX/WindowsAppSDK.Extension.sln similarity index 69% rename from dev/VSIX/WindowsAppSDK.Extension.sln rename to dev/Templates/VSIX/WindowsAppSDK.Extension.sln index d74763eb35..4b5f35d0ea 100644 --- a/dev/VSIX/WindowsAppSDK.Extension.sln +++ b/dev/Templates/VSIX/WindowsAppSDK.Extension.sln @@ -1,11 +1,13 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.0.31619.372 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.BlankPage", "ItemTemplates\Neutral\CSharp\BlankPage\WinUI.Neutral.Cs.BlankPage.csproj", "{2D9BD73D-5A5E-4113-AEA9-53D059A79A41}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.BlankPage", "..\Source\ItemTemplates\Neutral\CSharp\BlankPage\WinUI.Neutral.Cs.BlankPage.csproj", "{2D9BD73D-5A5E-4113-AEA9-53D059A79A41}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.UserControl", "ItemTemplates\Neutral\CSharp\UserControl\WinUI.Neutral.Cs.UserControl.csproj", "{F19716E6-41A1-4320-A819-288172CE161C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.UserControl", "..\Source\ItemTemplates\Neutral\CSharp\UserControl\WinUI.Neutral.Cs.UserControl.csproj", "{F19716E6-41A1-4320-A819-288172CE161C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.ContentDialog", "..\Source\ItemTemplates\Neutral\CSharp\ContentDialog\WinUI.Neutral.Cs.ContentDialog.csproj", "{E5209752-4CE6-413B-B3BE-61E33C106A5E}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ProjectTemplates", "ProjectTemplates", "{34272930-CFC7-4E33-9DB9-88E82AE2C046}" EndProject @@ -21,21 +23,21 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CppWinRT", "CppWinRT", "{CD EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CppWinRT", "CppWinRT", "{1F0ED7C6-3679-4288-9CEA-7B30437D3FA6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.BlankPage", "ItemTemplates\Neutral\CppWinRT\BlankPage\WinUI.Neutral.CppWinRT.BlankPage.csproj", "{1E071372-7CB7-47BC-9BA2-8235F9BB09C8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.BlankPage", "..\Source\ItemTemplates\Neutral\CppWinRT\BlankPage\WinUI.Neutral.CppWinRT.BlankPage.csproj", "{1E071372-7CB7-47BC-9BA2-8235F9BB09C8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.UserControl", "ItemTemplates\Neutral\CppWinRT\UserControl\WinUI.Neutral.CppWinRT.UserControl.csproj", "{99C19C7C-6472-44F6-89E2-389AB6534F42}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.UserControl", "..\Source\ItemTemplates\Neutral\CppWinRT\UserControl\WinUI.Neutral.CppWinRT.UserControl.csproj", "{99C19C7C-6472-44F6-89E2-389AB6534F42}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.TemplatedControl", "ItemTemplates\Neutral\CSharp\TemplatedControl\WinUI.Neutral.Cs.TemplatedControl.csproj", "{2C5873D8-E908-41F2-B861-80F95280FBCA}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.TemplatedControl", "..\Source\ItemTemplates\Neutral\CSharp\TemplatedControl\WinUI.Neutral.Cs.TemplatedControl.csproj", "{2C5873D8-E908-41F2-B861-80F95280FBCA}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Desktop", "Desktop", "{F27A31A1-917C-4E75-B2A5-EEC55B287150}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CppWinRT", "CppWinRT", "{1A8A7481-2108-496B-802D-39F9C08D86F3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.CppWinRT.BlankWindow", "ItemTemplates\Desktop\CppWinRT\BlankWindow\WinUI.Desktop.CppWinRT.BlankWindow.csproj", "{81221BE8-00A2-4841-B62C-9E751C298066}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.CppWinRT.BlankWindow", "..\Source\ItemTemplates\Desktop\CppWinRT\BlankWindow\WinUI.Desktop.CppWinRT.BlankWindow.csproj", "{81221BE8-00A2-4841-B62C-9E751C298066}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.TemplatedControl", "ItemTemplates\Neutral\CppWinRT\TemplatedControl\WinUI.Neutral.CppWinRT.TemplatedControl.csproj", "{761212D7-B5D2-4629-98C8-88F6A24982BB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.TemplatedControl", "..\Source\ItemTemplates\Neutral\CppWinRT\TemplatedControl\WinUI.Neutral.CppWinRT.TemplatedControl.csproj", "{761212D7-B5D2-4629-98C8-88F6A24982BB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.BlankWindow", "ItemTemplates\Desktop\CSharp\BlankWindow\WinUI.Desktop.Cs.BlankWindow.csproj", "{9DE11F03-73A8-4DCA-88B3-1623A718DFD1}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.BlankWindow", "..\Source\ItemTemplates\Desktop\CSharp\BlankWindow\WinUI.Desktop.Cs.BlankWindow.csproj", "{9DE11F03-73A8-4DCA-88B3-1623A718DFD1}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Desktop", "Desktop", "{E7C0B105-E6A4-43E4-AC0F-5D4F5CDDC395}" EndProject @@ -43,9 +45,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CppWinRT", "CppWinRT", "{9C EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CSharp", "CSharp", "{01EE62F3-3B99-43B0-9E99-29FA871D48E2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.ResourceDictionary", "ItemTemplates\Neutral\CppWinRT\ResourceDictionary\WinUI.Neutral.CppWinRT.ResourceDictionary.csproj", "{3F3F0E7F-594F-4006-A3EF-5E5624EF147C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.ResourceDictionary", "..\Source\ItemTemplates\Neutral\CppWinRT\ResourceDictionary\WinUI.Neutral.CppWinRT.ResourceDictionary.csproj", "{3F3F0E7F-594F-4006-A3EF-5E5624EF147C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.ResourceDictionary", "ItemTemplates\Neutral\CSharp\ResourceDictionary\WinUI.Neutral.Cs.ResourceDictionary.csproj", "{C8DA9E71-2F7F-4E7C-8DC7-766FF0F67196}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.ResourceDictionary", "..\Source\ItemTemplates\Neutral\CSharp\ResourceDictionary\WinUI.Neutral.Cs.ResourceDictionary.csproj", "{C8DA9E71-2F7F-4E7C-8DC7-766FF0F67196}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BCBB50CD-2C38-4B27-940B-1FEDD2C6DECE}" ProjectSection(SolutionItems) = preProject @@ -54,35 +56,45 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution update-package-versions.targets = update-package-versions.targets EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.Resw", "ItemTemplates\Neutral\CppWinRT\Resw\WinUI.Neutral.CppWinRT.Resw.csproj", "{30AB0000-148D-48BE-85DB-70D9F7BDFEC5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.Resw", "..\Source\ItemTemplates\Neutral\CppWinRT\Resw\WinUI.Neutral.CppWinRT.Resw.csproj", "{30AB0000-148D-48BE-85DB-70D9F7BDFEC5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.Resw", "ItemTemplates\Neutral\CSharp\Resw\WinUI.Neutral.Cs.Resw.csproj", "{17320A27-C039-4973-95AA-ACB3EFA1D47E}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.Cs.Resw", "..\Source\ItemTemplates\Neutral\CSharp\Resw\WinUI.Neutral.Cs.Resw.csproj", "{17320A27-C039-4973-95AA-ACB3EFA1D47E}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CSharp", "CSharp", "{EC44EE95-8EC9-4EE5-A8A6-E6BE2F32C843}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.ClassLibrary", "ProjectTemplates\Desktop\CSharp\ClassLibrary\WinUI.Desktop.Cs.ClassLibrary.csproj", "{33783A04-0CB4-4CE5-A9FE-82E2E7E06D1F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.ClassLibrary", "..\Source\ProjectTemplates\Desktop\CSharp\ClassLibrary\WinUI.Desktop.Cs.ClassLibrary.csproj", "{33783A04-0CB4-4CE5-A9FE-82E2E7E06D1F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.PackagedApp", "ProjectTemplates\Desktop\CSharp\PackagedApp\WinUI.Desktop.Cs.PackagedApp.csproj", "{938DD23E-270E-488B-AC4C-CA68A545A8F2}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.PackagedApp", "..\Source\ProjectTemplates\Desktop\CSharp\PackagedApp\WinUI.Desktop.Cs.PackagedApp.csproj", "{938DD23E-270E-488B-AC4C-CA68A545A8F2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.CppWinRT.PackagedApp", "ProjectTemplates\Desktop\CppWinRT\PackagedApp\WinUI.Desktop.CppWinRT.PackagedApp.csproj", "{80195619-D4CF-4287-BA59-08077486BE1C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.CppWinRT.PackagedApp", "..\Source\ProjectTemplates\Desktop\CppWinRT\PackagedApp\WinUI.Desktop.CppWinRT.PackagedApp.csproj", "{80195619-D4CF-4287-BA59-08077486BE1C}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Neutral", "Neutral", "{50DEEF87-BC2F-4B45-B97D-B83135F12786}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CppWinRT", "CppWinRT", "{4D266288-D49F-46D4-90E0-667E81D6A433}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.RuntimeComponent", "ProjectTemplates\Neutral\CppWinRT\RuntimeComponent\WinUI.Neutral.CppWinRT.RuntimeComponent.csproj", "{FD33E535-127D-48AC-8788-0F61FA2A251C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Neutral.CppWinRT.RuntimeComponent", "..\Source\ProjectTemplates\Neutral\CppWinRT\RuntimeComponent\WinUI.Neutral.CppWinRT.RuntimeComponent.csproj", "{FD33E535-127D-48AC-8788-0F61FA2A251C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.SingleProjectPackagedApp", "ProjectTemplates\Desktop\CSharp\SingleProjectPackagedApp\WinUI.Desktop.Cs.SingleProjectPackagedApp.csproj", "{D9C038B7-6A62-4945-A030-4AC7597F53CA}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.SingleProjectPackagedApp", "..\Source\ProjectTemplates\Desktop\CSharp\SingleProjectPackagedApp\WinUI.Desktop.Cs.SingleProjectPackagedApp.csproj", "{D9C038B7-6A62-4945-A030-4AC7597F53CA}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.CppWinRT.SingleProjectPackagedApp", "ProjectTemplates\Desktop\CppWinRT\SingleProjectPackagedApp\WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.csproj", "{E54D1AD4-E935-479D-8A69-FC073E4DB33D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.CppWinRT.SingleProjectPackagedApp", "..\Source\ProjectTemplates\Desktop\CppWinRT\SingleProjectPackagedApp\WinUI.Desktop.CppWinRT.SingleProjectPackagedApp.csproj", "{E54D1AD4-E935-479D-8A69-FC073E4DB33D}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WindowsAppSDK.Cs.Extension.Dev17", "Extension\Cs\Dev17\WindowsAppSDK.Cs.Extension.Dev17.csproj", "{E700DF09-42A9-4AC7-9855-400029FBFDBE}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WindowsAppSDK.Cpp.Extension.Dev17", "Extension\Cpp\Dev17\WindowsAppSDK.Cpp.Extension.Dev17.csproj", "{85E88201-049C-4E42-AE85-DFEEFA7C533C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.UnitTestApp", "ProjectTemplates\Desktop\CSharp\UnitTestApp\WinUI.Desktop.Cs.UnitTestApp.csproj", "{45777B9F-9CC1-47D7-BD66-C3C194277902}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.UnitTestApp", "..\Source\ProjectTemplates\Desktop\CSharp\UnitTestApp\WinUI.Desktop.Cs.UnitTestApp.csproj", "{45777B9F-9CC1-47D7-BD66-C3C194277902}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.CppWinRT.UnitTestApp", "..\Source\ProjectTemplates\Desktop\CppWinRT\UnitTestApp\WinUI.Desktop.CppWinRT.UnitTestApp.csproj", "{DFA6B905-57A3-4B31-A74B-25BA2243389F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.TabViewApp", "..\Source\ProjectTemplates\Desktop\CSharp\TabViewApp\WinUI.Desktop.Cs.TabViewApp.csproj", "{A1B2C3D4-1111-4A5B-9C8D-1E2F3A4B5C6D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.NavigationApp", "..\Source\ProjectTemplates\Desktop\CSharp\NavigationApp\WinUI.Desktop.Cs.NavigationApp.csproj", "{B2C3D4E5-2222-4B6C-AD9E-2F3A4B5C6D7E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.Cs.MvvmApp", "..\Source\ProjectTemplates\Desktop\CSharp\MvvmApp\WinUI.Desktop.Cs.MvvmApp.csproj", "{C3D4E5F6-3333-4C7D-BE0F-3A4B5C6D7E8F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DotnetNewTemplates", "DotnetNewTemplates", "{8EAF0E4D-B0E3-4A21-B0F6-EA69F0215F5A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUI.Desktop.CppWinRT.UnitTestApp", "ProjectTemplates\Desktop\CppWinRT\UnitTestApp\WinUI.Desktop.CppWinRT.UnitTestApp.csproj", "{DFA6B905-57A3-4B31-A74B-25BA2243389F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinAppSdk.CSharp.DotnetNewTemplates", "..\Dotnet\WinAppSdk.CSharp.DotnetNewTemplates.csproj", "{F9C3BC5E-2E45-4272-A4F1-0F63CFE9A2DE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{96699B60-67B5-4186-9FEC-3963ED811FF0}" ProjectSection(SolutionItems) = preProject @@ -103,6 +115,10 @@ Global {F19716E6-41A1-4320-A819-288172CE161C}.Debug|Any CPU.Build.0 = Debug|Any CPU {F19716E6-41A1-4320-A819-288172CE161C}.Release|Any CPU.ActiveCfg = Release|Any CPU {F19716E6-41A1-4320-A819-288172CE161C}.Release|Any CPU.Build.0 = Release|Any CPU + {E5209752-4CE6-413B-B3BE-61E33C106A5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5209752-4CE6-413B-B3BE-61E33C106A5E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5209752-4CE6-413B-B3BE-61E33C106A5E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5209752-4CE6-413B-B3BE-61E33C106A5E}.Release|Any CPU.Build.0 = Release|Any CPU {1E071372-7CB7-47BC-9BA2-8235F9BB09C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1E071372-7CB7-47BC-9BA2-8235F9BB09C8}.Debug|Any CPU.Build.0 = Debug|Any CPU {1E071372-7CB7-47BC-9BA2-8235F9BB09C8}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -183,6 +199,22 @@ Global {DFA6B905-57A3-4B31-A74B-25BA2243389F}.Debug|Any CPU.Build.0 = Debug|Any CPU {DFA6B905-57A3-4B31-A74B-25BA2243389F}.Release|Any CPU.ActiveCfg = Release|Any CPU {DFA6B905-57A3-4B31-A74B-25BA2243389F}.Release|Any CPU.Build.0 = Release|Any CPU + {A1B2C3D4-1111-4A5B-9C8D-1E2F3A4B5C6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1B2C3D4-1111-4A5B-9C8D-1E2F3A4B5C6D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1B2C3D4-1111-4A5B-9C8D-1E2F3A4B5C6D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1B2C3D4-1111-4A5B-9C8D-1E2F3A4B5C6D}.Release|Any CPU.Build.0 = Release|Any CPU + {B2C3D4E5-2222-4B6C-AD9E-2F3A4B5C6D7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B2C3D4E5-2222-4B6C-AD9E-2F3A4B5C6D7E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2C3D4E5-2222-4B6C-AD9E-2F3A4B5C6D7E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B2C3D4E5-2222-4B6C-AD9E-2F3A4B5C6D7E}.Release|Any CPU.Build.0 = Release|Any CPU + {C3D4E5F6-3333-4C7D-BE0F-3A4B5C6D7E8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C3D4E5F6-3333-4C7D-BE0F-3A4B5C6D7E8F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C3D4E5F6-3333-4C7D-BE0F-3A4B5C6D7E8F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C3D4E5F6-3333-4C7D-BE0F-3A4B5C6D7E8F}.Release|Any CPU.Build.0 = Release|Any CPU + {F9C3BC5E-2E45-4272-A4F1-0F63CFE9A2DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9C3BC5E-2E45-4272-A4F1-0F63CFE9A2DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9C3BC5E-2E45-4272-A4F1-0F63CFE9A2DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9C3BC5E-2E45-4272-A4F1-0F63CFE9A2DE}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -190,6 +222,7 @@ Global GlobalSection(NestedProjects) = preSolution {2D9BD73D-5A5E-4113-AEA9-53D059A79A41} = {46667165-BDC3-4FC2-9BC3-E4B1AEB1E05B} {F19716E6-41A1-4320-A819-288172CE161C} = {46667165-BDC3-4FC2-9BC3-E4B1AEB1E05B} + {E5209752-4CE6-413B-B3BE-61E33C106A5E} = {46667165-BDC3-4FC2-9BC3-E4B1AEB1E05B} {CD06AC1A-5DAA-4161-8D57-92D27C4FD911} = {63F11D46-2E6A-4B6A-B57B-CB83FFCAB63F} {46667165-BDC3-4FC2-9BC3-E4B1AEB1E05B} = {CD06AC1A-5DAA-4161-8D57-92D27C4FD911} {1F0ED7C6-3679-4288-9CEA-7B30437D3FA6} = {CD06AC1A-5DAA-4161-8D57-92D27C4FD911} @@ -218,8 +251,13 @@ Global {D9C038B7-6A62-4945-A030-4AC7597F53CA} = {EC44EE95-8EC9-4EE5-A8A6-E6BE2F32C843} {E54D1AD4-E935-479D-8A69-FC073E4DB33D} = {1A8A7481-2108-496B-802D-39F9C08D86F3} {45777B9F-9CC1-47D7-BD66-C3C194277902} = {EC44EE95-8EC9-4EE5-A8A6-E6BE2F32C843} + {A1B2C3D4-1111-4A5B-9C8D-1E2F3A4B5C6D} = {EC44EE95-8EC9-4EE5-A8A6-E6BE2F32C843} + {B2C3D4E5-2222-4B6C-AD9E-2F3A4B5C6D7E} = {EC44EE95-8EC9-4EE5-A8A6-E6BE2F32C843} + {C3D4E5F6-3333-4C7D-BE0F-3A4B5C6D7E8F} = {EC44EE95-8EC9-4EE5-A8A6-E6BE2F32C843} {DFA6B905-57A3-4B31-A74B-25BA2243389F} = {1A8A7481-2108-496B-802D-39F9C08D86F3} {96699B60-67B5-4186-9FEC-3963ED811FF0} = {50DEEF87-BC2F-4B45-B97D-B83135F12786} + {8EAF0E4D-B0E3-4A21-B0F6-EA69F0215F5A} = {34272930-CFC7-4E33-9DB9-88E82AE2C046} + {F9C3BC5E-2E45-4272-A4F1-0F63CFE9A2DE} = {8EAF0E4D-B0E3-4A21-B0F6-EA69F0215F5A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {A417E325-71BD-4C29-94F8-F21FB3F5C392} diff --git a/dev/VSIX/WindowsAppSDK.ico b/dev/Templates/VSIX/WindowsAppSDK.ico similarity index 100% rename from dev/VSIX/WindowsAppSDK.ico rename to dev/Templates/VSIX/WindowsAppSDK.ico diff --git a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX.ps1 new file mode 100644 index 0000000000..e3ed329d02 --- /dev/null +++ b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX.ps1 @@ -0,0 +1,517 @@ +<# +.SYNOPSIS + Builds the Windows App SDK VSIX extension packages locally. + +.DESCRIPTION + Reproduces the Azure Pipelines "CreateVsix" stage on a local machine. + Builds up to 4 VSIX files: + - WindowsAppSDK.Cs.Extension.Dev17.Standalone.vsix + - WindowsAppSDK.Cs.Extension.Dev17.Component.vsix + - WindowsAppSDK.Cpp.Extension.Dev17.Standalone.vsix + - WindowsAppSDK.Cpp.Extension.Dev17.Component.vsix + +.PARAMETER WindowsAppSDKVersion + The version of the Microsoft.WindowsAppSDK NuGet package to use. + Example: "1.8.260317003" + If not specified, defaults to the version in Directory.Build.props (1.0.0-preview1). + +.PARAMETER Configuration + Build configuration. Default: Release. + +.PARAMETER Deployment + Which deployment type(s) to build. Default: "LocalDev". + "LocalDev" - Per-user (AllUsers=false) VSIX with a distinct extension + Id (...Dev17.LocalDev). The ONLY flavor that is locally + installable on a developer machine - install with + .\Install-LocalDev-VSIX.ps1 (no admin required). + "Standalone" - Per-machine (AllUsers=true) VSIX. BUILD-ONLY locally; + not installable on a machine that already has the WinUI + workload (the workload owns the same extension Id and + blocks side-loading). Build this when you need an + artifact to ship / sign / publish. + "Component" - Per-machine VSIX flagged IsProductComponent. BUILD-ONLY + locally; consumed by the VS Installer build pipeline. + "Both" - Build Standalone + Component (no LocalDev). + +.PARAMETER EnableExperimentalVSIXFeatures + When set, marks the VSIX as experimental (adds .Experimental suffix, sets Preview=true). + +.PARAMETER OutputDir + Where to copy the final .vsix files. Default: .\publish\VSIX (relative to script dir). + +.PARAMETER NupkgSourceDir + Optional path to a directory containing pre-downloaded Microsoft.WindowsAppSDK*.nupkg. + This directory will be added as a NuGet package source. + +.PARAMETER RepoRoot + Path to the WindowsAppSDK repository root. Default: auto-detected relative to this script. + +.PARAMETER SkipRestore + Skip NuGet restore (useful if you've already restored). + +.EXAMPLE + .\Build-VSIX.ps1 + # Build the LocalDev VSIX (default). Then install with .\Install-LocalDev-VSIX.ps1 + +.EXAMPLE + .\Build-VSIX.ps1 -WindowsAppSDKVersion "1.8.260317003" -Deployment Standalone + # Build a Standalone VSIX artifact (build-only; not installable locally) + +.EXAMPLE + .\Build-VSIX.ps1 -NupkgSourceDir "C:\packages" -Deployment Both + # Build the Standalone + Component artifacts (build-only) +#> + +[CmdletBinding()] +param( + [string]$WindowsAppSDKVersion = "", + + [ValidateSet("Debug", "Release")] + [string]$Configuration = "Release", + + [ValidateSet("Standalone", "Component", "LocalDev", "Both")] + [string]$Deployment = "LocalDev", + + [switch]$EnableExperimentalVSIXFeatures, + + [string]$OutputDir = "", + + [string]$NupkgSourceDir = "", + + [string]$RepoRoot = "", + + [string]$OptionalVSIXVersion = "", + + [switch]$SkipRestore +) + +Set-StrictMode -Version 2.0 +$ErrorActionPreference = "Stop" + +#region --- Helper Functions --- + +function Write-Banner { + param([string]$Message) + $line = "=" * 70 + Write-Host "" + Write-Host $line -ForegroundColor Cyan + Write-Host " $Message" -ForegroundColor Cyan + Write-Host $line -ForegroundColor Cyan + Write-Host "" +} + +function Write-Step { + param([string]$Message) + Write-Host "[*] $Message" -ForegroundColor Green +} + +function Write-Warn { + param([string]$Message) + Write-Host "[!] $Message" -ForegroundColor Yellow +} + +function Write-Err { + param([string]$Message) + Write-Host "[X] $Message" -ForegroundColor Red +} + +function Find-MSBuild { + $vswherePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + if (-not (Test-Path $vswherePath)) { + Write-Err "vswhere.exe not found. Please install Visual Studio 2022 or later." + exit 1 + } + + $msbuildPath = & $vswherePath -latest -requires Microsoft.Component.MSBuild -find "MSBuild\**\Bin\MSBuild.exe" 2>$null | Select-Object -First 1 + if (-not $msbuildPath -or -not (Test-Path $msbuildPath)) { + Write-Err "MSBuild.exe not found. Please install Visual Studio 2022+ with the '.NET desktop development' workload." + exit 1 + } + + return $msbuildPath +} + +function Find-VSInstallPath { + $vswherePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" + $installPath = & $vswherePath -latest -property installationPath 2>$null + return $installPath +} + +function Extract-VersionFromNupkg { + param([string]$NupkgDir) + + $nupkgFiles = Get-ChildItem -Path $NupkgDir -Filter "Microsoft.WindowsAppSDK.*.nupkg" | + Where-Object { $_.Name -match "Microsoft\.WindowsAppSDK\.[0-9].*\.nupkg" } + + if ($nupkgFiles.Count -eq 0) { + Write-Err "No Microsoft.WindowsAppSDK*.nupkg files found in '$NupkgDir'." + exit 1 + } + + if ($nupkgFiles.Count -gt 1) { + Write-Err "Multiple Microsoft.WindowsAppSDK nupkg files found in '$NupkgDir'. Please keep only one." + foreach ($f in $nupkgFiles) { Write-Err " - $($f.Name)" } + exit 1 + } + + $nupkg = $nupkgFiles[0] + Write-Step "Found nupkg: $($nupkg.Name)" + + # Extract version from nuspec inside the nupkg + $tempExtract = Join-Path $env:TEMP "vsix-nupkg-extract-$(Get-Random)" + try { + $zipCopy = Join-Path $env:TEMP "$($nupkg.BaseName).zip" + Copy-Item $nupkg.FullName $zipCopy -Force + Expand-Archive -Path $zipCopy -DestinationPath $tempExtract -Force + Remove-Item $zipCopy -Force + + $nuspecFiles = Get-ChildItem -Path $tempExtract -Recurse -Filter "*.nuspec" + foreach ($nuspecFile in $nuspecFiles) { + [xml]$nuspec = Get-Content -Path $nuspecFile.FullName + if ($nuspec.package.metadata.id -eq "Microsoft.WindowsAppSDK") { + $version = $nuspec.package.metadata.version + Write-Step "Extracted version from nuspec: $version" + return $version + } + } + Write-Err "Could not find Microsoft.WindowsAppSDK nuspec in the nupkg." + exit 1 + } + finally { + if (Test-Path $tempExtract) { Remove-Item $tempExtract -Recurse -Force -ErrorAction SilentlyContinue } + } +} + +#endregion + +#region --- Setup --- + +Write-Banner "Windows App SDK VSIX Local Build" + +$scriptDir = $PSScriptRoot +if (-not $scriptDir) { $scriptDir = (Get-Location).Path } + +# Resolve repo root +if ($RepoRoot -eq "") { + $RepoRoot = Join-Path $scriptDir "..\..\..\..\" +} +$RepoRoot = (Resolve-Path $RepoRoot -ErrorAction SilentlyContinue).Path +if (-not $RepoRoot -or -not (Test-Path $RepoRoot)) { + Write-Err "WindowsAppSDK repo root not found. Use -RepoRoot to specify." + exit 1 +} +Write-Step "Repo root: $RepoRoot" + +# Resolve paths +$vsixDir = Join-Path $RepoRoot "dev\Templates\VSIX" +$solutionFile = Join-Path $vsixDir "WindowsAppSDK.Extension.sln" + +if (-not (Test-Path $solutionFile)) { + Write-Err "Solution file not found: $solutionFile" + exit 1 +} +Write-Step "Solution: $solutionFile" + +# Resolve output directory +if ($OutputDir -eq "") { + $OutputDir = Join-Path $scriptDir "publish\VSIX" +} +if (-not (Test-Path $OutputDir)) { + New-Item -ItemType Directory -Path $OutputDir -Force | Out-Null +} +$OutputDir = (Resolve-Path $OutputDir).Path +Write-Step "Output dir: $OutputDir" + +#endregion + +#region --- Prerequisites --- + +Write-Banner "Checking Prerequisites" + +# 1. Find MSBuild +$msbuild = Find-MSBuild +Write-Step "MSBuild: $msbuild" + +# 2. Check VS installation +$vsPath = Find-VSInstallPath +if ($vsPath) { + Write-Step "Visual Studio: $vsPath" +} else { + Write-Warn "Could not detect VS installation path." +} + +# 3. Check VSSDK targets +$vssdkTargets = Join-Path $vsPath "MSBuild\Microsoft\VisualStudio\v17.0\VSSDK\Microsoft.VsSDK.targets" +if (-not (Test-Path $vssdkTargets)) { + # Try generic version path + $vssdkSearch = Get-ChildItem -Path (Join-Path $vsPath "MSBuild") -Recurse -Filter "Microsoft.VsSDK.targets" -ErrorAction SilentlyContinue | Select-Object -First 1 + if ($vssdkSearch) { + Write-Step "VSSDK targets: $($vssdkSearch.FullName)" + } else { + Write-Warn "Microsoft.VsSDK.targets not found. Install the 'Visual Studio extension development' workload." + Write-Warn "The build may still succeed if VSSDK is restored via NuGet (Microsoft.VSSDK.BuildTools)." + } +} else { + Write-Step "VSSDK targets: $vssdkTargets" +} + +# 4. Check .NET SDK +$dotnetPath = Get-Command dotnet -ErrorAction SilentlyContinue +if ($dotnetPath) { + $sdkVersions = & dotnet --list-sdks 2>$null + $hasNet8 = $sdkVersions | Where-Object { $_ -match "^8\." } + if ($hasNet8) { + Write-Step ".NET 8 SDK: found" + } else { + Write-Warn ".NET 8 SDK not found. The DotnetNewTemplates project requires it." + Write-Warn "Install from https://dotnet.microsoft.com/download/dotnet/8.0" + } +} else { + Write-Warn "dotnet CLI not found. The DotnetNewTemplates project may fail to build." +} + +#endregion + +#region --- Version Resolution --- + +Write-Banner "Resolving Package Version" + +if ($NupkgSourceDir -ne "" -and $WindowsAppSDKVersion -eq "") { + $NupkgSourceDir = (Resolve-Path $NupkgSourceDir).Path + Write-Step "Extracting version from nupkg in: $NupkgSourceDir" + $WindowsAppSDKVersion = Extract-VersionFromNupkg -NupkgDir $NupkgSourceDir +} + +if ($WindowsAppSDKVersion -eq "") { + Write-Warn "No -WindowsAppSDKVersion specified and no -NupkgSourceDir provided." + Write-Warn "Falling back to the default in Directory.Build.props (1.0.0-preview1)." + Write-Warn "This version likely does not exist on nuget.org." + Write-Warn "Specify -WindowsAppSDKVersion to use a real version (e.g., '1.8.260317003')." + $WindowsAppSDKVersion = "" +} + +if ($WindowsAppSDKVersion -ne "") { + Write-Step "WindowsAppSDKVersion = $WindowsAppSDKVersion" +} + +if ($OptionalVSIXVersion -eq "") { + $now = Get-Date + $OptionalVSIXVersion = "99.$($now.ToString('yyyy')).$($now.ToString('MMdd')).$($now.ToString('HHmm'))" + Write-Step "OptionalVSIXVersion = $OptionalVSIXVersion (auto-generated from current time)" +} else { + Write-Step "OptionalVSIXVersion = $OptionalVSIXVersion (user-specified)" +} + +#endregion + +#region --- NuGet Config --- + +Write-Banner "Configuring NuGet Sources" + +$nugetConfig = Join-Path $scriptDir "vsix-nuget.config" +if (-not (Test-Path $nugetConfig)) { + Write-Err "vsix-nuget.config not found at: $nugetConfig" + Write-Err "This file should be alongside Build-VSIX.ps1." + exit 1 +} + +# If a local nupkg source is provided, create a temp config with that source added +$effectiveNugetConfig = $nugetConfig +if ($NupkgSourceDir -ne "") { + $tempConfig = Join-Path $env:TEMP "vsix-nuget-temp-$(Get-Random).config" + [xml]$configXml = Get-Content $nugetConfig + $newSource = $configXml.CreateElement("add") + $newSource.SetAttribute("key", "LocalNupkg") + $newSource.SetAttribute("value", $NupkgSourceDir) + $configXml.configuration.packageSources.AppendChild($newSource) | Out-Null + $configXml.Save($tempConfig) + $effectiveNugetConfig = $tempConfig + Write-Step "Added local nupkg source: $NupkgSourceDir" +} + +Write-Step "NuGet config: $effectiveNugetConfig" + +# Use a short build output path to avoid MAX_PATH issues with the VSSDK. +# The VSSDK extracts template ZIPs into deeply nested paths; if the repo +# is in a deep directory the combined path can exceed 260 characters. +$shortBuildOutput = "C:\tmp\vsixbo\" +if (-not (Test-Path $shortBuildOutput)) { + New-Item -ItemType Directory -Path $shortBuildOutput -Force | Out-Null +} +Write-Step "Build output (short path): $shortBuildOutput" + +#endregion + +#region --- Build Functions --- + +function Invoke-MSBuildRestore { + param( + [string]$DeploymentType + ) + + Write-Step "Restoring ($DeploymentType)..." + + $args = @( + $solutionFile + "/t:restore" + "/p:Configuration=$Configuration" + "/p:Platform=Any CPU" + "/p:Deployment=$DeploymentType" + "/p:RestoreConfigFile=$effectiveNugetConfig" + "/p:EnableExperimentalVSIXFeatures=$($EnableExperimentalVSIXFeatures.IsPresent.ToString().ToLower())" + "/p:BuildOutput=$shortBuildOutput" + "/verbosity:minimal" + "/nologo" + ) + + if ($WindowsAppSDKVersion -ne "") { + $args += "/p:WindowsAppSDKVersion=$WindowsAppSDKVersion" + } + + if ($NupkgSourceDir -ne "") { + $args += "/p:RestoreAdditionalProjectSources=$NupkgSourceDir" + } + + if ($OptionalVSIXVersion -ne "") { + $args += "/p:OptionalVSIXVersion=$OptionalVSIXVersion" + } + + Write-Host " > MSBuild $($args -join ' ')" -ForegroundColor DarkGray + & $msbuild @args + if ($LASTEXITCODE -ne 0) { + Write-Err "NuGet restore failed for $DeploymentType deployment." + exit $LASTEXITCODE + } +} + +function Invoke-MSBuildBuild { + param( + [string]$DeploymentType + ) + + Write-Step "Building ($DeploymentType)..." + + $args = @( + $solutionFile + "/p:Configuration=$Configuration" + "/p:Platform=Any CPU" + "/p:Deployment=$DeploymentType" + "/p:EnableExperimentalVSIXFeatures=$($EnableExperimentalVSIXFeatures.IsPresent.ToString().ToLower())" + "/p:BuildOutput=$shortBuildOutput" + "/verbosity:minimal" + "/nologo" + ) + + if ($WindowsAppSDKVersion -ne "") { + $args += "/p:WindowsAppSDKVersion=$WindowsAppSDKVersion" + } + + if ($OptionalVSIXVersion -ne "") { + $args += "/p:OptionalVSIXVersion=$OptionalVSIXVersion" + } + + Write-Host " > MSBuild $($args -join ' ')" -ForegroundColor DarkGray + & $msbuild @args + if ($LASTEXITCODE -ne 0) { + Write-Err "Build failed for $DeploymentType deployment." + exit $LASTEXITCODE + } +} + +function Copy-VsixOutput { + param( + [string]$DeploymentType + ) + + # Search both the short build output and the default BuildOutput location + $searchPaths = @($shortBuildOutput) + $defaultBuildOutput = Join-Path $vsixDir "BuildOutput" + if (Test-Path $defaultBuildOutput) { $searchPaths += $defaultBuildOutput } + + $vsixFiles = @() + foreach ($searchPath in $searchPaths) { + $found = Get-ChildItem -Path $searchPath -Recurse -Filter "WindowsAppSDK.*.$DeploymentType.vsix" -ErrorAction SilentlyContinue + $vsixFiles += $found + } + + if ($vsixFiles.Count -eq 0) { + Write-Warn "No VSIX files found for $DeploymentType deployment." + return + } + + # Deduplicate by filename (same VSIX may appear in multiple locations) + $seen = @{} + foreach ($vsix in $vsixFiles) { + if (-not $seen.ContainsKey($vsix.Name)) { + $seen[$vsix.Name] = $vsix + # Rename to include version: WindowsAppSDK.Cs.Extension.Dev17.Component.vsix + # -> WindowsAppSDK.Cs.Extension.Dev17.Component.99.2026.0416.1640.vsix + $newName = $vsix.BaseName + ".$OptionalVSIXVersion.vsix" + $dest = Join-Path $OutputDir $newName + Copy-Item $vsix.FullName $dest -Force + Write-Step " -> $dest" + } + } +} + +#endregion + +#region --- Execute Build --- + +$deployments = @() +if ($Deployment -eq "Both") { + $deployments = @("Standalone", "Component") +} else { + $deployments = @($Deployment) +} + +foreach ($deploy in $deployments) { + Write-Banner "Building VSIX - $deploy" + + if (-not $SkipRestore) { + Invoke-MSBuildRestore -DeploymentType $deploy + } + Invoke-MSBuildBuild -DeploymentType $deploy + + Write-Step "Copying $deploy VSIX output..." + Copy-VsixOutput -DeploymentType $deploy +} + +#endregion + +#region --- Cleanup --- + +if ($NupkgSourceDir -ne "" -and $effectiveNugetConfig -ne $nugetConfig) { + Remove-Item $effectiveNugetConfig -Force -ErrorAction SilentlyContinue +} + +#endregion + +#region --- Summary --- + +Write-Banner "Build Complete" + +$outputVsix = Get-ChildItem -Path $OutputDir -Filter "*.vsix" -ErrorAction SilentlyContinue +if ($outputVsix.Count -gt 0) { + Write-Step "VSIX files produced:" + foreach ($v in $outputVsix) { + $sizeMB = [math]::Round($v.Length / 1MB, 2) + Write-Host " $($v.Name) ($sizeMB MB)" -ForegroundColor White + } +} else { + Write-Warn "No .vsix files found in $OutputDir." + Write-Warn "Check the build output above for errors." +} + +Write-Host "" +if ($Deployment -eq "LocalDev") { + Write-Step "Next step: install per-user with no admin required:" + Write-Host " .\Install-LocalDev-VSIX.ps1" -ForegroundColor White + Write-Host "" +} else { + Write-Step "Build-only flavor produced. To install on a developer machine," + Write-Step "build the LocalDev flavor instead and run Install-LocalDev-VSIX.ps1." + Write-Host "" +} + +#endregion diff --git a/dev/Templates/VSIX/build-local-VSIX-package/Install-LocalDev-VSIX.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/Install-LocalDev-VSIX.ps1 new file mode 100644 index 0000000000..8dbf2a62f4 --- /dev/null +++ b/dev/Templates/VSIX/build-local-VSIX-package/Install-LocalDev-VSIX.ps1 @@ -0,0 +1,367 @@ +<# +.SYNOPSIS + Installs the locally-built LocalDev (per-user, AllUsers="false") Windows + App SDK Templates VSIX into Visual Studio 2022 and/or 2026. + +.DESCRIPTION + THE FAST DEV LOOP. No admin required. No setup.exe. No workload removal. + + The LocalDev VSIX is identical in content to the Standalone VSIX except + its manifest sets . That makes it a + per-user install under + %LOCALAPPDATA%\Microsoft\VisualStudio\\Extensions\\ + instead of the per-machine + C:\Program Files\Microsoft Visual Studio\\Common7\IDE\Extensions\ + location used by Standalone/Component. + + Why this works on a machine that already has the WinUI workload + =============================================================== + The workload ships the same extension Id (Microsoft.WindowsAppSDK.Cs.Dev17) + per-machine. VS scans BOTH the per-machine and per-user extension hives + at startup. When two installed extensions share the same Id, the higher + Version wins. The locally-built VSIX uses version 99... + and the workload-shipped one is 1.x.x.x, so the LocalDev build always + wins for the current user. The workload copy stays untouched on disk + (no admin needed to install OR uninstall LocalDev). + + Steps performed + --------------- + 1. Discover all VS 17+ instances (vswhere) + 2. Refuse to run if any devenv.exe is open (templates are cached at + startup; replacing the VSIX while VS is running has no effect) + 3. For each (VSIX, instance) pair: VSIXInstaller /quiet /instanceIds: + (no /admin, no elevation) + 4. Optionally invoke devenv /UpdateConfiguration to refresh the + template cache so the new templates appear on the very next launch + (VS would otherwise refresh on first launch anyway) + + What this script DELIBERATELY does NOT do + ----------------------------------------- + * No setup.exe modify (we never touch VS Setup state) + * No removal of workload components + * No deletion of files under Program Files + * No admin elevation required + +.PARAMETER Language + Which language template(s) to install. CSharp | Cpp | Both (default). + +.PARAMETER VsixDir + Directory containing LocalDev .vsix files. Default: .\publish\VSIX + +.PARAMETER VsixPath + Direct path to a single LocalDev .vsix. Overrides -VsixDir and -Language. + +.PARAMETER VsVersionRange + vswhere version range filter. Default '[17.0,)' = VS 2022 and VS 2026. + Use '[17.0,18.0)' for VS 2022 only or '[18.0,19.0)' for VS 2026 only. + +.PARAMETER UninstallFirst + If set, run VSIXInstaller /uninstall: before installing. Useful + when you've already installed a LocalDev build and want a clean reinstall. + NOT required for normal use - VSIXInstaller will replace an existing + per-user copy in place. + +.PARAMETER SkipUpdateConfiguration + Skip the post-install 'devenv /UpdateConfiguration' step. The new + templates will still appear, but only on the next VS launch. + +.EXAMPLE + .\Install-LocalDev-VSIX.ps1 + # Install the latest LocalDev C# + C++ VSIX into every VS 17+ instance. + +.EXAMPLE + .\Install-LocalDev-VSIX.ps1 -Language CSharp -VsVersionRange '[18.0,19.0)' + # Install only the C# VSIX into VS 2026. + +.EXAMPLE + .\Install-LocalDev-VSIX.ps1 -UninstallFirst + # Force a clean reinstall (uninstall then install). +#> + +[CmdletBinding()] +param( + [ValidateSet("CSharp", "Cpp", "Both")] + [string]$Language = "Both", + + [string]$VsixDir = "", + + [string]$VsixPath = "", + + [string]$VsVersionRange = '[17.0,)', + + [switch]$UninstallFirst, + + [switch]$SkipUpdateConfiguration +) + +Set-StrictMode -Version 2.0 +$ErrorActionPreference = 'Stop' + +#region --- Helpers --- + +function Write-Banner { + param([string]$Message) + $line = '=' * 70 + Write-Host '' + Write-Host $line -ForegroundColor Cyan + Write-Host " $Message" -ForegroundColor Cyan + Write-Host $line -ForegroundColor Cyan + Write-Host '' +} + +function Write-Step { param([string]$M) Write-Host "[*] $M" -ForegroundColor Green } +function Write-Warn { param([string]$M) Write-Host "[!] $M" -ForegroundColor Yellow } +function Write-Err { param([string]$M) Write-Host "[X] $M" -ForegroundColor Red } + +function Get-VsixExtId { + param([string]$Name) + # LocalDev VSIX uses Ids with a ".LocalDev" suffix so they don't collide + # with the workload-shipped per-machine copy (see manifest comments). + if ($Name -match '\.Cs\.') { return 'Microsoft.WindowsAppSDK.Cs.Dev17.LocalDev' } + if ($Name -match '\.Cpp\.') { return 'Microsoft.WindowsAppSDK.Cpp.Dev17.LocalDev' } + return $null +} + +function Wait-VsixInstaller { + $waited = 0 + while (Get-Process -Name 'VSIXInstaller' -ErrorAction SilentlyContinue) { + Start-Sleep -Seconds 2 + $waited += 2 + if ($waited % 30 -eq 0) { + Write-Host " Still installing... (${waited}s elapsed)" -ForegroundColor DarkGray + } + } +} + +function Get-LatestVsixInstallerLog { + Get-ChildItem "$env:TEMP\dd_VSIXInstaller_*.log" -ErrorAction SilentlyContinue | + Sort-Object LastWriteTime -Descending | Select-Object -First 1 +} + +#endregion + +#region --- Setup --- + +Write-Banner 'Windows App SDK LocalDev VSIX Installer (per-user, no admin)' + +$scriptDir = $PSScriptRoot +if (-not $scriptDir) { $scriptDir = (Get-Location).Path } + +#endregion + +#region --- Locate VSIX files --- + +Write-Banner 'Locating LocalDev VSIX Files' + +$toInstall = @() + +if ($VsixPath -ne "") { + if (-not (Test-Path $VsixPath)) { + Write-Err "VSIX file not found: $VsixPath" + exit 1 + } + $toInstall += Get-Item $VsixPath +} else { + if ($VsixDir -eq "") { + $VsixDir = Join-Path $scriptDir 'publish\VSIX' + } + if (-not (Test-Path $VsixDir)) { + Write-Err "VSIX directory not found: $VsixDir" + Write-Err "Run '.\Build-VSIX.ps1 -Deployment LocalDev' first." + exit 1 + } + + $csVsix = Get-ChildItem $VsixDir -Filter 'WindowsAppSDK.Cs.Extension.Dev17.LocalDev.*.vsix' -ErrorAction SilentlyContinue | Sort-Object LastWriteTime -Descending | Select-Object -First 1 + $cppVsix = Get-ChildItem $VsixDir -Filter 'WindowsAppSDK.Cpp.Extension.Dev17.LocalDev.*.vsix' -ErrorAction SilentlyContinue | Sort-Object LastWriteTime -Descending | Select-Object -First 1 + + if ($Language -in @('CSharp','Both') -and $csVsix) { $toInstall += $csVsix } + if ($Language -in @('Cpp', 'Both') -and $cppVsix) { $toInstall += $cppVsix } +} + +if (-not $toInstall) { + Write-Err "No matching LocalDev VSIX files found." + Write-Err "Expected names: WindowsAppSDK.{Cs,Cpp}.Extension.Dev17.LocalDev..vsix" + Write-Err "Run: .\Build-VSIX.ps1 -Deployment LocalDev" + exit 1 +} + +foreach ($v in $toInstall) { + Write-Step "VSIX: $($v.Name)" +} + +#endregion + +#region --- Refuse to run while VS is open --- + +Write-Banner 'Checking Visual Studio Status' + +$vsProcs = Get-Process -Name 'devenv' -ErrorAction SilentlyContinue +if ($vsProcs) { + Write-Err 'Visual Studio is running. Per-user VSIX installs apply at VS startup;' + Write-Err 'replacing the VSIX while VS is running has no effect on this VS session.' + Write-Err 'Close all devenv.exe processes and re-run this script.' + foreach ($p in $vsProcs) { Write-Err " devenv.exe (PID: $($p.Id))" } + exit 1 +} +Write-Step 'No Visual Studio instances running.' + +#endregion + +#region --- Discover VS instances --- + +Write-Banner "Discovering Visual Studio Installations (range $VsVersionRange)" + +$vswherePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" +if (-not (Test-Path $vswherePath)) { + Write-Err 'vswhere.exe not found. Install Visual Studio 2022 or later.' + exit 1 +} + +$vsInstancesJson = & $vswherePath -products '*' -prerelease -version $VsVersionRange -format json 2>$null +if (-not $vsInstancesJson) { + Write-Err "No Visual Studio installation found matching version range '$VsVersionRange'." + exit 1 +} +$vsInstancesAll = $vsInstancesJson | ConvertFrom-Json + +$vsInstances = @() +foreach ($inst in $vsInstancesAll) { + $vsixExe = Join-Path $inst.installationPath 'Common7\IDE\VSIXInstaller.exe' + if (-not (Test-Path $vsixExe)) { + Write-Warn "Skipping $($inst.displayName) - VSIXInstaller.exe not found." + continue + } + $vsInstances += [PSCustomObject]@{ + InstanceId = $inst.instanceId + DisplayName = $inst.displayName + Version = $inst.installationVersion + Path = $inst.installationPath + VsixInstaller = $vsixExe + Devenv = Join-Path $inst.installationPath 'Common7\IDE\devenv.exe' + } + Write-Step "$($inst.displayName) (v$($inst.installationVersion)) [$($inst.instanceId)]" +} +if (-not $vsInstances) { Write-Err 'No usable VS installations found.'; exit 1 } + +#endregion + +#region --- Optional uninstall (per-user only) --- + +if ($UninstallFirst) { + Write-Banner 'Uninstalling Existing Per-User Copy' + foreach ($vsix in $toInstall) { + $extId = Get-VsixExtId -Name $vsix.Name + if (-not $extId) { continue } + foreach ($inst in $vsInstances) { + Write-Step "[$($inst.DisplayName)] VSIXInstaller /uninstall:$extId ..." + # No /admin flag here - we are intentionally only touching the + # per-user (current user) install. VSIXInstaller will refuse to + # silently uninstall a per-machine extension without /admin, so + # any per-machine workload-shipped copy is left alone (which is + # exactly what we want). + & $inst.VsixInstaller "/uninstall:$extId" '/quiet' "/instanceIds:$($inst.InstanceId)" 2>&1 | Out-Null + Wait-VsixInstaller + $log = Get-LatestVsixInstallerLog + if ($log) { + $tail = Get-Content $log.FullName -Tail 20 -ErrorAction SilentlyContinue + if ($tail | Select-String 'Uninstall.*completed|successfully uninstalled') { + Write-Step "[$($inst.DisplayName)] Per-user copy uninstalled (or none was present)." + } else { + Write-Warn "[$($inst.DisplayName)] Uninstall returned no clear success line." + Write-Warn " Log: $($log.FullName)" + } + } + } + } +} + +#endregion + +#region --- Install (per-user, no admin) --- + +Write-Banner 'Installing LocalDev VSIX (per-user)' + +$failed = @() +$succeeded = @() + +foreach ($vsix in $toInstall) { + foreach ($inst in $vsInstances) { + Write-Step "[$($inst.DisplayName)] Installing $($vsix.Name)..." + $args = @('/quiet', "/instanceIds:$($inst.InstanceId)", $vsix.FullName) + Write-Host " > VSIXInstaller $($args -join ' ')" -ForegroundColor DarkGray + & $inst.VsixInstaller @args 2>&1 | Out-Null + Wait-VsixInstaller + + $log = Get-LatestVsixInstallerLog + $hasError = $false + if ($log) { + $tail = Get-Content $log.FullName -Tail 80 -ErrorAction SilentlyContinue + $errLines = $tail | Select-String 'Install Error|InvalidOperationException.*(Uninstall|Installation).*failed' + if ($errLines) { + $hasError = $true + $failed += "$($vsix.Name) -> $($inst.DisplayName)" + Write-Err "[$($inst.DisplayName)] VSIXInstaller failed." + Write-Err " Log: $($log.FullName)" + foreach ($e in $errLines) { Write-Err " $($e.Line.Trim())" } + } + } + if (-not $hasError) { + Write-Step "[$($inst.DisplayName)] Installed (per-user)." + $succeeded += [PSCustomObject]@{ Vsix = $vsix.Name; Instance = $inst } + } + } +} + +#endregion + +#region --- Refresh template cache --- + +if (-not $SkipUpdateConfiguration -and $succeeded) { + Write-Banner 'Refreshing Template Cache (devenv /UpdateConfiguration)' + # /UpdateConfiguration forces VS to re-scan extensions and rebuild caches + # (incl. ProjectTemplatesCache, ItemTemplatesCache, ComponentModelCache). + # This makes the new templates show up immediately on next File -> New + # without waiting for the next interactive launch to discover them. + $instancesTouched = $succeeded | ForEach-Object { $_.Instance } | Sort-Object InstanceId -Unique + foreach ($inst in $instancesTouched) { + Write-Step "[$($inst.DisplayName)] devenv /UpdateConfiguration ..." + & $inst.Devenv '/UpdateConfiguration' 2>&1 | Out-Null + Write-Step "[$($inst.DisplayName)] Cache refreshed." + } +} + +#endregion + +#region --- Summary --- + +Write-Banner 'Installation Summary' + +if (-not $failed) { + Write-Step 'All LocalDev VSIX(es) installed successfully.' + Write-Host '' + Write-Step 'Verify in Visual Studio:' + Write-Host ' 1. Launch Visual Studio (any installed VS 17+ instance).' -ForegroundColor White + Write-Host ' 2. File -> New -> Project.' -ForegroundColor White + Write-Host ' 3. Filter Language=C#, Search "WinUI".' -ForegroundColor White + Write-Host ' 4. You should see the 7 project templates:' -ForegroundColor White + Write-Host ' 1) Blank App' -ForegroundColor White + Write-Host ' 2) NavigationView App' -ForegroundColor White + Write-Host ' 3) TabView App' -ForegroundColor White + Write-Host ' 4) MVVM App' -ForegroundColor White + Write-Host ' 5) Blank App (Packaged WAP)' -ForegroundColor White + Write-Host ' 6) Class Library' -ForegroundColor White + Write-Host ' 7) Unit Test App' -ForegroundColor White + Write-Host '' + Write-Step 'To uninstall later (no admin needed):' + Write-Host ' .\Install-LocalDev-VSIX.ps1 -UninstallFirst' -ForegroundColor White + Write-Host ' # then Ctrl+C to skip the reinstall, or just let it reinstall' -ForegroundColor DarkGray + Write-Host ' # alternatively:' -ForegroundColor DarkGray + Write-Host ' & "\Common7\IDE\VSIXInstaller.exe" /uninstall:Microsoft.WindowsAppSDK.Cs.Dev17.LocalDev /quiet' -ForegroundColor White + exit 0 +} else { + Write-Err 'Failed installs:' + foreach ($f in $failed) { Write-Err " - $f" } + exit 1 +} + +#endregion diff --git a/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 new file mode 100644 index 0000000000..850ee5b1bb --- /dev/null +++ b/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 @@ -0,0 +1,120 @@ +<# +.SYNOPSIS + End-to-end LocalDev (per-user, AllUsers="false") build + install for the + Windows App SDK Templates VSIX. + +.DESCRIPTION + The fast dev loop. No admin. No setup.exe. No workload removal. + + 1. Build the LocalDev flavor of the C# (and optionally C++) VSIX + 2. Install it per-user into every VS 17+ instance found by vswhere + 3. Refresh the template cache via 'devenv /UpdateConfiguration' + + See Install-LocalDev-VSIX.ps1 for the full theory of operation. + +.PARAMETER Language + CSharp | Cpp | Both (default). + +.PARAMETER SkipBuild + Reuse the most recently built LocalDev .vsix in publish\VSIX without + rebuilding. + +.PARAMETER VsVersionRange + vswhere version range filter. Default '[17.0,)' (VS 2022 + VS 2026). + Use '[17.0,18.0)' for VS 2022 only, '[18.0,19.0)' for VS 2026 only. + +.PARAMETER UninstallFirst + Run VSIXInstaller /uninstall before installing for a clean reinstall. + +.EXAMPLE + .\build-install-localdev-vsix.ps1 + # Build + install LocalDev C# + C++ to all VS 17+. + +.EXAMPLE + .\build-install-localdev-vsix.ps1 -Language CSharp -VsVersionRange '[18.0,19.0)' + # Build only C# LocalDev and install to VS 2026 only. +#> + +[CmdletBinding()] +param( + [ValidateSet("CSharp", "Cpp", "Both")] + [string]$Language = "Both", + + [switch]$SkipBuild, + + [string]$VsVersionRange = '[17.0,)', + + [switch]$UninstallFirst +) + +Set-StrictMode -Version 2.0 +$ErrorActionPreference = 'Stop' + +function Write-Banner { + param([string]$Message) + $line = '=' * 70 + Write-Host '' + Write-Host $line -ForegroundColor Cyan + Write-Host " $Message" -ForegroundColor Cyan + Write-Host $line -ForegroundColor Cyan + Write-Host '' +} +function Write-Step { param([string]$M) Write-Host "[*] $M" -ForegroundColor Green } +function Write-Err { param([string]$M) Write-Host "[X] $M" -ForegroundColor Red } + +$scriptDir = $PSScriptRoot +if (-not $scriptDir) { $scriptDir = (Get-Location).Path } + +$buildScript = Join-Path $scriptDir 'Build-VSIX.ps1' +$installScript = Join-Path $scriptDir 'Install-LocalDev-VSIX.ps1' +$publishDir = Join-Path $scriptDir 'publish\VSIX' + +Write-Banner 'LocalDev: Build + Install (per-user, no admin)' +Write-Step "Script directory : $scriptDir" +Write-Step "Language : $Language" +Write-Step "VS range filter : $VsVersionRange" +Write-Step "SkipBuild : $($SkipBuild.IsPresent)" + +# --- Build --- +if ($SkipBuild) { + Write-Banner 'Build (SKIPPED via -SkipBuild)' +} else { + Write-Banner 'Build LocalDev VSIX' + if (-not (Test-Path $buildScript)) { + Write-Err "Build-VSIX.ps1 not found at: $buildScript" + exit 1 + } + Push-Location $scriptDir + try { + & $buildScript -Deployment LocalDev + if ($LASTEXITCODE -ne 0) { + Write-Err "Build-VSIX.ps1 exited with code $LASTEXITCODE" + exit $LASTEXITCODE + } + } finally { + Pop-Location + } +} + +# --- Install --- +Write-Banner 'Install LocalDev VSIX' +if (-not (Test-Path $installScript)) { + Write-Err "Install-LocalDev-VSIX.ps1 not found at: $installScript" + exit 1 +} + +$installArgs = @{ + Language = $Language + VsVersionRange = $VsVersionRange +} +if ($UninstallFirst) { $installArgs['UninstallFirst'] = $true } + +Push-Location $scriptDir +try { + & $installScript @installArgs + $exit = $LASTEXITCODE +} finally { + Pop-Location +} + +exit $exit diff --git a/dev/Templates/VSIX/build-local-VSIX-package/build-local-VSIX-package.md b/dev/Templates/VSIX/build-local-VSIX-package/build-local-VSIX-package.md new file mode 100644 index 0000000000..a8f6b0996b --- /dev/null +++ b/dev/Templates/VSIX/build-local-VSIX-package/build-local-VSIX-package.md @@ -0,0 +1,244 @@ +# Windows App SDK VSIX — Local Build & Test Guide + +The fast inner-loop guide for building and testing the WinUI Templates VSIX on +a developer machine that already has Visual Studio 2022 and / or 2026 with the +WinUI workload installed. + +## TL;DR + +```powershell +# Build + install the LocalDev VSIX into every VS 17+ instance on the machine. +# No admin required. No setup.exe modify. No workload removal. +.\build-install-localdev-vsix.ps1 + +# Then in Visual Studio: File -> New -> Project -> filter C# -> search "WinUI" +``` + +That single command rebuilds your local source, installs to `%LOCALAPPDATA%`, +and refreshes the template cache. Do it after every code change you want to +see in real VS. + +--- + +## Why LocalDev is the only locally installable flavor + +The build can produce three flavors. **Only LocalDev is meant to be installed +on a developer box.** The other two are build-only artifacts. + +| Flavor | `` | Extension Id | Locally installable? | Purpose | +|---|---|---|---|---| +| **LocalDev** ★ | `false` (per-user) | `Microsoft.WindowsAppSDK.Cs.Dev17.LocalDev` | **Yes — no admin** | Fast dev loop. Coexists peacefully with the workload-shipped per-machine copy. | +| Standalone | `true` (per-machine) | `Microsoft.WindowsAppSDK.Cs.Dev17` | **No** | Build-only artifact (e.g. for the VS Marketplace pipeline). On any machine that already has the WinUI workload, VSIXInstaller cannot install it because the same Id is owned by 5+ workload components. | +| Component | `true` (per-machine, `IsProductComponent`) | `Microsoft.WindowsAppSDK.Cs.Dev17` | **No** | Build-only artifact for the VS Installer build pipeline (gets picked up as part of the WinUI workload component). | + +> If you really need to test the per-machine install path, do it inside a clean +> VM that does **not** have the WinUI workload installed. Don't try to +> side-load Standalone or Component on a workload-equipped machine — the +> "Uninstall failed; please uninstall all of the following components" +> failure cascade is documented in [investigation.md](investigation.md). + +--- + +## Prerequisites (one-time) + +| Requirement | Details | +|-------------|---------| +| **Visual Studio 2022 (17.0+)** or **2026** | Required for MSBuild and VSSDK targets | +| **Workloads** | `.NET desktop development` + `Visual Studio extension development` | +| **.NET 8 SDK** | Needed by the `WinAppSdk.CSharp.DotnetNewTemplates` project | +| **Internet access** | To restore NuGet packages from nuget.org | + +Quick checks: + +```powershell +& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -format json +dotnet --list-sdks +``` + +--- + +## Inner loop: build + install + reinstall + +The recommended one-shot orchestrator: + +```powershell +# Build LocalDev for both C# and C++; install into every VS 17+ instance. +.\build-install-localdev-vsix.ps1 + +# Reinstall after a code change (uninstalls old per-user copy first): +.\build-install-localdev-vsix.ps1 -UninstallFirst + +# Skip the build step (reuse the latest .vsix in publish\VSIX): +.\build-install-localdev-vsix.ps1 -SkipBuild + +# Limit to one language: +.\build-install-localdev-vsix.ps1 -Language CSharp + +# Limit to one VS major version: +.\build-install-localdev-vsix.ps1 -VsVersionRange '[17.0,18.0)' # VS 2022 only +.\build-install-localdev-vsix.ps1 -VsVersionRange '[18.0,19.0)' # VS 2026 only +``` + +Or run the steps separately (same result): + +```powershell +.\Build-VSIX.ps1 # default = -Deployment LocalDev +.\Install-LocalDev-VSIX.ps1 +``` + +### What the install script does +1. Refuses to run while any `devenv.exe` is open (templates are cached at + startup). +2. `vswhere` discovers all VS 17+ instances. +3. `VSIXInstaller /quiet /instanceIds:` per (VSIX, instance) pair. **No + `/admin`, no elevation.** Output goes to + `%LOCALAPPDATA%\Microsoft\VisualStudio\\Extensions\\`. +4. `devenv /UpdateConfiguration` per instance to refresh + `ProjectTemplatesCache`, `ItemTemplatesCache`, `ComponentModelCache`. + +### What it deliberately does NOT do +- No `setup.exe modify` (never touches VS Setup state). +- No removal of workload components. +- No deletion of files under Program Files. +- No admin elevation. + +### Uninstall the LocalDev copy + +```powershell +& "\Common7\IDE\VSIXInstaller.exe" /uninstall:Microsoft.WindowsAppSDK.Cs.Dev17.LocalDev /quiet +& "\Common7\IDE\VSIXInstaller.exe" /uninstall:Microsoft.WindowsAppSDK.Cpp.Dev17.LocalDev /quiet +``` + +The workload-shipped per-machine copy is never touched and is reactivated +automatically once the LocalDev copy is gone. + +### Verifying in Visual Studio + +1. Launch Visual Studio (any installed VS 17+ instance). +2. File → New → Project. Filter Language=C#, search "WinUI". Expect these + seven project templates: + + | # | Template | + |---|---| + | 1 | WinUI Blank App | + | 2 | WinUI Navigation App | + | 3 | WinUI TabView App | + | 4 | WinUI MVVM App | + | 5 | WinUI Blank App (Packaged WAP) | + | 6 | WinUI Class Library | + | 7 | WinUI Unit Test App | + +3. (Optional) Confirm VS picked up your local build, not the workload copy: + Extensions → Manage Extensions → Installed → look for + **"Windows App SDK C# VS Templates (LocalDev)"** — the `(LocalDev)` + suffix is on the VSIX `` and proves the per-user copy is + active. The workload copy ("Windows App SDK C# VS Templates", no suffix) + may also appear; that's fine — the higher-version per-user LocalDev + registration shadows it for File → New → Project. + +--- + +## Build-only flavors (Standalone, Component) + +Use these only when you need an artifact for signing / publishing / pipeline +parity. **They cannot be installed locally on a workload-equipped machine.** + +```powershell +# Build the Standalone artifact only: +.\Build-VSIX.ps1 -Deployment Standalone + +# Build the Component artifact only: +.\Build-VSIX.ps1 -Deployment Component + +# Build both: +.\Build-VSIX.ps1 -Deployment Both + +# Build with a specific Windows App SDK version: +.\Build-VSIX.ps1 -Deployment Standalone -WindowsAppSDKVersion "1.8.260317003" + +# Build using a local .nupkg directory (auto-extracts the WindowsAppSDK version +# from the embedded .nuspec): +.\Build-VSIX.ps1 -Deployment Standalone -NupkgSourceDir "C:\my-packages" + +# Override the auto-generated VSIX version (default is 99...): +.\Build-VSIX.ps1 -Deployment Standalone -OptionalVSIXVersion "99.2026.0428.1640" +``` + +The output `.vsix` files land in `.\publish\VSIX\` named with the version, e.g. +`WindowsAppSDK.Cs.Extension.Dev17.Standalone.99.2026.0428.1640.vsix`. + +--- + +## File reference + +| File | Purpose | +|------|---------| +| `Build-VSIX.ps1` | Builds VSIXes. Default `-Deployment LocalDev`. | +| `Install-LocalDev-VSIX.ps1` | Per-user install of the LocalDev VSIX into VS 17+ instances. No admin. | +| `build-install-localdev-vsix.ps1` | One-shot orchestrator: Build-VSIX (LocalDev) + Install-LocalDev-VSIX. | +| `vsix-nuget.config` | NuGet config the build script passes via `/p:RestoreConfigFile`. | +| `investigation.md` | Historical findings about why per-machine install is broken on workload-equipped machines. Read this before trying to "fix" Standalone install. | + +--- + +## Troubleshooting + +### Visual Studio shows the old templates after rebuild + +You launched VS while it had the old per-user extension cached. Either: + +- close VS, run `.\build-install-localdev-vsix.ps1 -UninstallFirst`, then + relaunch VS, OR +- open Tools → Get Tools and Features (or `devenv /UpdateConfiguration` from a + shell) to force the template cache rebuild. + +### "Visual Studio is running" error from the install script + +Per-user VSIX installs only take effect on the next VS startup, so the script +refuses to run while any `devenv.exe` exists. Close all VS instances and +re-run. + +### NuGet restore fails with "Unable to find version..." + +The repo's root `NuGet.config` uses `` and points at Microsoft +internal feeds only. `Build-VSIX.ps1` works around this by passing +`vsix-nuget.config` via `/p:RestoreConfigFile`. If you're invoking MSBuild +yourself, use the same parameter. + +### `Microsoft.VsSDK.targets was not found` + +Open Visual Studio Installer → Modify → check the **Visual Studio extension +development** workload. + +### `DotnetNewTemplates` fails to build + +The `WinAppSdk.CSharp.DotnetNewTemplates.csproj` targets `net8.0`. Install the +[.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0). + +### `VSSDK1300: Could not find a part of the path...` + +The VSSDK extracts template ZIPs into deeply nested paths and the .NET +Framework APIs it uses do not honor `LongPathsEnabled`. `Build-VSIX.ps1` +already redirects build output to `C:\tmp\vsixbo\` to keep paths short. If +you're invoking MSBuild yourself, pass `/p:BuildOutput=C:\tmp\vsixbo\`. + +### "Version 1.0.0-preview1 of package Microsoft.WindowsAppSDK not found" + +You ran `Build-VSIX.ps1` without `-WindowsAppSDKVersion` or `-NupkgSourceDir`, +so the build fell back to the placeholder version baked into +`Directory.Build.props`. The VSIX file still builds and installs (the inner +templates carry token placeholders that are rewritten at template-instantiation +time), but `dotnet new`-style restore against the published nupkg won't work. +Pass a real version when you need package-realistic testing: + +```powershell +.\Build-VSIX.ps1 -Deployment LocalDev -WindowsAppSDKVersion "1.8.260317003" +``` + +### Want to install the Standalone or Component VSIX locally + +Don't. They share an extension Id with the workload-shipped copy and +VSIXInstaller refuses to side-load over a workload-managed extension. See +[investigation.md](investigation.md) for the gory details. Use the LocalDev +flavor for local testing, or test inside a clean VM without the WinUI +workload. diff --git a/dev/Templates/VSIX/build-local-VSIX-package/vsix-nuget.config b/dev/Templates/VSIX/build-local-VSIX-package/vsix-nuget.config new file mode 100644 index 0000000000..4b6d8bc20e --- /dev/null +++ b/dev/Templates/VSIX/build-local-VSIX-package/vsix-nuget.config @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + diff --git a/dev/VSIX/extension.manifest.json b/dev/Templates/VSIX/extension.manifest.json similarity index 100% rename from dev/VSIX/extension.manifest.json rename to dev/Templates/VSIX/extension.manifest.json diff --git a/dev/VSIX/global.json b/dev/Templates/VSIX/global.json similarity index 100% rename from dev/VSIX/global.json rename to dev/Templates/VSIX/global.json diff --git a/dev/VSIX/overview-experimental.md b/dev/Templates/VSIX/overview-experimental.md similarity index 100% rename from dev/VSIX/overview-experimental.md rename to dev/Templates/VSIX/overview-experimental.md diff --git a/dev/VSIX/overview-stable.md b/dev/Templates/VSIX/overview-stable.md similarity index 100% rename from dev/VSIX/overview-stable.md rename to dev/Templates/VSIX/overview-stable.md diff --git a/dev/Templates/how-to-create-a-new-csharp-template.md b/dev/Templates/how-to-create-a-new-csharp-template.md new file mode 100644 index 0000000000..144a1190f3 --- /dev/null +++ b/dev/Templates/how-to-create-a-new-csharp-template.md @@ -0,0 +1,324 @@ +# Adding a new WinUI **C#** template + +The C# templates ship through two channels, both driven by the single +declarative manifest [`templates.props`](templates.props): + +| Channel | Output | Consumer csproj | +| -------------- | ------------------------------------- | --------------- | +| **dotnet-new** | NuGet `Microsoft.WindowsAppSDK.WinUI.CSharp.Templates` | [`Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj`](Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj) | +| **VSIX (C#)** | VS extension (New Project / New Item) | [`VSIX/Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj`](VSIX/Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj) | + +Adding a template means: drop the content under [`Source/`](Source), +add one entry to `templates.props`, and (if it ships in the VSIX) list +the template in [`VSIX/WindowsAppSDK.Extension.sln`](VSIX/WindowsAppSDK.Extension.sln). +Neither consumer csproj needs to change. + +--- + +## TL;DR + +### 1. Drop the template content under `Source/` + +For a project template: + +``` +dev/Templates/Source/ProjectTemplates/Desktop/CSharp// + .csproj + .ico (used by VSIX) + .png (used by VSIX) + .vstemplate (used by VSIX) + App.xaml / MainWindow.xaml / ... +``` + +For an item template, use `Source/ItemTemplates/Neutral/CSharp//` +with the same shape (no `.png`). + +If the template ships in the VSIX, also add the `.csproj` to +[`VSIX/WindowsAppSDK.Extension.sln`](VSIX/WindowsAppSDK.Extension.sln) +so CI builds it. + +### 2. If the template is a packaged WinUI app, add `Package-managed.appxmanifest` + +Place it next to the `.csproj`. The pack task will rename it to +`Package.appxmanifest` in the produced template. See the FAQ for why +the non-reserved name in Source. + +### 3. If the template ships to `dotnet new`, add the dotnet-new metadata folder + +``` +dev/Templates/Dotnet/templates// + .template.config/ + template.json (required) + dotnetcli.host.json (CLI parameter aliases) + ide.host.json (VS / VS Code metadata) + icon.png (shown in dialogs) +``` + +`` must match the `Identity` you choose in step 4 +(e.g. `templates/navigation-app/` ↔ `winui.navview`). + +### 4. Add an entry to `templates.props` + +Pick the item type by where the template should ship: + +| Ships to dotnet-new | Ships to VSIX | Item type | +| :-----------------: | :-----------: | ------------------------------- | +| ✅ | ✅ | `ProjectTemplate` | +| ✅ | ✅ | `ItemTemplate` | +| ❌ | ✅ | `VsixOnlyProjectTemplate` | +| ✅ | ❌ | `DotnetNewOnlyProjectTemplate` | +| ❌ | ✅ | `VsixOnlyItemTemplate` | +| ✅ | ❌ | `DotnetNewOnlyItemTemplate` | + +Each entry is one MSBuild item element of the chosen type with this +shape: + +```xml + + WinUI.Desktop.Cs.SomeName + $(MSBuildThisFileDirectory)Source\ProjectTemplates\Desktop\CSharp\SomeName + $(MSBuildThisFileDirectory)Dotnet\templates\some-name + Package-managed.appxmanifest + +``` + +| Metadata | Description | Required? | +| -------- | ----------- | --------- | +| `Identity` (the `Include` attribute) | For dotnet-new templates: the short name (also the `content//` subfolder in the NuGet). For VSIX-only templates: any unique name. | Always | +| `BaseName` | File-name stem of the source `.csproj` / `.ico` / `.png` / `.vstemplate`. | Always | +| `SourceDir` | Absolute path to the template's source tree. | Always | +| `DotnetConfigDir` | Absolute path to `Dotnet/templates//`. | When ships to dotnet-new | +| `RenameManifestFrom` | Source-side manifest filename, typically `Package-managed.appxmanifest`. Packed as `Package.appxmanifest`. | Packaged WinUI app templates only | + +### 5. Local build for tests + +1. dotnet new template: + + TL;DR + ```pwsh + # dotnet-new NuGet (inspect produced .nupkg under localpackages\) + dotnet pack dev\Templates\Dotnet\WinAppSdk.CSharp.DotnetNewTemplates.csproj -c Debug + + # dotnet new uninstall Microsoft.WindowsAppSDK.WinUI.CSharp.Templates + + dotnet new install localpackages\Microsoft.WindowsAppSDK.WinUI.CSharp.Templates.*.nupkg + ``` + + read details in [build-local-VSIX-package.md](.\VSIX\build-local-VSIX-package\build-local-VSIX-package.md) + +2. VSIX + + TL;DR + ```pwsh + dev\Templates\VSIX\build-local-VSIX-package\build-install-localdev-vsix.ps1 + ``` + + read details in [build-local-VSIX-package.md](.\VSIX\build-local-VSIX-package\build-local-VSIX-package.md) + +--- + +## How it works under the hood + +### Single source of truth: `templates.props` + +[`templates.props`](templates.props) is a plain MSBuild props file. It +declares six item collections (one per cell of the dotnet-new × VSIX +matrix above) and the per-template metadata for each entry. Default +metadata lives in ``; per-entry metadata only +overrides what differs. + +Both consuming csprojs `` this file, then partition the items by +their delivery channel: + +```text + ProjectTemplate ItemTemplate VsixOnly* DotnetNewOnly* +dotnet-new csproj ✅ ✅ — ✅ +VSIX csproj ✅ ✅ ✅ — +``` + +Adding a template is an entry in `templates.props`. Neither csproj has to +know about it. + +### dotnet-new packaging: `ExpandProjectTemplatePackItems` + +`dotnet new` template packs are just NuGet packages where the template +content sits under `content//`. NuGet's `Pack` target +consumes `` items. Building one +template by hand looks like this: + +```xml + + + + + +``` + +That style is what the original PR shipped. It worked but had problems: +the dotnet csproj needed to know **every** template's exclude list, file +names, and rename rule — and adding one new template meant ~15 lines of +copy-paste with seven find-and-replace edits, none of which the compiler +or NuGet would warn about if you got one wrong. + +We replaced it with an **inline C# MSBuild task** — +`ExpandProjectTemplatePackItems` in +[`WinAppSdk.CSharp.DotnetNewTemplates.csproj`](Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj). +It takes `@(ProjectTemplate)` (or `@(ItemTemplate)`, etc.) and per +template performs the same four-step packing recipe: + +1. Pack everything under `SourceDir`, minus `bin/`, `obj/`, and the + per-template sidecars (`.csproj` / `.ico` / `.png` / `.vstemplate`). +2. If `RenameManifestFrom` is set, re-pack that manifest under the + reserved name `Package.appxmanifest`. +3. Pack everything under `DotnetConfigDir/.template.config/`. +4. Pack a copy of the shared `.gitignore` (project templates only). + +### Why a C# task and not a pure-MSBuild `` with batching + +It would be more idiomatic to write something like: + +```xml + +``` + +…and let MSBuild's task batching fan it out per template. Two MSBuild +rules block that path: + +- **MSB5029** ("wildcard enumerates the whole drive") inspects + `` patterns *before* batching resolves `%(...)` metadata, so + the literal `\**\*.*` after the empty substitution is rejected. +- **MSB4191** forbids custom-metadata references in `` at the + top level (only inside ``), so we can't pre-filter the list + with `Condition="'%(IncludeInVSIX)' != 'false'"` either. + +An MSBuild task is opaque to both checks. The task walks the file +system with `System.IO` at run time, when all metadata has been +resolved. + +### Manifest rename + +Packaged WinUI apps need a file literally named `Package.appxmanifest` +for MSIX tooling to recognize them. But the Source-side template project +*itself* has to build (CI builds the whole `WindowsAppSDK.Extension.sln` +to verify templates don't bit-rot). If the file were named +`Package.appxmanifest` in the Source tree, MSIX tooling would try to +package the *template project* as a real app and fail. + +The convention is therefore: + +- Source tree stores it as `Package-managed.appxmanifest` (a + non-reserved name). +- Packing renames it to `Package.appxmanifest`. + +The `RenameManifestFrom` metadata is what tells the inline task to +perform that rename. + +### VSIX consumption + +The VSIX csproj converts the same manifest into `` +items via MSBuild item transforms: + +```xml + + %(BaseName) + ProjectTemplates + false + TemplateProjectOutputGroup; + +``` + +`IncludeOutputGroupsInVSIX="TemplateProjectOutputGroup"` is the VSSDK +hook each template project uses to publish its `.vstemplate` zip into +the VSIX container. + +We intentionally do not specify the `` GUID hint. MSBuild +resolves ProjectReferences by path; the GUID was historically only a +hint for Solution Explorer. + +### C++/WinRT isolation + +The C++/WinRT VSIX project at +[`VSIX/Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj`](VSIX/Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj) +**does not** import [`templates.props`](templates.props) and is not +reached by it indirectly: neither [`Directory.Build.props`](Directory.Build.props) +nor any other auto-discovered props file injects the manifest into the +C++ side. Therefore none of the C# item collections +(`@(ProjectTemplate)`, `@(ItemTemplate)`, `@(VsixOnlyProjectTemplate)`, +`@(VsixOnlyItemTemplate)`, `@(DotnetNewOnlyProjectTemplate)`, +`@(DotnetNewOnlyItemTemplate)`) are visible to the C++ csproj, and +changes to `templates.props` cannot regress the C++ VSIX build. + +If/when C++ templates are migrated to the same declarative manifest in +a follow-up, this isolation note should be updated accordingly. + +--- + +## File / folder reference + +``` +dev/Templates/ +├── templates.props ← the C# manifest (one entry per template) +├── Directory.Build.props ← shared MSBuild props for the Templates folder +├── Dotnet/ ← C# only: packs the dotnet-new NuGet +│ ├── WinAppSdk.CSharp.DotnetNewTemplates.csproj +│ ├── Directory.Build.props +│ └── templates// +│ └── .template.config/ +│ ├── template.json +│ ├── dotnetcli.host.json +│ ├── ide.host.json +│ └── icon.png +├── Source/ ← actual template content (C# and C++) +│ ├── ProjectTemplates/Desktop/CSharp// +│ │ ├── .csproj +│ │ ├── .{ico,png,vstemplate} +│ │ ├── Package-managed.appxmanifest (if packaged) +│ │ └── ...source files... +│ ├── ProjectTemplates/Desktop/CppWinRT// ← out of scope for this doc +│ ├── ItemTemplates/Neutral/CSharp// +│ └── ItemTemplates/Neutral/CppWinRT// ← out of scope for this doc +└── VSIX/ + ├── WindowsAppSDK.Extension.sln + ├── Extension/Cs/Dev17/WindowsAppSDK.Cs.Extension.Dev17.csproj ← C# VSIX (consumes templates.props) + ├── Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj ← C++ VSIX (does NOT import templates.props) + └── Directory.Build.props +``` + +--- + +## FAQ + +**Q. Why is the manifest in `Source/` named `Package-managed.appxmanifest` +instead of `Package.appxmanifest`?** + +The Source-side template project itself has to build cleanly — CI +builds [`VSIX/WindowsAppSDK.Extension.sln`](VSIX/WindowsAppSDK.Extension.sln) +to verify templates don't bit-rot. A file literally named +`Package.appxmanifest` would trigger MSIX tooling and try to package +the template *project itself* as a real app, breaking that build. The +Source tree therefore uses a non-reserved name and the pack task +renames it back to `Package.appxmanifest` in the produced template. + +**Q. I want to add a C++/WinRT template.** + +Currently, this doc and `templates.props` do not cover C++/WinRT. + +For C++ templates, add the template content under + `Source/{Project,Item}Templates/.../CppWinRT//` as usual, + then add a `` to the C++ extension csproj +([`VSIX/Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj`](VSIX/Extension/Cpp/Dev17/WindowsAppSDK.Cpp.Extension.Dev17.csproj)) +and a corresponding `` to the C++ vsixmanifest. + +There is no dotnet-new pack for C++/WinRT templates yet. diff --git a/dev/Templates/templates.props b/dev/Templates/templates.props new file mode 100644 index 0000000000..640ff68352 --- /dev/null +++ b/dev/Templates/templates.props @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WinUI.Desktop.Cs.SingleProjectPackagedApp + $(MSBuildThisFileDirectory)Source\ProjectTemplates\Desktop\CSharp\SingleProjectPackagedApp + $(MSBuildThisFileDirectory)Dotnet\templates\blank-app + Package-managed.appxmanifest + + + + WinUI.Desktop.Cs.NavigationApp + $(MSBuildThisFileDirectory)Source\ProjectTemplates\Desktop\CSharp\NavigationApp + $(MSBuildThisFileDirectory)Dotnet\templates\navigation-app + Package-managed.appxmanifest + + + + WinUI.Desktop.Cs.ClassLibrary + $(MSBuildThisFileDirectory)Source\ProjectTemplates\Desktop\CSharp\ClassLibrary + $(MSBuildThisFileDirectory)Dotnet\templates\class-library + + + + + WinUI.Desktop.Cs.UnitTestApp + $(MSBuildThisFileDirectory)Source\ProjectTemplates\Desktop\CSharp\UnitTestApp + $(MSBuildThisFileDirectory)Dotnet\templates\unit-test + Package-managed.appxmanifest + + + + WinUI.Desktop.Cs.MvvmApp + $(MSBuildThisFileDirectory)Source\ProjectTemplates\Desktop\CSharp\MvvmApp + $(MSBuildThisFileDirectory)Dotnet\templates\mvvm-app + Package-managed.appxmanifest + + + + WinUI.Desktop.Cs.TabViewApp + $(MSBuildThisFileDirectory)Source\ProjectTemplates\Desktop\CSharp\TabViewApp + $(MSBuildThisFileDirectory)Dotnet\templates\tabview-app + Package-managed.appxmanifest + + + + + + + WinUI.Desktop.Cs.PackagedApp + $(MSBuildThisFileDirectory)Source\ProjectTemplates\Desktop\CSharp\PackagedApp + + + + + + + + + + WinUI.Desktop.Cs.BlankWindow + $(MSBuildThisFileDirectory)Source\ItemTemplates\Desktop\CSharp\BlankWindow + $(MSBuildThisFileDirectory)Dotnet\templates\item-blank-window + + + + WinUI.Neutral.Cs.BlankPage + $(MSBuildThisFileDirectory)Source\ItemTemplates\Neutral\CSharp\BlankPage + $(MSBuildThisFileDirectory)Dotnet\templates\item-blank-page + + + + WinUI.Neutral.Cs.ContentDialog + $(MSBuildThisFileDirectory)Source\ItemTemplates\Neutral\CSharp\ContentDialog + $(MSBuildThisFileDirectory)Dotnet\templates\item-content-dialog + + + + WinUI.Neutral.Cs.ResourceDictionary + $(MSBuildThisFileDirectory)Source\ItemTemplates\Neutral\CSharp\ResourceDictionary + $(MSBuildThisFileDirectory)Dotnet\templates\item-resource-dictionary + + + + WinUI.Neutral.Cs.Resw + $(MSBuildThisFileDirectory)Source\ItemTemplates\Neutral\CSharp\Resw + $(MSBuildThisFileDirectory)Dotnet\templates\item-resw + + + + WinUI.Neutral.Cs.TemplatedControl + $(MSBuildThisFileDirectory)Source\ItemTemplates\Neutral\CSharp\TemplatedControl + $(MSBuildThisFileDirectory)Dotnet\templates\item-templated-control + + + + WinUI.Neutral.Cs.UserControl + $(MSBuildThisFileDirectory)Source\ItemTemplates\Neutral\CSharp\UserControl + $(MSBuildThisFileDirectory)Dotnet\templates\item-user-control + + + + + + + + + + + diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml.cs b/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml.cs deleted file mode 100644 index ef074a16f3..0000000000 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/MainWindow.xaml.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.Foundation.Collections; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Controls.Primitives; -using Microsoft.UI.Xaml.Data; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Media; -using Microsoft.UI.Xaml.Navigation; - -// To learn more about WinUI, the WinUI project structure, -// and more about our project templates, see: http://aka.ms/winui-project-info. - -namespace $safeprojectname$; - -/// -/// An empty window that can be used on its own or navigated to within a Frame. -/// -public sealed partial class MainWindow : Window -{ - public MainWindow() - { - InitializeComponent(); - } -} diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/LockScreenLogo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/LockScreenLogo.scale-200.png deleted file mode 100644 index 7440f0d4bf7c7e26e4e36328738c68e624ee851e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/SplashScreen.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/SplashScreen.scale-200.png deleted file mode 100644 index 32f486a86792a5e34cd9a8261b394c49b48f86be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5372 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 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/Square44x44Logo.scale-200.png deleted file mode 100644 index f713bba67f551ef91020b75716a4dc8ebd744b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/StoreLogo.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/StoreLogo.png deleted file mode 100644 index a4586f26bdf7841cad10f39cdffe2aca3af252c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png deleted file mode 100644 index 7440f0d4bf7c7e26e4e36328738c68e624ee851e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 32f486a86792a5e34cd9a8261b394c49b48f86be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5372 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 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index f713bba67f551ef91020b75716a4dc8ebd744b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/StoreLogo.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/Assets/StoreLogo.png deleted file mode 100644 index a4586f26bdf7841cad10f39cdffe2aca3af252c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml b/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml deleted file mode 100644 index 5c061d1cbf..0000000000 --- a/dev/VSIX/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/MainWindow.xaml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/LockScreenLogo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/LockScreenLogo.scale-200.png deleted file mode 100644 index 7440f0d4bf7c7e26e4e36328738c68e624ee851e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/SplashScreen.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 32f486a86792a5e34cd9a8261b394c49b48f86be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5372 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 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index f713bba67f551ef91020b75716a4dc8ebd744b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< diff --git a/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/StoreLogo.png b/dev/VSIX/ProjectTemplates/Desktop/CSharp/UnitTestApp/Assets/StoreLogo.png deleted file mode 100644 index a4586f26bdf7841cad10f39cdffe2aca3af252c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/LockScreenLogo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/LockScreenLogo.scale-200.png deleted file mode 100644 index 7440f0d4bf7c7e26e4e36328738c68e624ee851e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/SplashScreen.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/SplashScreen.scale-200.png deleted file mode 100644 index 32f486a86792a5e34cd9a8261b394c49b48f86be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5372 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 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Square44x44Logo.scale-200.png deleted file mode 100644 index f713bba67f551ef91020b75716a4dc8ebd744b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/StoreLogo.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/StoreLogo.png deleted file mode 100644 index a4586f26bdf7841cad10f39cdffe2aca3af252c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/LockScreenLogo.scale-200.png deleted file mode 100644 index 7440f0d4bf7c7e26e4e36328738c68e624ee851e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 32f486a86792a5e34cd9a8261b394c49b48f86be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5372 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 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index f713bba67f551ef91020b75716a4dc8ebd744b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/StoreLogo.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/SingleProjectPackagedApp/Assets/StoreLogo.png deleted file mode 100644 index a4586f26bdf7841cad10f39cdffe2aca3af252c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/LockScreenLogo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/LockScreenLogo.scale-200.png deleted file mode 100644 index 7440f0d4bf7c7e26e4e36328738c68e624ee851e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/SplashScreen.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 32f486a86792a5e34cd9a8261b394c49b48f86be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5372 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 diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.scale-200.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index f713bba67f551ef91020b75716a4dc8ebd744b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< diff --git a/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/StoreLogo.png b/dev/VSIX/ProjectTemplates/Desktop/CppWinRT/UnitTestApp/Assets/StoreLogo.png deleted file mode 100644 index a4586f26bdf7841cad10f39cdffe2aca3af252c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; From a783b4d098a772726499a5a27e956c0632f33d65 Mon Sep 17 00:00:00 2001 From: v-arlysenko Date: Tue, 19 May 2026 00:38:30 +0200 Subject: [PATCH 04/16] Fix SamplesCompatTest NU1605: insert missing PackageVersion entries when rewriting Directory.Packages.props (#6473) --- test/ModifySampleAppsReferences.ps1 | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/test/ModifySampleAppsReferences.ps1 b/test/ModifySampleAppsReferences.ps1 index e90cefb06a..af95090680 100644 --- a/test/ModifySampleAppsReferences.ps1 +++ b/test/ModifySampleAppsReferences.ps1 @@ -41,9 +41,25 @@ Get-ChildItem -Recurse Directory.Packages.props -Path $SampleRepoRoot | foreach- foreach ($nugetPackageToVersion in $packagesToUpdateTable.GetEnumerator()) { - $newVersionString = 'PackageVersion Include="' + $nugetPackageToVersion.Key + '" Version="' + $nugetPackageToVersion.Value + '"' - $oldVersionString = 'PackageVersion Include="' + $nugetPackageToVersion.Key + '" Version="[-.0-9a-zA-Z]*"' - $content = $content -replace $oldVersionString, $newVersionString + $packageId = $nugetPackageToVersion.Key + $packageVersion = $nugetPackageToVersion.Value + $newVersionString = 'PackageVersion Include="' + $packageId + '" Version="' + $packageVersion + '"' + $oldVersionPattern = 'PackageVersion Include="' + [regex]::Escape($packageId) + '" Version="[-.0-9a-zA-Z]*"' + + if ($content -match $oldVersionPattern) + { + $content = $content -replace $oldVersionPattern, $newVersionString + } + else + { + # Missing entry: insert into the first ItemGroup. Ensures transitive + # Foundation dependencies (e.g. Microsoft.WindowsAppSDK.Base) get a + # centrally-managed PackageVersion matching Foundation; otherwise NuGet + # sees a downgrade and SamplesCompatTest fails with NU1605. + $insertion = "`r`n <" + $newVersionString + ' />' + $content = [regex]::Replace($content, '(]*>)', '$1' + $insertion, 1) + Write-Host "Inserted PackageVersion for $packageId ($packageVersion) into $($_.FullName)" + } } Set-Content -Path $_.FullName -Value $content From 1bf2a959b0f535803f668f3f3eae901ea18278f8 Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Mon, 25 May 2026 11:12:34 +0800 Subject: [PATCH 05/16] Fix Pipeline Error VSSDK1300 in CreateVsix: shorten Dev17 VSIX intermediate paths (#6496) Fix pipeline build error VSSDK1300 in CreateVsix: shorten Dev17 VSIX intermediate paths Long project names plus deep VSSDK extraction paths exceed MAX_PATH on CI. Alias Cpp17/Cs17 saves ~27 chars per path; restores headroom for new assets. --- dev/Templates/VSIX/Directory.Build.props | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/dev/Templates/VSIX/Directory.Build.props b/dev/Templates/VSIX/Directory.Build.props index e3a4539f9b..7979540dcb 100644 --- a/dev/Templates/VSIX/Directory.Build.props +++ b/dev/Templates/VSIX/Directory.Build.props @@ -24,7 +24,23 @@ $(MSBuildThisFileDirectory) $(SolutionDir)BuildOutput\ $(BuildOutput)obj\$(Platform)$(Configuration)\$(Deployment)\ - $(BuildOutputRoot)$(MSBuildProjectName)\ + + + + + <_VsixProjectFolderAlias>$(MSBuildProjectName) + <_VsixProjectFolderAlias Condition="'$(MSBuildProjectName)' == 'WindowsAppSDK.Cpp.Extension.Dev17'">Cpp17 + <_VsixProjectFolderAlias Condition="'$(MSBuildProjectName)' == 'WindowsAppSDK.Cs.Extension.Dev17'">Cs17 + + $(BuildOutputRoot)$(_VsixProjectFolderAlias)\ $(BaseIntermediateOutputPath) $(IntermediateOutputPath) $(OutputPath) From b7a3ea1a512cbbea4d9ad42dd65b8af21826b87e Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Thu, 28 May 2026 01:43:28 +0800 Subject: [PATCH 06/16] dotnet new WinUI3 templates 0.0.6-alpha (#6510) --- dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj b/dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj index e432695bf7..2e6c1b5931 100644 --- a/dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj +++ b/dev/Templates/Dotnet/WinAppSdk.CSharp.DotnetNewTemplates.csproj @@ -14,7 +14,7 @@ true Template Microsoft.WindowsAppSDK.WinUI.CSharp.Templates - 0.0.5-alpha + 0.0.6-alpha WinUI 3 C# Templates Microsoft Microsoft From 60daee2d3c52770520dece3b9336c85c11264543 Mon Sep 17 00:00:00 2001 From: Scott Jones Date: Wed, 27 May 2026 15:55:21 -0400 Subject: [PATCH 07/16] ApplicationData: Refactor to dual-type pattern for packaged/unpackaged (#6378) * ApplicationData: Refactor to dual-type pattern for packaged/unpackaged Replace runtime branching (if m_unpackagedApplicationData) with separate WinRT implementation types. Both ApplicationData and UnpackagedApplicationData now derive directly from ApplicationDataT, and the factory constructs the appropriate type. Same pattern applied to ApplicationDataContainer. This eliminates 17+ repeated if-checks, removes the shared_ptr indirection for containers, and makes each type self-contained with no branching. * Add [[maybe_unused]] to parameters in UnpackagedApplicationData Updated function signatures to use [[maybe_unused]] for unused parameters. --------- Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> --- dev/ApplicationData/M.W.S.ApplicationData.cpp | 98 +------------------ dev/ApplicationData/M.W.S.ApplicationData.h | 4 - .../M.W.S.ApplicationDataContainer.cpp | 42 -------- .../M.W.S.ApplicationDataContainer.h | 7 -- .../UnpackagedApplicationData.cpp | 30 ++++-- .../UnpackagedApplicationData.h | 10 +- .../UnpackagedApplicationDataContainer.cpp | 13 +-- .../UnpackagedApplicationDataContainer.h | 6 +- 8 files changed, 40 insertions(+), 170 deletions(-) diff --git a/dev/ApplicationData/M.W.S.ApplicationData.cpp b/dev/ApplicationData/M.W.S.ApplicationData.cpp index 3fd36a45d3..9890a1460a 100644 --- a/dev/ApplicationData/M.W.S.ApplicationData.cpp +++ b/dev/ApplicationData/M.W.S.ApplicationData.cpp @@ -7,6 +7,7 @@ #include "Microsoft.Windows.Storage.ApplicationData.g.cpp" #include "M.W.S.ApplicationDataContainer.h" +#include "UnpackagedApplicationData.h" #include @@ -24,25 +25,15 @@ static_assert(static_cast(winrt::Microsoft::Windows::Storage::Applicati namespace winrt::Microsoft::Windows::Storage::implementation { ApplicationData::ApplicationData(hstring const& packageFamilyName) : - m_unpackagedApplicationData(), m_applicationData(nullptr), m_packageFamilyName(packageFamilyName) { } ApplicationData::ApplicationData(winrt::Windows::Storage::ApplicationData& value, hstring const& packageFamilyName) : - m_unpackagedApplicationData(), m_applicationData(value), m_packageFamilyName(packageFamilyName) { } - ApplicationData::ApplicationData(hstring const& publisher, hstring const& product) : - m_unpackagedApplicationData(), - m_applicationData(nullptr), - m_packageFamilyName() - { - auto unpackagedApplicationData{ new ::Microsoft::Windows::Storage::UnpackagedApplicationData(publisher, product) }; - m_unpackagedApplicationData.reset(unpackagedApplicationData); - } winrt::Microsoft::Windows::Storage::ApplicationData ApplicationData::GetDefault() { const auto packageFamilyName{ ::AppModel::Identity::GetCurrentPackageFamilyName() }; @@ -114,25 +105,15 @@ namespace winrt::Microsoft::Windows::Storage::implementation _VerifyPublisher(publisher); _VerifyProduct(product); - return winrt::make(publisher, product); + return winrt::make(publisher, product); } bool ApplicationData::IsMachinePathSupported() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->IsMachinePathSupported(); - } - const auto path{ _MachinePath(m_packageFamilyName) }; return !path.empty(); } hstring ApplicationData::LocalCachePath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalCachePath(); - } - if (!m_applicationData) { return winrt::hstring{}; @@ -141,11 +122,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationData::LocalPath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalPath(); - } - if (!m_applicationData) { return winrt::hstring{}; @@ -154,21 +130,11 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationData::MachinePath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->MachinePath(); - } - const auto path{ _MachinePath(m_packageFamilyName) }; return winrt::hstring{ path.c_str() }; } hstring ApplicationData::SharedLocalPath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->SharedLocalPath(); - } - if (!m_applicationData) { return winrt::hstring{}; @@ -187,11 +153,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationData::TemporaryPath() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->TemporaryPath(); - } - if (!m_applicationData) { return winrt::hstring{}; @@ -200,11 +161,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::LocalCacheFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalCacheFolder(); - } - if (!m_applicationData) { return nullptr; @@ -213,11 +169,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::LocalFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalFolder(); - } - if (!m_applicationData) { return nullptr; @@ -226,11 +177,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::MachineFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->MachineFolder(); - } - const auto path{ MachinePath() }; if (path.empty()) { @@ -240,11 +186,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::SharedLocalFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->SharedLocalFolder(); - } - if (!m_applicationData) { return nullptr; @@ -253,11 +194,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::TemporaryFolder() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->TemporaryFolder(); - } - if (!m_applicationData) { return nullptr; @@ -266,11 +202,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Microsoft::Windows::Storage::ApplicationDataContainer ApplicationData::LocalSettings() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->LocalSettings(); - } - if (!m_applicationData) { return nullptr; @@ -280,11 +211,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Foundation::IAsyncAction ApplicationData::ClearAsync(winrt::Microsoft::Windows::Storage::ApplicationDataLocality locality) { - if (m_unpackagedApplicationData) - { - co_await m_unpackagedApplicationData->ClearAsync(locality); - } - if (!m_applicationData) { co_return; @@ -300,11 +226,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Foundation::IAsyncAction ApplicationData::ClearPublisherCacheFolderAsync(hstring folderName) { - if (m_unpackagedApplicationData) - { - co_await m_unpackagedApplicationData->ClearPublisherCacheFolderAsync(folderName); - } - if (!m_applicationData) { co_return; @@ -313,11 +234,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } void ApplicationData::Close() { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->Close(); - } - if (m_applicationData) { m_applicationData.Close(); @@ -325,11 +241,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationData::GetPublisherCachePath(hstring const& folderName) { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->GetPublisherCachePath(folderName); - } - auto folder{ GetPublisherCacheFolder(folderName) }; winrt::hstring path; if (folder) @@ -340,11 +251,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Storage::StorageFolder ApplicationData::GetPublisherCacheFolder(hstring const& folderName) { - if (m_unpackagedApplicationData) - { - return m_unpackagedApplicationData->GetPublisherCacheFolder(folderName); - } - if (!m_applicationData) { return nullptr; diff --git a/dev/ApplicationData/M.W.S.ApplicationData.h b/dev/ApplicationData/M.W.S.ApplicationData.h index 11bb311a84..0d9f975561 100644 --- a/dev/ApplicationData/M.W.S.ApplicationData.h +++ b/dev/ApplicationData/M.W.S.ApplicationData.h @@ -5,8 +5,6 @@ #include "Microsoft.Windows.Storage.ApplicationData.g.h" -#include "UnpackagedApplicationData.h" - namespace winrt::Microsoft::Windows::Storage::implementation { struct ApplicationData : ApplicationDataT @@ -14,7 +12,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation ApplicationData() = default; ApplicationData(hstring const& packageFamilyName); ApplicationData(winrt::Windows::Storage::ApplicationData& value, hstring const& packageFamilyName); - ApplicationData(hstring const& publisher, hstring const& product); static winrt::Microsoft::Windows::Storage::ApplicationData GetDefault(); static winrt::Microsoft::Windows::Storage::ApplicationData GetForUser(winrt::Windows::System::User user); @@ -47,7 +44,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation static void _VerifyProduct(winrt::hstring const& string); private: - std::unique_ptr<::Microsoft::Windows::Storage::UnpackagedApplicationData> m_unpackagedApplicationData; winrt::Windows::Storage::ApplicationData m_applicationData; winrt::hstring m_packageFamilyName; }; diff --git a/dev/ApplicationData/M.W.S.ApplicationDataContainer.cpp b/dev/ApplicationData/M.W.S.ApplicationDataContainer.cpp index 048f144cc3..b5181a619f 100644 --- a/dev/ApplicationData/M.W.S.ApplicationDataContainer.cpp +++ b/dev/ApplicationData/M.W.S.ApplicationDataContainer.cpp @@ -6,26 +6,14 @@ #include "M.W.S.ApplicationDataContainer.h" #include "Microsoft.Windows.Storage.ApplicationDataContainer.g.cpp" -#include "UnpackagedApplicationDataContainer.h" - namespace winrt::Microsoft::Windows::Storage::implementation { ApplicationDataContainer::ApplicationDataContainer(winrt::Windows::Storage::ApplicationDataContainer const& value) : m_applicationDataContainer(value) { } - ApplicationDataContainer::ApplicationDataContainer(std::shared_ptr<::Microsoft::Windows::Storage::UnpackagedApplicationDataContainer> const& value) : - m_unpackagedApplicationDataContainer(value), - m_applicationDataContainer(nullptr) - { - } winrt::Windows::Foundation::Collections::IMap ApplicationDataContainer::Containers() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Containers(); - } - winrt::Windows::Foundation::Collections::IMap map{ winrt::single_threaded_map() }; auto containers{ m_applicationDataContainer.Containers() }; for (auto container : containers) @@ -37,20 +25,10 @@ namespace winrt::Microsoft::Windows::Storage::implementation } hstring ApplicationDataContainer::Name() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Name(); - } - return m_applicationDataContainer.Name(); } winrt::Microsoft::Windows::Storage::ApplicationDataLocality ApplicationDataContainer::Locality() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Locality(); - } - static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataLocality::Local) == static_cast(winrt::Windows::Storage::ApplicationDataLocality::Local)); static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataLocality::LocalCache) == static_cast(winrt::Windows::Storage::ApplicationDataLocality::LocalCache)); static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataLocality::Temporary) == static_cast(winrt::Windows::Storage::ApplicationDataLocality::Temporary)); @@ -59,29 +37,14 @@ namespace winrt::Microsoft::Windows::Storage::implementation } winrt::Windows::Foundation::Collections::IPropertySet ApplicationDataContainer::Values() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Values(); - } - return m_applicationDataContainer.Values(); } void ApplicationDataContainer::Close() { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->Close(); - } - return m_applicationDataContainer.Close(); } winrt::Microsoft::Windows::Storage::ApplicationDataContainer ApplicationDataContainer::CreateContainer(hstring const& name, winrt::Microsoft::Windows::Storage::ApplicationDataCreateDisposition const& disposition) { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->CreateContainer(name, disposition); - } - static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataCreateDisposition::Always) == static_cast(winrt::Windows::Storage::ApplicationDataCreateDisposition::Always)); static_assert(static_cast(winrt::Microsoft::Windows::Storage::ApplicationDataCreateDisposition::Existing) == static_cast(winrt::Windows::Storage::ApplicationDataCreateDisposition::Existing)); @@ -90,11 +53,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation } void ApplicationDataContainer::DeleteContainer(hstring const& name) { - if (m_unpackagedApplicationDataContainer) - { - return m_unpackagedApplicationDataContainer->DeleteContainer(name); - } - m_applicationDataContainer.DeleteContainer(name); } } diff --git a/dev/ApplicationData/M.W.S.ApplicationDataContainer.h b/dev/ApplicationData/M.W.S.ApplicationDataContainer.h index c22bcce957..cb96cb97af 100644 --- a/dev/ApplicationData/M.W.S.ApplicationDataContainer.h +++ b/dev/ApplicationData/M.W.S.ApplicationDataContainer.h @@ -5,18 +5,12 @@ #include "Microsoft.Windows.Storage.ApplicationDataContainer.g.h" -namespace Microsoft::Windows::Storage -{ - struct UnpackagedApplicationDataContainer; -} - namespace winrt::Microsoft::Windows::Storage::implementation { struct ApplicationDataContainer : ApplicationDataContainerT { ApplicationDataContainer() = default; ApplicationDataContainer(winrt::Windows::Storage::ApplicationDataContainer const& value); - ApplicationDataContainer(std::shared_ptr<::Microsoft::Windows::Storage::UnpackagedApplicationDataContainer> const& value); winrt::Windows::Foundation::Collections::IMap Containers(); hstring Name(); @@ -27,7 +21,6 @@ namespace winrt::Microsoft::Windows::Storage::implementation void DeleteContainer(hstring const& name); private: - std::shared_ptr<::Microsoft::Windows::Storage::UnpackagedApplicationDataContainer> m_unpackagedApplicationDataContainer; winrt::Windows::Storage::ApplicationDataContainer m_applicationDataContainer; }; } diff --git a/dev/ApplicationData/UnpackagedApplicationData.cpp b/dev/ApplicationData/UnpackagedApplicationData.cpp index e1d3ba000f..975539e5ce 100644 --- a/dev/ApplicationData/UnpackagedApplicationData.cpp +++ b/dev/ApplicationData/UnpackagedApplicationData.cpp @@ -12,7 +12,7 @@ #include "ApplicationDataTelemetry.h" -namespace Microsoft::Windows::Storage +namespace winrt::Microsoft::Windows::Storage::implementation { UnpackagedApplicationData::UnpackagedApplicationData(winrt::hstring const& publisher, winrt::hstring const& product) : m_publisher(publisher), @@ -21,6 +21,23 @@ namespace Microsoft::Windows::Storage m_temporaryPath() { } + // The following functions are not implemented for the UnpackagedApplicationData implementation of ApplicationDataT + winrt::Microsoft::Windows::Storage::ApplicationData UnpackagedApplicationData::GetDefault() + { + throw winrt::hresult_not_implemented(); + } + winrt::Microsoft::Windows::Storage::ApplicationData UnpackagedApplicationData::GetForUser([[maybe_unused]] winrt::Windows::System::User user) + { + throw winrt::hresult_not_implemented(); + } + winrt::Microsoft::Windows::Storage::ApplicationData UnpackagedApplicationData::GetForPackageFamily([[maybe_unused]] winrt::hstring const& packageFamilyName) + { + throw winrt::hresult_not_implemented(); + } + winrt::Microsoft::Windows::Storage::ApplicationData UnpackagedApplicationData::GetForUnpackaged([[maybe_unused]] winrt::hstring const& publisher, [[maybe_unused]] winrt::hstring const& product) + { + throw winrt::hresult_not_implemented(); + } bool UnpackagedApplicationData::IsMachinePathSupported() { _VerifyNotClosed(); @@ -153,9 +170,8 @@ namespace Microsoft::Windows::Storage THROW_IF_WIN32_ERROR(::RegOpenCurrentUser(KEY_READ | KEY_WRITE, currentUserKey.put())); auto subKey{ std::format(L"SOFTWARE\\{}\\{}", m_publisher, m_product) }; auto key{ wil::reg::create_shared_key(currentUserKey.get(), subKey.c_str(), wil::reg::key_access::readwrite) }; - auto container{ std::make_shared( - std::move(key), winrt::hstring{}, winrt::Microsoft::Windows::Storage::ApplicationDataLocality::Local) }; - return winrt::make(container); + return winrt::make( + std::move(key), winrt::hstring{}, winrt::Microsoft::Windows::Storage::ApplicationDataLocality::Local); } winrt::Windows::Foundation::IAsyncAction UnpackagedApplicationData::ClearAsync(winrt::Microsoft::Windows::Storage::ApplicationDataLocality locality) { @@ -219,7 +235,7 @@ namespace Microsoft::Windows::Storage co_return; } - winrt::Windows::Foundation::IAsyncAction UnpackagedApplicationData::ClearPublisherCacheFolderAsync(winrt::hstring folderName) + winrt::Windows::Foundation::IAsyncAction UnpackagedApplicationData::ClearPublisherCacheFolderAsync([[maybe_unused]] winrt::hstring folderName) { _VerifyNotClosed(); @@ -233,14 +249,14 @@ namespace Microsoft::Windows::Storage m_localPath.clear(); m_temporaryPath.clear(); } - winrt::hstring UnpackagedApplicationData::GetPublisherCachePath(winrt::hstring const& folderName) + winrt::hstring UnpackagedApplicationData::GetPublisherCachePath([[maybe_unused]] winrt::hstring const& folderName) { _VerifyNotClosed(); // ApplicationData.PublisherCacheFolder has no unpackaged equivalent throw winrt::hresult_not_implemented(); } - winrt::Windows::Storage::StorageFolder UnpackagedApplicationData::GetPublisherCacheFolder(winrt::hstring const& folderName) + winrt::Windows::Storage::StorageFolder UnpackagedApplicationData::GetPublisherCacheFolder([[maybe_unused]] winrt::hstring const& folderName) { _VerifyNotClosed(); diff --git a/dev/ApplicationData/UnpackagedApplicationData.h b/dev/ApplicationData/UnpackagedApplicationData.h index 4424cde99d..7a32388852 100644 --- a/dev/ApplicationData/UnpackagedApplicationData.h +++ b/dev/ApplicationData/UnpackagedApplicationData.h @@ -3,15 +3,19 @@ #pragma once -#include "M.W.S.ApplicationDataContainer.h" +#include "Microsoft.Windows.Storage.ApplicationData.g.h" -namespace Microsoft::Windows::Storage +namespace winrt::Microsoft::Windows::Storage::implementation { - struct UnpackagedApplicationData + struct UnpackagedApplicationData : ApplicationDataT { UnpackagedApplicationData() = default; UnpackagedApplicationData(winrt::hstring const& publisher, winrt::hstring const& product); + static winrt::Microsoft::Windows::Storage::ApplicationData GetDefault(); + static winrt::Microsoft::Windows::Storage::ApplicationData GetForUser(winrt::Windows::System::User user); + static winrt::Microsoft::Windows::Storage::ApplicationData GetForPackageFamily(winrt::hstring const& packageFamilyName); + static winrt::Microsoft::Windows::Storage::ApplicationData GetForUnpackaged(winrt::hstring const& publisher, winrt::hstring const& product); bool IsMachinePathSupported(); winrt::hstring LocalCachePath(); winrt::hstring LocalPath(); diff --git a/dev/ApplicationData/UnpackagedApplicationDataContainer.cpp b/dev/ApplicationData/UnpackagedApplicationDataContainer.cpp index ce81b681eb..ee350a7941 100644 --- a/dev/ApplicationData/UnpackagedApplicationDataContainer.cpp +++ b/dev/ApplicationData/UnpackagedApplicationDataContainer.cpp @@ -7,7 +7,7 @@ #include "Validate.h" -namespace Microsoft::Windows::Storage +namespace winrt::Microsoft::Windows::Storage::implementation { namespace { @@ -835,9 +835,8 @@ namespace Microsoft::Windows::Storage for (const auto& keyData : wil::make_range(wil::reg::key_iterator{ m_key.get() }, wil::reg::key_iterator{})) { auto subKey{ wil::reg::open_shared_key(m_key.get(), keyData.name.c_str(), wil::reg::key_access::readwrite) }; - auto subContainer{ std::make_shared(std::move(subKey), winrt::hstring{ keyData.name }, m_locality) }; - auto wrappedContainer{ winrt::make(subContainer) }; - map.Insert(winrt::hstring{ keyData.name }, wrappedContainer); + auto subContainer{ winrt::make(std::move(subKey), winrt::hstring{ keyData.name }, m_locality) }; + map.Insert(winrt::hstring{ keyData.name }, subContainer); } return map; } @@ -879,14 +878,12 @@ namespace Microsoft::Windows::Storage if (disposition == winrt::Microsoft::Windows::Storage::ApplicationDataCreateDisposition::Existing) { auto subKey{ wil::reg::open_shared_key(m_key.get(), name.c_str(), wil::reg::key_access::readwrite) }; - auto subContainer{ std::make_shared(std::move(subKey), name, m_locality) }; - return winrt::make(subContainer); + return winrt::make(std::move(subKey), name, m_locality); } else { auto subKey{ wil::reg::create_shared_key(m_key.get(), name.c_str(), wil::reg::key_access::readwrite) }; - auto subContainer{ std::make_shared(std::move(subKey), name, m_locality) }; - return winrt::make(subContainer); + return winrt::make(std::move(subKey), name, m_locality); } } diff --git a/dev/ApplicationData/UnpackagedApplicationDataContainer.h b/dev/ApplicationData/UnpackagedApplicationDataContainer.h index b6e660da9a..f95e85357b 100644 --- a/dev/ApplicationData/UnpackagedApplicationDataContainer.h +++ b/dev/ApplicationData/UnpackagedApplicationDataContainer.h @@ -3,11 +3,11 @@ #pragma once -#include "M.W.S.ApplicationDataContainer.h" +#include "Microsoft.Windows.Storage.ApplicationDataContainer.g.h" -namespace Microsoft::Windows::Storage +namespace winrt::Microsoft::Windows::Storage::implementation { - struct UnpackagedApplicationDataContainer + struct UnpackagedApplicationDataContainer : ApplicationDataContainerT { UnpackagedApplicationDataContainer() = default; UnpackagedApplicationDataContainer(wil::shared_hkey key, winrt::hstring const& name, winrt::Microsoft::Windows::Storage::ApplicationDataLocality locality); From 912dbdf3dfcc02657002f6dc8b702c96e8b4f414 Mon Sep 17 00:00:00 2001 From: Felipe G Date: Wed, 27 May 2026 21:08:40 -0700 Subject: [PATCH 08/16] Use IsPackagedProcess() for package detection in PRI fallback (#6500) Replace inferring packaged state from GetDefaultPriFileForCurrentPackage's HRESULT with AppModel::Identity::IsPackagedProcess() which properly handles GetCurrentPackageFullName errors. --- .../src/Helper.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp index 58d419c808..c3fb916caa 100644 --- a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp +++ b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/Helper.cpp @@ -3,6 +3,7 @@ #include "pch.h" #include "frameworkudk\ResourceManager.h" +#include bool IsResourceNotFound(HRESULT hr) { @@ -83,7 +84,7 @@ HRESULT GetDefaultPriFile(winrt::hstring& filePath) // GetDefaultPriFileForCurrentPackage will not handle the new case where // resources.pri is in the parent folder. - bool isPackaged = (hr != HRESULT_FROM_WIN32(APPMODEL_ERROR_NO_PACKAGE)); + bool isPackaged = AppModel::Identity::IsPackagedProcess(); hr = GetDefaultPriFileForCurentModule(isPackaged, filePath); // Sparse-packaged apps have identity but deploy PRI files as loose files; fall back to unpackaged discovery which also searches for "[modulename].pri". From b2a79b9a51b8d59deccfe1a3dcef5b6fa2e50f87 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 28 May 2026 13:53:55 -0700 Subject: [PATCH 09/16] [main] Update dependencies from microsoft/ProjectReunion/WindowsAppSDKAggregator (#6436) * Update dependencies from https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator build 2.0.4-dev.experimental1 On relative base path root Microsoft.WindowsAppSDK.Base From Version 2.0.3-dev.experimental1 -> To Version 2.0.4-dev.experimental1 * Update dependencies from https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator build 2.0.6-dev.experimental1 On relative base path root Microsoft.WindowsAppSDK.Base From Version 2.0.3-dev.experimental1 -> To Version 2.0.6-dev.experimental1 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> --- eng/Version.Details.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e8c4bf1fec..c705a7c4eb 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -39,9 +39,9 @@ https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP a007e3a86ec33bad02efd987d6a4617e36c78c59 - + https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator - 506407fef12fef366da3ed1ba2ee955d46d48fa1 + 878e3c77a4b36213ec1d43c782d16663efa5561c https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP From 0c48f85ab9c65f5918f5c885ae8e729d19f63ec8 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 20:56:22 +0000 Subject: [PATCH 10/16] [main] Update dependencies from microsoft/LiftedIXP/DCPP (#6430) * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260424.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1867.260423-1637.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260424.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260426.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1868.260426-1435.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260426.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260429.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1869.260429-1555.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260429.2 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260503.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1870.260503-1615.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260503.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260507.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1871.260506-1640.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260507.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260508.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1872.260508-1632.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260508.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260510.3 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1873.260510-1146.2 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260510.3 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260513.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1874.260513-0830.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260513.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260518.2 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1876.260518-0915.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260518.2 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260522.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1877.260521-1650.1 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260522.1 * Update dependencies from https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP build 20260525.1 On relative base path root Microsoft.FrameworkUdk , Microsoft.ProjectReunion.InteractiveExperiences.TransportPackage From Version 3.0.0-experimental-27300.1866.260419-1600.1 -> To Version 3.0.0-experimental-27300.1878.260525-0800.0 Microsoft.WindowsAppSDK.InteractiveExperiences From Version 3.0.0-experimental-Rolling.20260419.2 -> To Version 3.0.0-experimental-Rolling.20260525.1 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: agniuks <41223743+agniuks@users.noreply.github.com> --- eng/Version.Details.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c705a7c4eb..685ab4cc74 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -27,25 +27,25 @@ --> - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - a007e3a86ec33bad02efd987d6a4617e36c78c59 + bcefb53ef31cde2d4d7e97760db1970335047aed https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKClosed f52676312ebf1d66ef59731feb4fad29a713a897 - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - a007e3a86ec33bad02efd987d6a4617e36c78c59 + bcefb53ef31cde2d4d7e97760db1970335047aed https://dev.azure.com/microsoft/ProjectReunion/_git/WindowsAppSDKAggregator 878e3c77a4b36213ec1d43c782d16663efa5561c - + https://dev.azure.com/microsoft/LiftedIXP/_git/DCPP - a007e3a86ec33bad02efd987d6a4617e36c78c59 + bcefb53ef31cde2d4d7e97760db1970335047aed From fe1eb33a8723b967f40bf9111b7fc69611a93ef5 Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Mon, 1 Jun 2026 10:24:17 -0700 Subject: [PATCH 11/16] Add missing AppIcon.ico entry to C# SingleProjectPackagedApp and Wapproj vstemplates (#6501) * Add missing AppIcon.ico entry to SingleProjectPackagedApp vstemplate The .vstemplate was missing the AppIcon.ico ProjectItem in its Assets folder, so Visual Studio never copied the icon into new projects created from this template, causing APPX0702 build errors. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add missing AppIcon.ico entry to BlankApp (wapproj) vstemplate Same issue as SingleProjectPackagedApp: the .vstemplate was missing the AppIcon.ico ProjectItem, so Visual Studio never copied the icon into new projects created from this template, causing APPX0702 build errors. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate | 1 + .../WinUI.Desktop.Cs.SingleProjectPackagedApp.vstemplate | 1 + 2 files changed, 2 insertions(+) diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate index 6f714e53a2..eb8de9fc02 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/WinUI.Desktop.Cs.BlankApp.vstemplate @@ -34,6 +34,7 @@ App.xaml.cs MainWindow.xaml MainWindow.xaml.cs + AppIcon.ico diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.vstemplate index 7690fc7da9..dca0c580ce 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/SingleProjectPackagedApp/WinUI.Desktop.Cs.SingleProjectPackagedApp.vstemplate @@ -49,6 +49,7 @@ Square44x44Logo.scale-200.png Square44x44Logo.targetsize-24_altform-unplated.png Square44x44Logo.targetsize-48_altform-lightunplated.png + AppIcon.ico StoreLogo.png Wide310x150Logo.scale-200.png From 7ce6781cca2ef93a1c29d5f7818064ce9246fc4a Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Mon, 1 Jun 2026 16:59:07 -0700 Subject: [PATCH 12/16] Set to false in UnitTest project template to fix CS0017 when building the template project in VS (#6520) --- .../Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj index 764fe149c1..15e301fd44 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/UnitTestApp/ProjectTemplate.csproj @@ -13,6 +13,7 @@ true enable enable + false From d4e1798051166175aa94a1983ae856648cebe605 Mon Sep 17 00:00:00 2001 From: Scott Jones Date: Thu, 4 Jun 2026 15:25:23 -0400 Subject: [PATCH 13/16] RuntimeCompatibilityOptions: Containment v2 foundation (catalog + Apply pre-prune + cpp-local release enum) (#6534) Implements the foundation half of the Containment v2 design proposal (specs/design/RuntimeCompatibilityContainmentV2.md, merged via the ADO mirror): a WASDK-owned per-release catalog whose disabled-list pruning runs in RuntimeCompatibilityOptions::Apply, decoupling servicing engineers from naming a target release version at the callsite. This PR is intentionally scoped to the WASDK side. The FrameworkUdk worker keeps doing its existing scan over the disabled-changes list that SetConfiguration receives - the only thing it sees that's new is that the list is now sorted ascending. FrUdk-side changes (worker binary_search + the WinAppSDKPatchVersion enum deprecation) ship in companion PR microsoft.visualstudio.com/OS/_git/os.2020/pullrequest/15764977. Centralizing the patch-version enum ----------------------------------- The WinAppSDK release-version enum (and its constexpr helper) is now **file-local** to RuntimeCompatibilityOptions.cpp - a private WinAppSDKReleaseVersion in the .cpp's anonymous namespace, named to sidestep the visible-name collision with the still-unscoped legacy WinAppSDKPatchVersion type that FrUdk's header exports. Goals: * Servicing engineers using IsChangeEnabled() (1-arg form) never name a release version anywhere in their code. * Release engineers add new enumerators only inside Apply's .cpp - no public header changes, no API review. * The dependency from WindowsAppSDK release engineering onto the FrameworkUdk header's enum is broken. FrUdk's WinAppSDKPatchVersionDeprecated (the renamed legacy enum) carries only a frozen sentinel set and is no longer maintained per WASDK release. On `main` the enum carries only the two sentinel values (WinAppSDK_Latest = 999999999 and WinAppSDK_Security = 0) and the production catalog is empty. Release engineering populates per-release enumerators and groups at branch cut. What changed ------------ * dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp - New file-local WinAppSDKReleaseVersionFromValues + scoped enum WinAppSDKReleaseVersion in the anonymous namespace. Mirrors the selected patch level into config.patchVersion via decltype so the cast remains portable across FrUdk's pre- and post-deprecation enum shapes (the second cast keeps Containment_SetConfiguration's identity-divergence check working). - CatalogGroup + MakeGroup helpers, two catalog arrays (s_catalogGroupsProd, empty on main; s_catalogGroupsTest with two synthetic groups straddling WinAppSDK_Latest). - ContainmentTestInitialize(bool) swaps the active catalog at test setup time. - Apply() now builds a single sorted disabledChanges vector from the union of the apps explicit DisabledChanges list and every catalog group whose releaseVersion > effective patchVersion. - Apply() guards both PatchLevel branches against the {0,0,0} default sentinel that would otherwise collapse config.patchVersion to 0 in dev builds where WINDOWSAPPSDK_RELEASE_MAJOR/MINOR=0/0. * dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def - Exports ContainmentTestInitialize from Microsoft.WindowsAppRuntime.dll for the test catalog swap. * test/Compatibility/CompatibilityTests/CompatibilityTests.cpp - New helper resolves ContainmentTestInitialize via GetModuleHandleW/GetProcAddress on the bootstrap-loaded framework copy of Microsoft.WindowsAppRuntime.dll (a static import would resolve to a test-folder copy with the production catalog and the swap would have no effect). - Calls ContainmentTestInitialize(true) at TEST_METHOD_SETUP and (false) at TEST_METHOD_CLEANUP. - Adds VerifyCatalogPrePrunesByPatchLevel and VerifyCatalogAndExplicitDisabledChangesCombine to exercise both branches of Applys pre-prune walk and the union with explicit DisabledChanges. * test/Compatibility/CompatibilityTests/CompatibilityTests.vcxproj - Adds delayimp.lib + Microsoft.WindowsAppRuntime.dll so the (defensive) static import on ContainmentTestInitialize does not force the loader to find a copy at TE.exe startup. Currently emits LNK4199 ... no imports found which is the desired state. * specs/Compatibility/RuntimeCompatibilityOptions.md - Adds a banner pointing at the new authoring model and rollout plan. * specs/Compatibility/WASDK-ContainmentV2-Plan.md (new) - Rollout plan: goals recap, role boundaries, four-PR sequence, end-to-end validation status, test-catalog explanation, and the notable engineering details (Apply guard, GetModuleHandle approach, delay-load rationale, enum localization rationale). Validation ---------- End-to-end CompatibilityTests pass against locally-built and -installed framework MSIXes in both worktrees: * main worktree (catalog empty): 6/6 pass. * release/2.0-stable worktree (catalog populated with 8 production IDs across WinAppSDK_2_1_0 and WinAppSDK_2_1_5 groups): 6/6 pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../RuntimeCompatibilityOptions.cpp | 186 +++++++++++++++++- .../WindowsAppRuntime.def | 3 + .../RuntimeCompatibilityOptions.md | 8 + .../Compatibility/WASDK-ContainmentV2-Plan.md | 147 ++++++++++++++ .../CompatibilityTests/CompatibilityTests.cpp | 102 ++++++++++ .../CompatibilityTests.vcxproj | 12 +- 6 files changed, 451 insertions(+), 7 deletions(-) create mode 100644 specs/Compatibility/WASDK-ContainmentV2-Plan.md diff --git a/dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp b/dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp index 65310ff775..cd16e74f05 100644 --- a/dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp +++ b/dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp @@ -6,6 +6,138 @@ #include "Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeCompatibilityOptions.g.cpp" #include "AssemblyInfo.h" #include +#include + +namespace +{ + // Per-release groups of WinAppSDK contained change IDs. Each group's + // releaseVersion is the patch release in which the contained change first + // shipped. RuntimeCompatibilityOptions::Apply() walks the active catalog at + // startup and pre-prunes (adds to the disabled list) any group whose + // releaseVersion is greater than the runtime's effective patch level. + // + // Release engineering: at branch cut, add a new release group to + // s_catalogGroupsProd below for any new WINAPPSDK_CHANGE_* IDs that landed + // in os.2020 FrameworkUdk Containment.h since the previous branch. + // + // Servicing engineers do NOT edit this file. They only add the + // #define WINAPPSDK_CHANGE_FOO id macro in their component source. + // Release engineering performs the catalog roll-up. + // + // The WinAppSDK_Security pseudo-version is reserved for security fixes - + // entries in a security group are catalog-tracked but are never + // auto-disabled by Apply's pre-prune walk because their releaseVersion (0) + // is never greater than any effective patch level. + // + // WinAppSDKReleaseVersion is defined locally here (rather than alongside + // FrameworkUdk's Containment.h enum) to break the per-release maintenance + // coupling between FrUdk and Foundation. It is named WinAppSDKReleaseVersion + // rather than WinAppSDKPatchVersion to avoid colliding with the legacy + // unscoped enum type name still exposed by older Containment.h headers + // (renamed there to WinAppSDKPatchVersionDeprecated in newer FrUdk + // revisions). The scoped enum keeps all release-version constants + // (WinAppSDK_Latest, WinAppSDK_Security, and per-release WinAppSDK_M_m_p + // values added by release engineering as the catalog grows) confined to + // this translation unit; no other component should reference them. + // WinAppSDKReleaseVersionFromValues mirrors the historical + // WinAppSDKPatchVersionFromValues encoding (major*1000000 + minor*1000 + patch) + // so the WindowsAppRuntimeVersion -> WinAppSDKReleaseVersion conversion + // is consistent with the encoding release engineering uses when adding + // new per-release enumerators below. + constexpr UINT32 WinAppSDKReleaseVersionFromValues(UINT32 major, UINT32 minor, UINT32 patch) + { + return (major * 1000000) + (minor * 1000) + patch; + } + + enum class WinAppSDKReleaseVersion : UINT32 + { + // No per-release enumerators on main today - the production catalog + // (s_catalogGroupsProd) is empty. Release engineering adds a + // WinAppSDK_X_Y_Z enumerator here only when the corresponding + // s_changes_X_Y_Z[] group is added below. WinAppSDK_Latest is the + // default "newest possible" sentinel used by Apply when no explicit + // patch level is requested; WinAppSDK_Security is the + // catalog-tracked-but-never-pre-pruned sentinel used by security + // change groups. + WinAppSDK_Latest = 999999999, + WinAppSDK_Security = 0, + }; + + struct CatalogGroup + { + const UINT32* changes; + UINT32 count; + WinAppSDKReleaseVersion releaseVersion; + }; + + template + constexpr CatalogGroup MakeGroup(const UINT32(&arr)[N], WinAppSDKReleaseVersion v) + { + return { arr, static_cast(N), v }; + } + + // Test-only catalog. Activated by ContainmentTestInitialize(true). Holds + // two groups whose releaseVersion straddles the runtime's effective + // patch level under the default WinAppSDKRuntimeConfiguration (Apply + // resolves an unspecified patch level to WinAppSDKReleaseVersion::WinAppSDK_Latest). + // Together they exercise both branches of Apply's pre-prune walk and + // span the changeId value range so that std::sort (Apply) and + // std::binary_search (FrUdk worker) are probed at both ends: + // + // * s_enabled_changes_test is pinned at WinAppSDK_Latest - 1, so + // its releaseVersion is NOT greater than the effective patch level. + // Apply prunes the group OUT of disabledChanges; these IDs remain + // ENABLED at runtime. {1, 2, 3} = small-end IDs that must not + // appear in the final sorted disabledChanges set. + // + // * s_disabled_changes_test is pinned at WinAppSDK_Latest + 1, so + // its releaseVersion IS greater than the effective patch level. + // Apply preserves the group IN disabledChanges; these IDs are + // DISABLED at runtime. {0, 99999999} = smallest representable ID + // and a high-value sentinel; they must appear in the final sorted + // disabledChanges set. + // + // Unit tests call IsChangeEnabled() (the 1-argument form) so the + // catalog pre-prune is the only mechanism that disables changes. + // Production callsites must not reference 0, 1, 2, 3, or 99999999. + constexpr UINT32 s_enabled_changes_test[] = { 1, 2, 3 }; + constexpr UINT32 s_disabled_changes_test[] = { 0, 99999999 }; + constexpr CatalogGroup s_catalogGroupsTest[] = { + MakeGroup(s_enabled_changes_test, + static_cast(static_cast(WinAppSDKReleaseVersion::WinAppSDK_Latest) - 1)), + MakeGroup(s_disabled_changes_test, + static_cast(static_cast(WinAppSDKReleaseVersion::WinAppSDK_Latest) + 1)), + }; + + // Production catalog. Empty until the first per-release group lands; we + // use pointer+count rather than an array so the empty state is well-formed + // in C++ (which disallows zero-sized arrays). When the first contained + // change ships, release engineering should replace these two lines with: + // constexpr CatalogGroup s_catalogGroupsProd[] = { MakeGroup(...), ... }; + // constexpr size_t s_catalogGroupsProdCount = std::size(s_catalogGroupsProd); + constexpr CatalogGroup const* s_catalogGroupsProd{ nullptr }; + constexpr size_t s_catalogGroupsProdCount{ 0 }; + + // Active catalog. ContainmentTestInitialize(bool) swaps these pointers + // between the production and test catalogs. Apply() reads them at runtime. + const CatalogGroup* s_catalogGroup{ s_catalogGroupsProd }; + size_t s_catalogGroupCount{ s_catalogGroupsProdCount }; +} + +STDAPI ContainmentTestInitialize(bool enableTest) noexcept try +{ + if (enableTest) + { + s_catalogGroup = s_catalogGroupsTest; + s_catalogGroupCount = std::size(s_catalogGroupsTest); + } + else + { + s_catalogGroup = s_catalogGroupsProd; + s_catalogGroupCount = s_catalogGroupsProdCount; + } + return S_OK; +} CATCH_RETURN(); namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implementation { @@ -28,19 +160,44 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem } } - // Apply the patch level which applies to the major.minor version, if any. - if (m_patchLevel1.Major == WINDOWSAPPSDK_RELEASE_MAJOR && m_patchLevel1.Minor == WINDOWSAPPSDK_RELEASE_MINOR) + // Resolve the effective patch level for catalog pre-prune. This is owned + // entirely by WinAppSDK now - FrameworkUdk's Containment_GetChangeEnabled + // worker no longer compares against any per-change patch version. + // A default-initialized WindowsAppRuntimeVersion is {0,0,0}; treat that as + // "not set" rather than as a request to pin to 0.0.0. (In production builds + // WINDOWSAPPSDK_RELEASE_MAJOR is > 0 so this case never arises; in dev builds + // the macro is 0/0 and the unset sentinel would otherwise spuriously match.) + WinAppSDKReleaseVersion runtimePatchLevel{ WinAppSDKReleaseVersion::WinAppSDK_Latest }; + if (m_patchLevel1.Major == WINDOWSAPPSDK_RELEASE_MAJOR && m_patchLevel1.Minor == WINDOWSAPPSDK_RELEASE_MINOR + && (m_patchLevel1.Major != 0 || m_patchLevel1.Minor != 0 || m_patchLevel1.Patch != 0)) { // Apply patch level 1 - config.patchVersion = (WinAppSDKPatchVersion)WinAppSDKPatchVersionFromValues(m_patchLevel1.Major, m_patchLevel1.Minor, m_patchLevel1.Patch); + runtimePatchLevel = static_cast( + WinAppSDKReleaseVersionFromValues(m_patchLevel1.Major, m_patchLevel1.Minor, m_patchLevel1.Patch)); } - else if (m_patchLevel2.Major == WINDOWSAPPSDK_RELEASE_MAJOR && m_patchLevel2.Minor == WINDOWSAPPSDK_RELEASE_MINOR) + else if (m_patchLevel2.Major == WINDOWSAPPSDK_RELEASE_MAJOR && m_patchLevel2.Minor == WINDOWSAPPSDK_RELEASE_MINOR + && (m_patchLevel2.Major != 0 || m_patchLevel2.Minor != 0 || m_patchLevel2.Patch != 0)) { // Apply patch level 2 - config.patchVersion = (WinAppSDKPatchVersion)WinAppSDKPatchVersionFromValues(m_patchLevel2.Major, m_patchLevel2.Minor, m_patchLevel2.Patch); + runtimePatchLevel = static_cast( + WinAppSDKReleaseVersionFromValues(m_patchLevel2.Major, m_patchLevel2.Minor, m_patchLevel2.Patch)); } - // Add the set of disabled changes + // Mirror the resolved patch level into the ABI-locked + // WinAppSDKRuntimeConfiguration::patchVersion field as an opaque UINT32 + // cast. Containment_GetChangeEnabled no longer reads it for change + // filtering, but Containment_SetConfiguration still uses it as part of + // the identity check that detects attempts to apply a divergent + // configuration twice from the same process. + config.patchVersion = static_cast(static_cast(runtimePatchLevel)); + + // Build the disabled-changes list from two sources: + // (1) The app's explicit DisabledChanges list (unchanged behavior). + // (2) Catalog pre-pruning: every change whose release is newer than the + // effective patch level is treated as disabled, so callsites see + // pre-change behavior on patch-pinned runtimes. + // Duplicates between (1) and (2) are harmless: the FrUdk worker treats + // disabledChanges as a sorted set and uses set-membership semantics. std::vector disabledChanges; for (auto changeId : m_disabledChanges) { @@ -48,6 +205,23 @@ namespace winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::implem // UINT32 is used internally for the changeId, so cast from the enum's Int32 to that. disabledChanges.push_back(static_cast(changeId)); } + + for (size_t g = 0; g < s_catalogGroupCount; ++g) + { + auto const& group = s_catalogGroup[g]; + if (group.releaseVersion > runtimePatchLevel) + { + for (UINT32 i = 0; i < group.count; ++i) + { + disabledChanges.push_back(group.changes[i]); + } + } + } + + // FrameworkUdk's Containment_GetChangeEnabled assumes disabledChanges is + // sorted ascending so it can use std::binary_search for O(log N) lookups. + std::sort(disabledChanges.begin(), disabledChanges.end()); + config.disabledChanges = disabledChanges.data(); config.disabledChangesCount = static_cast(disabledChanges.size()); diff --git a/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def b/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def index c487bfd388..b3174e5b79 100644 --- a/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def +++ b/dev/WindowsAppRuntime_DLL/WindowsAppRuntime.def @@ -16,6 +16,7 @@ EXPORTS MddTryCreatePackageDependency MddLifetimeManagementGC MddLifetimeManagementTestInitialize + MddGetPackageGraphRevisionId MddGetGenerationId @@ -28,4 +29,6 @@ EXPORTS WindowsAppRuntime_VersionInfo_MSIX_Main_PackageFamilyName_Get WindowsAppRuntime_VersionInfo_TestInitialize + ContainmentTestInitialize + WindowsAppRuntime_EnsureIsLoaded diff --git a/specs/Compatibility/RuntimeCompatibilityOptions.md b/specs/Compatibility/RuntimeCompatibilityOptions.md index 5f4b876939..081eaf8453 100644 --- a/specs/Compatibility/RuntimeCompatibilityOptions.md +++ b/specs/Compatibility/RuntimeCompatibilityOptions.md @@ -25,6 +25,14 @@ A new `RuntimeCompatibilityOptions` class has APIs to control the behavior of se There are also properties which can be set in the app's project file to automatically use the new APIs with the specified values. +> **Authoring model (Containment v2).** Change IDs are registered in a WASDK-owned +> catalog and pre-pruned by `RuntimeCompatibilityOptions::Apply()`, so servicing +> engineers no longer need to name a target release branch at the callsite. See +> [WASDK-ContainmentV2-Plan.md](./WASDK-ContainmentV2-Plan.md) for the role +> boundaries (servicing engineer vs release engineer) and the staged rollout, and +> [RuntimeCompatibilityContainmentV2.md](../design/RuntimeCompatibilityContainmentV2.md) +> for the underlying design. + # API Pages ## RuntimeCompatibilityOptions class diff --git a/specs/Compatibility/WASDK-ContainmentV2-Plan.md b/specs/Compatibility/WASDK-ContainmentV2-Plan.md new file mode 100644 index 0000000000..52558536f6 --- /dev/null +++ b/specs/Compatibility/WASDK-ContainmentV2-Plan.md @@ -0,0 +1,147 @@ +# Containment v2 — rollout plan + +> **Status:** Rollout plan, tracking the implementation of [Runtime Compatibility Containment v2](../design/RuntimeCompatibilityContainmentV2.md). +> This document is the operational counterpart to the design doc: it records the staged PR sequence, the validation +> approach, and the role boundaries between servicing engineers and release engineers as the new model lands. + +## Goals (recap) + +The design proposal solves three problems with the existing per-callsite patch-version model: + +1. **Servicing engineers no longer need to know the containing release version.** New + `WINAPPSDK_CHANGE_*` macros expand to a bare change ID (no patch-version second + argument); the catalog in `RuntimeCompatibilityOptions.cpp` is what actually + associates change IDs to releases. +2. **Capturing change IDs at branch cut no longer churns the world.** Release engineering + adds a single per-release group to the catalog at branch cut; no callsite edits. +3. **`RuntimeCompatibilityOptions.idl` is untouched.** No API review; only enum values + added incrementally by the release engineer (no shape changes). +4. **The patch-version enum is owned by WinAppSDK, not by FrameworkUdk.** A new patch + release no longer requires a coordinated edit to os.2020's public header. FrUdk's + `Containment.h` exposes only the deprecated stub enum `WinAppSDKPatchVersionDeprecated` + (all enumerators collapse to `WinAppSDK_Unused = UINT32(-1)`, which guarantees the + `static_assert(patchVersion == 0, ...)` in the legacy 2-arg `IsChangeEnabled` template + fires for any leftover `IsChangeEnabled()` callsite while leaving + the default-initialized 1-arg form unaffected); the live release-version mapping + `enum class WinAppSDKReleaseVersion : UINT32` lives in the anonymous namespace of + `dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp` and is scoped to + avoid name collisions with the FrUdk stub. The accompanying + `WinAppSDKReleaseVersionFromValues` helper is also local to that .cpp; nothing + outside the translation unit references either name. + +## Role boundaries + +| Role | Repo / file | What they do | What they never touch | +| --- | --- | --- | --- | +| **Servicing engineer** | os.2020 `onecoreuap\windows\FrameworkUdk\inc\public\Containment.h` (defines the bare ID) + the component source file (wraps the new behavior) | Adds one `#define WINAPPSDK_CHANGE_FOO id` macro (no patch-version arg); wraps the new behavior in `if (WinAppSdk::Containment::IsChangeEnabled())` | `RuntimeCompatibilityOptions.idl`, `RuntimeCompatibilityOptions.h`, `RuntimeCompatibilityOptions.cpp`, the catalog, the patch-version enum. Never names a release branch. | +| **Release engineer** | WindowsAppSDK `dev\RuntimeCompatibilityOptions\*` and `Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeCompatibilityChange` IDL enum | At branch cut, adds a new `WinAppSDK_X_Y_Z` enumerator to the anonymous-namespace `enum class WinAppSDKReleaseVersion` inside `RuntimeCompatibilityOptions.cpp` (only if the catalog needs it), adds a `s_changes_X_Y_Z[]` array + corresponding `MakeGroup(...)` entry in `s_catalogGroupsProd[]`, and adds the corresponding IDL enum values | `Containment.h` (servicing engineer's territory; FrUdk stub enum never needs new enumerators again) | +| **App developer** | Their `.csproj` / `.vcxproj` | Sets `WindowsAppSDKRuntimePatchLevel1` / `WindowsAppSDKRuntimePatchLevel2` / `WindowsAppSDKDisabledChanges` as needed | Anything in the SDK source | + +## Staged PR sequence + +The work lands as four atomic changes, each safe to deploy independently. + +| # | Repo | Scope | What happens if any one piece is missed | +| --- | --- | --- | --- | +| 1 | WindowsAppSDK | **Foundation.** Catalog plumbing + `Apply` pre-prune + `std::sort` of the disabled list + new `ContainmentTestInitialize` test-only DLL export + the `CompatibilityTests.dll` test catalog + WASDK-owned scoped `enum class WinAppSDKReleaseVersion` + `WinAppSDKReleaseVersionFromValues` helper, both confined to the anonymous namespace of `dev/RuntimeCompatibilityOptions/RuntimeCompatibilityOptions.cpp` (no header export, no other TU references). `Apply` builds a local `runtimePatchLevel`, walks the catalog against it, and mirrors the result into `WinAppSDKRuntimeConfiguration::patchVersion` via an opaque `UINT32` cast (preserves the `SetConfiguration` identity-divergence check). `RuntimeCompatibilityOptions.h`, `CompatibilityTests.cpp`, and `CompatibilityTests.vcxproj` are untouched by PR 1 — the scoped enum is a private .cpp detail. | Nothing visible to apps. Catalog is empty on `main`; the only behavior change is that `Apply` now produces a sorted disabled list. The existing FrUdk worker (still linear scan) continues to behave correctly. Legacy `IsChangeEnabled` callsites are unchanged. | +| 2 | os.2020 (FrUdk) | **Worker perf + enum deprecation.** `Containment_GetChangeEnabled` switches from linear scan to `std::binary_search` (relying on PR 1's sort guarantee). `Containment.h` renames `WinAppSDKPatchVersion` to `WinAppSDKPatchVersionDeprecated`, adds `WinAppSDK_Unused = UINT32(-1)`, collapses all `WinAppSDK_3_*` enumerators to `WinAppSDK_Unused`, and removes `WinAppSDK_Latest`, `WinAppSDK_Security`, and `WinAppSDKPatchVersionFromValues`. The `static_assert(patchVersion == 0, ...)` deprecation message is unchanged; setting `WinAppSDK_Unused` to `UINT32(-1)` (rather than `0`) deliberately tips the static_assert for any leftover 2-arg `IsChangeEnabled()` callsite while leaving the default-initialized 1-arg form alone. os.2020-internal 2-arg callsites migrate to the 1-arg form. Single atomic commit. | os.2020 build break (the `static_assert` fires on any leftover 2-arg callsite naming any non-zero enumerator, and undefined-identifier errors fire on any callsite naming `WinAppSDK_Latest` / `WinAppSDK_Security` / removed `WinAppSDK_M_m_p` constants). Hence the migration ships in the same commit. | +| 3 | WindowsAppSDK | **FrUdk bump (`main`).** Bumps `Microsoft.FrameworkUdk` in `eng\Version.Details.xml` to pull in PR 2. `main`'s WASDK code is already prepared by PR 1 (private scoped enum in the .cpp, no public test-side surface), so the only churn is the version bump itself. No production WASDK callsites on `main` use the 2-arg form. | WASDK `main` build break (same `static_assert` / undefined identifier) on the bumped header without PR 1 in place. | +| 4 | WindowsAppSDK | **Cherry-pick to `release/2.0-stable`.** Brings the PR 1 foundation (catalog plumbing + private scoped enum, with the enum populated for the 2.x patch versions the 2.0 catalog references). The populated `s_catalogGroupsProd[]` on `2.0-stable` already encodes the `ApplicationData.GetForUnpackaged()` (`61684930`) and `MRT module-specific PRI discovery` (`62382643`) IDs under the `WinAppSDK_2_1_5` group, so callsites that switch from 2-arg to 1-arg `IsChangeEnabled` retain identical runtime behavior. The 2-arg `, WinAppSDK_2_1_5` second argument is left in place in `dev\ApplicationData\M.W.S.ApplicationData.cpp` and `dev\MRTCore\…\Helper.cpp` until the 2.0 train picks up the FrUdk PR 2 bump (whose `IsChangeEnabled` template adds a `WinAppSDKPatchVersionDeprecated patchVersion = {}` default; pre-bump FrUdk has no such default, so a bare 1-arg call fails to compile). | None — this PR is behavior-preserving on its own. | +| 4b | WindowsAppSDK (follow-up) | **2.0 FrUdk bump + macro migration.** Bumps `Microsoft.FrameworkUdk` on `release/2.0-stable` to pull in PR 2, and in the same commit drops `, WinAppSDK_2_1_5` from the two macros above. The catalog from PR 4 already covers both IDs, so the 1-arg `IsChangeEnabled()` call still returns the same result; the `static_assert(patchVersion == 0)` from PR 2 keeps the file honest in the future. | The FrUdk bump alone would otherwise break the build (undefined identifier on `WinAppSDK_2_1_5` from the macro expansions). | + +### Why this beats the original four-phase sequence + +Earlier revisions of this plan staged a three-phase rollout that added a new 1-arg +`IsChangeEnabled()` template to FrameworkUdk alongside the existing 2-arg one, with a +deprecation pragma on the 2-arg form. The `0`-patch-version sentinel design (see +[Runtime Compatibility Containment v2](../design/RuntimeCompatibilityContainmentV2.md)) +eliminates the new template entirely: new macros expand to bare change IDs and the +existing 2-arg template defaults `patchVersion = 0`; the worker's per-callsite patch +check has been removed entirely (in favor of pre-pruning in `Apply`), and the +disabled-list check alone decides. That collapses "add new template + migrate +callsites" into "add catalog + sort + pre-prune in Apply" with no public FrUdk API +shape change. PR 2's `static_assert` is purely a quality-gate to keep future macros +honest; it has nothing to do with ABI. + +A second simplification adopted later: the patch-version enum itself moves from FrUdk +into WinAppSDK, and is *not* exported from a header — it lives only in the anonymous +namespace of `RuntimeCompatibilityOptions.cpp`. FrUdk's `WinAppSDKPatchVersionDeprecated` +stub is frozen — it never needs another enumerator. New `WinAppSDK_X_Y_Z` constants +are added only to WASDK's private `enum class WinAppSDKReleaseVersion`, and only when +the catalog actually needs them. This eliminates the cross-repo enum-edit coordination +that the previous shape required for every patch release, and avoids the name-collision +risk that would arise if WASDK re-exported the same enumerator names that FrUdk's +unscoped legacy enum still carries. + +## Validation status (as of this PR) + +End-to-end test pass in both worktrees: + +- **`main`** worktree (catalog empty): 6/6 `CompatibilityTests` pass — `CanSetRuntimeCompatibilityOptions`, + `VerifyNoMatchingPatchLevelBehavior`, `VerifyConflictingPatchLevelBehavior`, `VerifyDisabledChanges`, + `VerifyCatalogPrePrunesByPatchLevel`, `VerifyCatalogAndExplicitDisabledChangesCombine`. +- **`release/2.0-stable`** worktree (catalog populated with 8 production IDs across the + `WinAppSDK_2_1_0` and `WinAppSDK_2_1_5` groups): 6/6 pass. + +### Test catalog (foundation PR) + +`CompatibilityTests` exercises catalog pre-pruning through a synthetic two-group test catalog +swapped in by `ContainmentTestInitialize(true)`: + +* `s_enabled_changes_test = { 1, 2, 3 }` at `WinAppSDKPatchVersion::WinAppSDK_Latest - 1`. + `releaseVersion` is **not** greater than the runtime's effective patch level under the + default `WinAppSDKRuntimeConfiguration` (`Apply` resolves an unspecified patch level to + `WinAppSDKPatchVersion::WinAppSDK_Latest`), so Apply prunes the group **out** of + `disabledChanges`. These IDs remain **enabled** at runtime. +* `s_disabled_changes_test = { 0, 99999999 }` at `WinAppSDKPatchVersion::WinAppSDK_Latest + 1`. + `releaseVersion` **is** greater than the effective patch level, so Apply preserves the + group **in** `disabledChanges`. These IDs are **disabled** at runtime. + +The synthetic IDs (`0`, `1`, `2`, `3`, `99999999`) span the value range so that `std::sort` +in Apply and `std::binary_search` in the FrUdk worker are exercised at both ends. +`VerifyCatalogPrePrunesByPatchLevel` asserts both branches. +`VerifyCatalogAndExplicitDisabledChangesCombine` covers the union of explicit +`DisabledChanges` and the catalog-pruned list. Tests use the 1-arg `IsChangeEnabled()` +form because the worker no longer compares per-callsite patch versions. + +### Notable engineering details + +* **`Apply()` patch-level guard.** Both `PatchLevel1` / `PatchLevel2` branches are guarded + with `(Major != 0 || Minor != 0 || Patch != 0)` so a default-initialized + `WindowsAppRuntimeVersion {0,0,0}` does not collapse `runtimePatchLevel` to `0` in + dev builds (where `WINDOWSAPPSDK_RELEASE_MAJOR / MINOR = 0 / 0`). Without this guard + every dev-build test that does not explicitly set a patch level would behave as if the + app had pinned to `0.0.0`, defeating the catalog tests. +* **`config.patchVersion` is an opaque pass-through.** `Apply` computes the effective + patch as a WASDK-owned `WinAppSDKPatchVersion runtimePatchLevel`, walks the catalog + against it, then mirrors the resolved value into the ABI-locked + `WinAppSDKRuntimeConfiguration::patchVersion` field via + `static_cast(static_cast(runtimePatchLevel))`. + FrUdk's `Containment_GetChangeEnabled` no longer reads the field, but + `Containment_SetConfiguration` still uses it as part of the identity check that + detects attempts to apply a divergent configuration twice from the same process. +* **Scoped WASDK enum to prevent name collision.** Both FrUdk's + `WinAppSDKPatchVersionDeprecated` and WASDK's `WinAppSDKPatchVersion` would otherwise + define `WinAppSDK_3_0_0` etc. in the same TU. WASDK's `enum class` qualification + (`WinAppSDKPatchVersion::WinAppSDK_3_0_0`) keeps them disjoint while preserving the + natural reading at the catalog call sites. +* **`ContainmentTestInitialize` is resolved via `GetModuleHandleW` / `GetProcAddress`, + not via a static import.** `RuntimeCompatibilityOptions::Apply` runs in the + framework-package copy of `Microsoft.WindowsAppRuntime.dll` loaded by the bootstrap. + The catalog globals live in that same module instance, so the test must call + `ContainmentTestInitialize` on that DLL handle — a static import would resolve to a + test-folder copy with its own (production) catalog and the catalog swap would have no + observable effect. +* **Delay-load on `Microsoft.WindowsAppRuntime.dll`.** Linking the test against + `Microsoft.WindowsAppRuntime.lib` brings in an implicit static import for + `ContainmentTestInitialize`. `Microsoft.WindowsAppRuntime.dll` + plus `delayimp.lib` defers that resolution until the bootstrap has loaded the + framework-package copy. The benign `LNK4199 ... no imports found` warning emitted today + is the desired state and confirms the cleanup; the directive is left in place as + defensive cover against future regressions. + +## Open follow-ups + +* Telemetry on `Apply` — log every catalog-disabled and explicitly-disabled change ID so + the customer-impact distribution becomes observable. Tracked in `// TODO: Telemetry!` in + `RuntimeCompatibilityOptions.cpp`. diff --git a/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp b/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp index bcddf0b729..91410f19fc 100644 --- a/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp +++ b/test/Compatibility/CompatibilityTests/CompatibilityTests.cpp @@ -7,6 +7,21 @@ #include #include +// Signature of the test-only DLL export from Microsoft.WindowsAppRuntime.dll. +// Switches the WinAppSDK Containment catalog used by RuntimeCompatibilityOptions::Apply() +// between the production catalog (default) and a test-only catalog whose two groups +// straddle WinAppSDK_Latest: an "enabled" group at WinAppSDK_Latest - 1 holding +// {1, 2, 3} that Apply prunes out of disabledChanges, and a "disabled" group at +// WinAppSDK_Latest + 1 holding {0, 99999999} that Apply preserves in disabledChanges. +// +// The export is resolved via GetModuleHandleW/GetProcAddress (not a static import) +// because RuntimeCompatibilityOptions::Apply runs in the framework-package copy of +// Microsoft.WindowsAppRuntime.dll loaded by the bootstrap. The catalog globals live +// in that same module instance, so the test must call ContainmentTestInitialize on +// that DLL handle - a static import would resolve to a test-folder copy with its +// own (production) catalog and the catalog swap would have no observable effect. +using PFN_ContainmentTestInitialize = HRESULT(STDAPICALLTYPE*)(bool) noexcept; + namespace TB = ::Test::Bootstrap; namespace TP = ::Test::Packages; @@ -14,6 +29,25 @@ namespace WAR = winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime; namespace Test::CompatibilityTests { + // Resolve ContainmentTestInitialize from the bootstrap-loaded framework copy + // of Microsoft.WindowsAppRuntime.dll. Must be called AFTER SetupBootstrap so + // the DLL is present in the process module list. + static HRESULT ContainmentTestInitialize(bool enableTest) noexcept + { + HMODULE const hmod{ ::GetModuleHandleW(L"Microsoft.WindowsAppRuntime.dll") }; + if (hmod == nullptr) + { + return HRESULT_FROM_WIN32(::GetLastError()); + } + auto const pfn{ reinterpret_cast( + ::GetProcAddress(hmod, "ContainmentTestInitialize")) }; + if (pfn == nullptr) + { + return HRESULT_FROM_WIN32(::GetLastError()); + } + return pfn(enableTest); + } + class CompatibilityTests { public: @@ -42,12 +76,24 @@ namespace Test::CompatibilityTests // The test method setup and execution is on a different thread than the class setup. // Initialize the framework for the test thread. ::Test::Bootstrap::SetupBootstrap(); + + // Swap in the test-only catalog so the catalog pre-prune tests + // observe the synthetic groups that straddle WinAppSDK_Latest. + // Must be done after SetupBootstrap so the framework copy of + // Microsoft.WindowsAppRuntime.dll is loaded and reachable via + // GetModuleHandleW; that copy is the one that hosts + // RuntimeCompatibilityOptions::Apply and owns the catalog globals. + VERIFY_ARE_EQUAL(S_OK, ContainmentTestInitialize(true)); return true; } TEST_METHOD_CLEANUP(MethodUninit) { VERIFY_IS_TRUE(TP::IsPackageRegistered_WindowsAppRuntimeFramework()); + // Restore the production catalog before tearing down the bootstrap. + // IsolationLevel="Method" already guarantees a fresh process per test, + // but resetting keeps the contract clean. + VERIFY_ARE_EQUAL(S_OK, ContainmentTestInitialize(false)); ::Test::Bootstrap::CleanupBootstrap(); return true; } @@ -138,5 +184,61 @@ namespace Test::CompatibilityTests // A different value not in DisabledChanges should remain enabled. VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<99999, WinAppSDK_Security>())); } + + TEST_METHOD(VerifyCatalogPrePrunesByPatchLevel) + { + // The test catalog has two groups whose releaseVersion straddles + // the runtime's effective patch level (WinAppSDK_Latest by + // default): + // * s_enabled_changes_test at WinAppSDK_Latest - 1: the + // pre-prune walk SKIPS this group, so {1, 2, 3} remain + // enabled. + // * s_disabled_changes_test at WinAppSDK_Latest + 1: the + // pre-prune walk COPIES this group into disabledChanges, + // so {0, 99999999} are disabled. + // Together the two groups span the value range and exercise + // both branches of the catalog walk, both ends of std::sort, + // and both ends of the FrUdk worker's std::binary_search. + winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::RuntimeCompatibilityOptions options; + options.Apply(); + + // Use WinAppSDK_Security as the template-arg patch so the worker's + // per-callsite patch comparison degenerates to (0 > effective) = false, + // isolating the catalog pre-prune as the disabling mechanism. + + // s_enabled_changes_test: catalog group released BEFORE the + // effective patch level. Apply prunes it out; IDs remain enabled. + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<1, WinAppSDK_Security>())); + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<2, WinAppSDK_Security>())); + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<3, WinAppSDK_Security>())); + + // s_disabled_changes_test: catalog group released AFTER the + // effective patch level. Apply preserves it; IDs are disabled. + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<0, WinAppSDK_Security>())); // smallest representable ID + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<99999999, WinAppSDK_Security>())); // high-value sentinel + + // An ID not in the catalog and not explicitly disabled stays enabled. + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<99999, WinAppSDK_Security>())); + } + + TEST_METHOD(VerifyCatalogAndExplicitDisabledChangesCombine) + { + // Catalog pre-prune contributes {0, 99999999} via + // s_disabled_changes_test (the catalog group released AFTER the + // effective patch level), and the app's explicit DisabledChanges + // also names 99999999 plus 55555. Duplicates between the two + // sources are harmless: the FrUdk worker treats disabledChanges + // as a sorted set and uses set-membership semantics, so the + // result is the union, not a tally. + winrt::Microsoft::Windows::ApplicationModel::WindowsAppRuntime::RuntimeCompatibilityOptions options; + options.DisabledChanges().Append((WAR::RuntimeCompatibilityChange)99999999); + options.DisabledChanges().Append((WAR::RuntimeCompatibilityChange)55555); + options.Apply(); + + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<0, WinAppSDK_Security>())); // catalog only + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<99999999, WinAppSDK_Security>())); // catalog + explicit + VERIFY_IS_FALSE((WinAppSdk::Containment::IsChangeEnabled<55555, WinAppSDK_Security>())); // explicit only + VERIFY_IS_TRUE((WinAppSdk::Containment::IsChangeEnabled<99999, WinAppSDK_Security>())); // neither + } }; } diff --git a/test/Compatibility/CompatibilityTests/CompatibilityTests.vcxproj b/test/Compatibility/CompatibilityTests/CompatibilityTests.vcxproj index 8edeb3908c..805e71ab5b 100644 --- a/test/Compatibility/CompatibilityTests/CompatibilityTests.vcxproj +++ b/test/Compatibility/CompatibilityTests/CompatibilityTests.vcxproj @@ -79,8 +79,18 @@ Windows - onecore.lib;onecoreuap.lib;Microsoft.WindowsAppRuntime.lib;wex.common.lib;wex.logger.lib;te.common.lib;%(AdditionalDependencies) + onecore.lib;onecoreuap.lib;Microsoft.WindowsAppRuntime.lib;wex.common.lib;wex.logger.lib;te.common.lib;delayimp.lib;%(AdditionalDependencies) $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories);$(OutDir)\..\WindowsAppRuntime_DLL + + Microsoft.WindowsAppRuntime.dll;%(DelayLoadDLLs) From f9f3c39dfd64d66dc1fbe2baecda5288c705e2b4 Mon Sep 17 00:00:00 2001 From: ssparach <128866445+ssparach@users.noreply.github.com> Date: Mon, 8 Jun 2026 09:38:03 -0700 Subject: [PATCH 14/16] [WinAppSDK CMake Support]: Implicitly choose deployment mode based on WindowsAppSDKSelfContained (#6490) * cmake modifications * change * move appxmanifest generation to base and add property validation --------- Co-authored-by: Scott Jones --- ...soft.windowsappsdk.foundation-config.cmake | 203 +++++++++--------- 1 file changed, 105 insertions(+), 98 deletions(-) diff --git a/build/NuSpecs/microsoft.windowsappsdk.foundation-config.cmake b/build/NuSpecs/microsoft.windowsappsdk.foundation-config.cmake index e72f51dd1f..4a6d46ce68 100644 --- a/build/NuSpecs/microsoft.windowsappsdk.foundation-config.cmake +++ b/build/NuSpecs/microsoft.windowsappsdk.foundation-config.cmake @@ -10,9 +10,8 @@ This package defines the following CMake targets: * Microsoft.WindowsAppSDK.Foundation - A target representing the C++/WinRT projection, headers and libraries of - the Windows App SDK Foundation APIs. This does not include the necessary runtime components to use the - Windows App SDK, and is intended to be used by library authors who want to consume the Windows App SDK - Foundation APIs. + the Windows App SDK Foundation APIs. This target does not have any deployment-mode-specific behavior, + however it does forward-declare two variant targets (Foundation_Framework and Foundation_SelfContained) that the wasdk_link_component_variant() helper populates based on the consumer's WindowsAppSDKSelfContained property. * Microsoft.WindowsAppSDK.Foundation_Framework - A target representing the Windows App SDK Foundation APIs for framework-dependent deployment scenarios. Auto-initialization behavior is controlled by target properties @@ -51,7 +50,7 @@ if(CMAKE_VERSION VERSION_LESS 3.31) message(FATAL_ERROR "Microsoft.WindowsAppSDK.Foundation requires at least CMake 3.31, but CMake ${CMAKE_VERSION} is in use.") endif() - +find_package(Microsoft.WindowsAppSDK.Base CONFIG REQUIRED) find_package(Microsoft.WindowsAppSDK.InteractiveExperiences CONFIG REQUIRED) block(SCOPE_FOR VARIABLES) @@ -78,6 +77,17 @@ block(SCOPE_FOR VARIABLES) ${PACKAGE_LOCATION}/include ) + # Forward-declare deployment-mode variant targets adjacent to the basic target. + # Populated further below; this declaration lets wasdk_link_component_variant() enforce + # the contract that both variants exist at configure time. + add_library(Microsoft.WindowsAppSDK.Foundation_Framework INTERFACE) + add_library(Microsoft.WindowsAppSDK.Foundation_SelfContained INTERFACE) + + # Basic target as variant selector + # Resolves to _Framework or _SelfContained based on the consumer's WindowsAppSDKSelfContained + # property at generation time. + wasdk_link_component_variant(Foundation) + #[[==================================================================================================================== Target: Microsoft.WindowsAppSDK.Foundation_DynamicDependencyBootstrap @@ -217,7 +227,7 @@ block(SCOPE_FOR VARIABLES) IMPORTED_LOCATION "${FRAMEWORK_DLLS}" ) - add_library(Microsoft.WindowsAppSDK.Foundation_SelfContained INTERFACE) + # _SelfContained interface target was forward-declared near the basic target above. wasdk_transform_appxfragment( Microsoft.WindowsAppSDK.Foundation_SelfContained @@ -271,7 +281,7 @@ block(SCOPE_FOR VARIABLES) If the Runtime package is not found, _Framework is not available. ====================================================================================================================]]# - add_library(Microsoft.WindowsAppSDK.Foundation_Framework INTERFACE) + # _Framework interface target was forward-declared near the basic target above. target_link_libraries(Microsoft.WindowsAppSDK.Foundation_Framework INTERFACE @@ -353,107 +363,104 @@ block(SCOPE_FOR VARIABLES) ) #[[==================================================================================================================== - wasdk_generate_appx_manifest() - - Generates an AppxManifest.xml for packaged apps. For framework-dependent apps, automatically - includes the entry for the Windows App Runtime Framework package. - - wasdk_generate_appx_manifest( - TARGET - OUTPUT - IDENTITY_NAME - IDENTITY_PUBLISHER - IDENTITY_VERSION - [DISPLAY_NAME ] - [DESCRIPTION ] - [LOGO ] - ) - - The TARGET must already be defined via add_executable(). If the target links - Microsoft.WindowsAppSDK.Foundation_Framework, a for the Windows App Runtime - Framework package is automatically included. If the target links _SelfContained, no - PackageDependency is added. - ====================================================================================================================]]# - function(wasdk_generate_appx_manifest) - set(ONE_VALUE_KEYWORDS TARGET OUTPUT IDENTITY_NAME IDENTITY_PUBLISHER IDENTITY_VERSION DISPLAY_NAME DESCRIPTION LOGO) - cmake_parse_arguments(PARSE_ARGV 0 APPX "" "${ONE_VALUE_KEYWORDS}" "") + Foundation auto-init configuration validation (deferred) - if(NOT APPX_TARGET) - message(FATAL_ERROR "wasdk_generate_appx_manifest: TARGET is required") - endif() - if(NOT APPX_OUTPUT) - set(APPX_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AppxManifest.xml") - endif() - if(NOT APPX_IDENTITY_NAME OR NOT APPX_IDENTITY_PUBLISHER OR NOT APPX_IDENTITY_VERSION) - message(FATAL_ERROR "wasdk_generate_appx_manifest: IDENTITY_NAME, IDENTITY_PUBLISHER, and IDENTITY_VERSION are required") - endif() - if(NOT APPX_DISPLAY_NAME) - set(APPX_DISPLAY_NAME "${APPX_IDENTITY_NAME}") + Runs at end of consumer's directory configure. Walks targets that link + any Microsoft.WindowsAppSDK* and validates 2 configuration rules: + + Rule A: FW Unpackaged + WindowsAppSdkBootstrapInitialize=FALSE + → "The Windows App SDK Bootstrapper is required for framework-dependent unpackaged apps" + + Rule B: SelfContained + downlevel SDK (< 19H1) + WindowsAppSdkUndockedRegFreeWinRTInitialize=FALSE + → "Undocked Reg-Free WinRT activation is required for self-contained apps targeting Windows versions prior to 10.0.18362.0" + + Both produce configure-time FATAL_ERROR. This Foundation-side validator only fires when Foundation + IS loaded. + ====================================================================================================================]]# + function(_wasdk_foundation_validate_target target) + get_target_property(_type ${target} TYPE) + if(NOT _type STREQUAL "EXECUTABLE") + return() endif() - if(NOT APPX_DESCRIPTION) - set(APPX_DESCRIPTION "${APPX_DISPLAY_NAME}") + + get_target_property(_link_libs ${target} LINK_LIBRARIES) + if(NOT _link_libs) + return() endif() - if(NOT APPX_LOGO) - set(APPX_LOGO "Logo.png") + set(_uses_wasdk FALSE) + foreach(_lib IN LISTS _link_libs) + if(_lib MATCHES "^Microsoft\\.WindowsAppSDK") + set(_uses_wasdk TRUE) + break() + endif() + endforeach() + if(NOT _uses_wasdk) + return() endif() - # Determine architecture - wasdk_detect_platform() - if(PLATFORM_IDENTIFIER STREQUAL "x64") - set(_PROC_ARCH "x64") - elseif(PLATFORM_IDENTIFIER STREQUAL "arm64") - set(_PROC_ARCH "arm64") - else() - set(_PROC_ARCH "x64") + get_target_property(_pkg_type ${target} WindowsPackageType) + get_target_property(_sc ${target} WindowsAppSDKSelfContained) + get_target_property(_bootstrap ${target} WindowsAppSdkBootstrapInitialize) + get_target_property(_urf ${target} WindowsAppSdkUndockedRegFreeWinRTInitialize) + + # Rule A: FW Unpackaged + BootstrapInit=FALSE → error + if(_pkg_type STREQUAL "None" AND NOT _sc AND _bootstrap STREQUAL "FALSE") + message(FATAL_ERROR + "The Windows App SDK Bootstrapper is required for framework-dependent unpackaged apps. " + "Target '${target}' has WindowsPackageType=\"None\" and " + "WindowsAppSdkBootstrapInitialize=FALSE. Either set " + "WindowsAppSdkBootstrapInitialize=TRUE, change the deployment model, or " + "make the app self-contained.") endif() - # Build the PackageDependency section if framework info is available - set(_PACKAGE_DEPENDENCY "") - if(DEFINED WINDOWSAPPSDK_FRAMEWORK_PACKAGE_NAME) - set(_PACKAGE_DEPENDENCY " \n") + # Rule B: SC + downlevel SDK + URFInit=FALSE → error + if(_sc AND _urf STREQUAL "FALSE") + # Detect the target's MINIMUM supported OS version. + # CMAKE_SYSTEM_VERSION (set via -DCMAKE_SYSTEM_VERSION or by toolchain + # file) is the canonical CMake variable for the target MIN OS version. + # CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION is the BUILD SDK that VS + # selects to compile against (often newer than the target min); not + # what we want for this check. Falls back to env if neither set. + set(_tpv "") + if(NOT "${CMAKE_SYSTEM_VERSION}" STREQUAL "") + set(_tpv "${CMAKE_SYSTEM_VERSION}") + elseif(NOT "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}" STREQUAL "") + set(_tpv "${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") + elseif(DEFINED ENV{WindowsSDKVersion}) + string(REGEX REPLACE "^([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" _tpv "$ENV{WindowsSDKVersion}") + endif() + if(_tpv AND _tpv VERSION_LESS "10.0.18362.0") + message(FATAL_ERROR + "Undocked Reg-Free WinRT activation is required for self-contained apps targeting Windows versions prior to 10.0.18362.0. " + "Target '${target}' is self-contained, targets SDK version ${_tpv}, and has " + "WindowsAppSdkUndockedRegFreeWinRTInitialize=FALSE. Either remove the " + "explicit FALSE override, raise the target SDK version, or switch to " + "framework-dependent deployment.") + endif() endif() + endfunction() - # Generate the manifest - file(WRITE "${APPX_OUTPUT}" -" - - - - ${APPX_DISPLAY_NAME} - ${APPX_IDENTITY_PUBLISHER} - ${APPX_DESCRIPTION} - ${APPX_LOGO} - - - -${_PACKAGE_DEPENDENCY} - - - - - - - - - - - - - - -") - - # Copy manifest + logo to output directory post-build - add_custom_command(TARGET ${APPX_TARGET} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${APPX_OUTPUT}" $ - ) + function(_wasdk_foundation_validate_recursive _dir) + get_directory_property(_targets DIRECTORY ${_dir} BUILDSYSTEM_TARGETS) + foreach(_t IN LISTS _targets) + _wasdk_foundation_validate_target(${_t}) + endforeach() + + get_directory_property(_subdirs DIRECTORY ${_dir} SUBDIRECTORIES) + foreach(_sub IN LISTS _subdirs) + _wasdk_foundation_validate_recursive(${_sub}) + endforeach() + endfunction() + + function(_wasdk_foundation_validate) + _wasdk_foundation_validate_recursive(${CMAKE_CURRENT_SOURCE_DIR}) endfunction() + # Register DEFER hook; idempotent per directory. + get_directory_property(_already_deferred _WASDK_FOUNDATION_VALIDATE_DEFERRED) + if(NOT _already_deferred) + set_property(DIRECTORY PROPERTY _WASDK_FOUNDATION_VALIDATE_DEFERRED TRUE) + cmake_language(DEFER CALL _wasdk_foundation_validate) + endif() + endblock() From 9bde0388e0177b11a012d8b475eb1edeabebcccc Mon Sep 17 00:00:00 2001 From: Dinah Xiaoman G <116714259+DinahK-2SO@users.noreply.github.com> Date: Tue, 9 Jun 2026 02:43:48 +0800 Subject: [PATCH 15/16] Add Templates PR validation pipeline (dotnet new + VSIX) (#6526) Adds `WindowsAppSDK-Templates-PR` to validate changes under `dev/Templates/`. For developers to check if their changes would break the build of WinUI templates. **What it runs** - Build a dotnet new templates NuGet of the changed code for local tests (no signing, no publish) - Builds 4 VSIXes (Cs/Cpp x Standalone/Component) of the changed code against the latest nightly nupkg from `main`. --- BuildAll.ps1 | 4 +- .../WindowsAppSDK-BuildVSIX-Steps.yml | 40 +++++-- ...indowsAppSDK-DotnetNewTemplates-Stages.yml | 43 ++++++- ...DK-VSIXTemplates-BuildValidation-Stage.yml | 111 +++++++++++++++++ build/WindowsAppSDK-Templates-PR.yml | 113 ++++++++++++++++++ .../{Build-VSIX.ps1 => Build-VSIX-Local.ps1} | 14 ++- .../Install-LocalDev-VSIX.ps1 | 7 +- .../build-install-localdev-vsix.ps1 | 6 +- .../build-local-VSIX-package.md | 32 ++--- 9 files changed, 331 insertions(+), 39 deletions(-) create mode 100644 build/AzurePipelinesTemplates/WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml create mode 100644 build/WindowsAppSDK-Templates-PR.yml rename dev/Templates/VSIX/build-local-VSIX-package/{Build-VSIX.ps1 => Build-VSIX-Local.ps1} (97%) diff --git a/BuildAll.ps1 b/BuildAll.ps1 index 6dbc0285dd..dd0c8591d2 100644 --- a/BuildAll.ps1 +++ b/BuildAll.ps1 @@ -634,14 +634,14 @@ Try { # dev\Templates\Directory.Build.props ( default) # - single source of truth. write-host "Building templates VSIX (Standalone + Component) ..." - & "dev\Templates\VSIX\build-local-VSIX-package\Build-VSIX.ps1" ` + & "dev\Templates\VSIX\build-local-VSIX-package\Build-VSIX-Local.ps1" ` -Configuration $Configuration ` -Deployment Both ` -RepoRoot $env:Build_SourcesDirectory ` -OutputDir $templatesOutputDir if ($lastexitcode -ne 0) { - write-host "ERROR: Build-VSIX.ps1 FAILED." + write-host "ERROR: Build-VSIX-Local.ps1 FAILED." exit 1 } } diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml index 8ba3ecca76..55b8a0675c 100644 --- a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml @@ -19,6 +19,17 @@ parameters: - name: EnableExperimentalVSIXFeatures type: boolean default: false +- name: PublishSymbols + # Defaults true to preserve official-build behavior. + # Set to false in PR build-validation runs to skip pushing to the symbol server. + type: boolean + default: true +- name: NightlyBranchName + # Branch (in the Aggregator pipeline's repo) to pull the latest Windows App SDK + # nuget from when UseCurrentBuild is false. The Aggregator nightly runs daily on + # 'main', so default there. Override if the active publishing branch changes. + type: string + default: 'refs/heads/main' steps: - ${{ if eq(parameters.UseCurrentBuild, 'true') }}: @@ -29,9 +40,16 @@ steps: targetPath: '$(System.ArtifactsDirectory)' - ${{ else }}: ### - # This step downloads the WindowsAppSDK NuGet package from a pipeline - # variables: OfficialPipelineID LatestOfficialBuildID - # for use in building the VSIX + # This step downloads the WindowsAppSDK NuGet package from the Aggregator nightly + # pipeline (identified by the OfficialPipelineID variable) for use in building the + # VSIX. We pull the latest run from NightlyBranchName rather than a pinned + # LatestOfficialBuildID so PR build-validation runs always get a fresh package without + # needing a build id supplied at queue time. + # + # The nightly runs commonly finish as PartiallySucceeded (some downstream test/SDL + # stages are not green) even though the packaging stage produced the artifact, so + # both allowPartiallySucceededBuilds and allowFailedBuilds must be true -- the task + # requires the pair to be set together to consider non-succeeded runs. - task: DownloadPipelineArtifact@2 displayName: 'Download WindowsAppSDK From Latest Nightly' inputs: @@ -39,8 +57,11 @@ steps: targetPath: '$(System.ArtifactsDirectory)' source: 'specific' project: $(System.TeamProjectId) - pipeline: $(OfficialPipelineID) - pipelineId: $(LatestOfficialBuildID) + pipeline: $(OfficialPipelineID) + runVersion: 'latestFromBranch' + runBranch: '${{ parameters.NightlyBranchName }}' + allowPartiallySucceededBuilds: true + allowFailedBuilds: true - task: PowerShell@2 name: ExtractWindowsAppSDKVersion @@ -193,10 +214,11 @@ steps: codeSignPattern: | **/WindowsAppSDK.*.Extension.*.dll -- template: ${{variables['System.DefaultWorkingDirectory']}}\AzurePipelinesTemplates\WindowsAppSDK-PublishSymbol-Steps.yml@WindowsAppSDKConfig - parameters: - SearchPattern: '$(FoundationRepoPath)dev\Templates\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)\**\WindowsAppSDK*.pdb' - IsOfficial: ${{ parameters.IsOfficial }} +- ${{ if eq(parameters.PublishSymbols, true) }}: + - template: ${{variables['System.DefaultWorkingDirectory']}}\AzurePipelinesTemplates\WindowsAppSDK-PublishSymbol-Steps.yml@WindowsAppSDKConfig + parameters: + SearchPattern: '$(FoundationRepoPath)dev\Templates\VSIX\BuildOutput\obj\AnyCPU$(buildConfiguration)\**\WindowsAppSDK*.pdb' + IsOfficial: ${{ parameters.IsOfficial }} - task: CopyFiles@2 displayName: 'Stage VSIX component JSONs' diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Stages.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Stages.yml index 5067844f4f..b95e01f9ff 100644 --- a/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Stages.yml +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-DotnetNewTemplates-Stages.yml @@ -12,6 +12,13 @@ parameters: - name: SignOutput type: boolean default: false +# PR pipelines pass true so every pack (including manual replays without a +# PR#) gets a timestamp + pr suffix that makes the .nupkg filename +# uniquely identify the run. Official pipelines leave this false so the +# pack version matches the csproj verbatim. +- name: IsPRBuild + type: boolean + default: false stages: - stage: DotnetNewTemplates_Build @@ -25,6 +32,8 @@ stages: variables: ob_outputDirectory: '$(Build.ArtifactStagingDirectory)\dotnet-new-template-pack' templateProjectDir: '$(Build.SourcesDirectory)\${{ parameters.sourceSubdirectory }}\dev\Templates\Dotnet' + # Set by the "Compute package version" step below. + PackVersionFull: '' steps: - checkout: self @@ -82,12 +91,44 @@ stages: projects: '$(templateProjectDir)\WinAppSdk.CSharp.DotnetNewTemplates.csproj' workingDirectory: '$(templateProjectDir)' + # PR builds always get a unique SemVer prerelease tag appended: + # ----pr + # Manual PR-pipeline replays (no SYSTEM_PULLREQUEST_PULLREQUESTNUMBER) + # use pr0 so the filename still differentiates runs by timestamp. + # Official builds (IsPRBuild=false) keep the csproj verbatim. + - task: PowerShell@2 + displayName: 'Compute package version' + inputs: + targetType: inline + workingDirectory: '$(templateProjectDir)' + script: | + $csprojPath = Join-Path '$(templateProjectDir)' 'WinAppSdk.CSharp.DotnetNewTemplates.csproj' + [xml]$csproj = Get-Content -LiteralPath $csprojPath + $versionNode = Select-Xml -Xml $csproj -XPath '/Project/PropertyGroup/Version' | Select-Object -First 1 + if (-not $versionNode) { throw "No element found in $csprojPath" } + $baseVersion = $versionNode.Node.InnerText.Trim() + if ([string]::IsNullOrWhiteSpace($baseVersion)) { throw "csproj is empty in $csprojPath" } + $isPR = [System.Convert]::ToBoolean('${{ parameters.IsPRBuild }}') + if ($isPR) { + $pr = $env:SYSTEM_PULLREQUEST_PULLREQUESTNUMBER + if ([string]::IsNullOrWhiteSpace($pr)) { $pr = '0' } + $now = Get-Date + $stamp = "$($now.ToString('yyyy'))-$($now.ToString('MMdd'))-$($now.ToString('HHmm'))-pr$pr" + # Join with '-' so any prerelease tag already in stays one valid SemVer identifier. + $fullVersion = "$baseVersion-$stamp" + } else { + $fullVersion = $baseVersion + } + Write-Host "Computed package version: $fullVersion" + Write-Host "##vso[task.setvariable variable=PackVersionFull]$fullVersion" + + # DotNetCoreCLI@2 'pack' ignores 'arguments'; properties go via 'buildProperties'. - task: DotNetCoreCLI@2 displayName: 'Pack dotnet new templates' inputs: command: 'pack' packagesToPack: '$(templateProjectDir)\WinAppSdk.CSharp.DotnetNewTemplates.csproj' - arguments: '--configuration Release --no-restore --no-build /p:WindowsAppSDKBuildPipeline=1' + buildProperties: 'WindowsAppSDKBuildPipeline=1;Version=$(PackVersionFull)' outputDir: '$(ob_outputDirectory)' workingDirectory: '$(templateProjectDir)' diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml new file mode 100644 index 0000000000..b922e8de27 --- /dev/null +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml @@ -0,0 +1,111 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# +# VSIX templates build-validation stage. +# +# Runs WindowsAppSDK-BuildVSIX-Steps.yml so any VSIX-pack regression +# (VSSDK1300 path overflow, broken template asset, manifest error, etc.) +# surfaces at PR time. This validates that the VSIXes still build and pack; +# it does not install or instantiate them, so it is a build regression check +# rather than a smoke/build-verification test. Skips: +# - SDL/PREfast scans (runStaticAnalysis: false) +# - VSIX code signing (SignOutput: false) +# - Symbol server publish (PublishSymbols: false) +# +# Path-length note: VSSDK1300 is a MAX_PATH (260) issue. We check the repo +# out into a WindowsAppSDK\ subfolder (`path: s\WindowsAppSDK` paired with +# `foundationRepoPath: 'WindowsAppSDK\'`) so absolute paths in this stage +# are long enough to catch the same class of regression that a top-level +# checkout layout would miss. + +parameters: +- name: pool + type: object + default: + type: windows + +stages: +- stage: VSIXTemplates_BuildValidation + displayName: 'Validate VSIX templates build' + dependsOn: [] + jobs: + - job: BuildVSIX + displayName: 'Restore + build WindowsAppSDK.Extension.sln (Standalone + Component)' + pool: ${{ parameters.pool }} + timeoutInMinutes: 60 + variables: + # Required by OneBranch v2. + ob_outputDirectory: '$(Build.ArtifactStagingDirectory)\vsix-buildvalidation' + # Path prefix consumed as $(FoundationRepoPath) inside + # WindowsAppSDK-BuildVSIX-Steps.yml; pairs with the `path: s\WindowsAppSDK` + # checkout below. See file header for why. + foundationRepoPath: 'WindowsAppSDK\' + buildConfiguration: 'Release' + steps: + # Land the repo in a subfolder; see file header for why. + - checkout: self + path: s\WindowsAppSDK + + - task: PowerShell@2 + displayName: 'Compute VSIX version + announce build-validation scope' + inputs: + targetType: 'inline' + script: | + # .... Mirrors Build-VSIX-Local.ps1. + # All segments fit uint16; year-as-Major outranks any official 1.x/2.x + # (workload-shipped) and is strictly monotonic across years. A tester who + # installs a PR VSIX must uninstall it before any official update of + # the same Identity Id will apply. + $now = Get-Date + $pr = $env:SYSTEM_PULLREQUEST_PULLREQUESTNUMBER + if ([string]::IsNullOrWhiteSpace($pr)) { $pr = '0' } + $version = "$($now.Year).$($now.ToString('MMdd')).$($now.ToString('HHmm')).$pr" + Write-Host "##vso[task.setvariable variable=OptionalVSIXVersion]$version" + + Write-Host "VSIX build validation: building Cpp + Cs, Standalone + Component (4 VSIXes)" + Write-Host "VSIX version: $version" + Write-Host "Pool : $(Agent.MachineName) ($(Agent.OS))" + Write-Host "Sources dir : $(Build.SourcesDirectory)" + Write-Host "Repo path : $(Build.SourcesDirectory)\$(foundationRepoPath)" + + - template: WindowsAppSDK-BuildVSIX-Steps.yml@self + parameters: + SignOutput: false + runStaticAnalysis: false + PublishSymbols: false + UseCurrentBuild: false + IsOfficial: false + OptionalVSIXVersion: '$(OptionalVSIXVersion)' + + - task: PowerShell@2 + displayName: 'Rename staged VSIXes to include version (PR-downloadable artifacts)' + # BuildVSIX-Steps.yml already staged the .vsix files into + # $(ob_outputDirectory)\VSIX (unsigned branch). Default MSBuild output + # names omit the version, so testers downloading the PR artifact would + # see only `WindowsAppSDK.Cs.Extension.Dev17.Standalone.vsix`. Rename in + # place to the same `..vsix` shape Build-VSIX-Local.ps1 uses, + # so the filename alone identifies which PR/run produced the VSIX. + inputs: + targetType: 'inline' + script: | + $version = '$(OptionalVSIXVersion)' + $stageDir = Join-Path '$(ob_outputDirectory)' 'VSIX' + if (-not (Test-Path $stageDir)) { + Write-Warning "Staging dir not found: $stageDir (BuildVSIX-Steps.yml staging may have failed)" + exit 0 + } + $vsixes = Get-ChildItem -Path $stageDir -Filter 'WindowsAppSDK.*.vsix' -File + if ($vsixes.Count -eq 0) { + Write-Warning "No .vsix files found in $stageDir" + exit 0 + } + foreach ($v in $vsixes) { + # Skip if already versioned (idempotent re-run safety). + if ($v.BaseName -match "\.$([Regex]::Escape($version))$") { + Write-Host "Skip (already versioned): $($v.Name)" + continue + } + $newName = "$($v.BaseName).$version.vsix" + Rename-Item -Path $v.FullName -NewName $newName + Write-Host "Renamed: $($v.Name) -> $newName" + } diff --git a/build/WindowsAppSDK-Templates-PR.yml b/build/WindowsAppSDK-Templates-PR.yml new file mode 100644 index 0000000000..33a612bf69 --- /dev/null +++ b/build/WindowsAppSDK-Templates-PR.yml @@ -0,0 +1,113 @@ +# Templates PR Validation Pipeline +# +# PR validation for changes under dev/Templates/**. +# Reuses the build/pack + test stages from the main pipeline +# (WindowsAppSDK-DotnetNewTemplates.yml). Nothing is signed; nothing is +# published. PR-stamped versions keep PR artifacts from colliding with +# canonical packages -- see each stage for the exact format. +# +# Triggers are configured in the Azure DevOps UI (Edit pipeline -> Triggers), +# NOT in this YAML -- matches the WindowsAppSDK-Foundation-PR.yml convention. +# In the UI, under Pull request validation: +# - Override the YAML pull request trigger from here: ON +# - Enable pull request validation: ON +# - Branch filters: Include refs/heads/main +# Include refs/heads/release/* +# - Path filters: Include dev/Templates/** + +trigger: none + +# Shared variable templates: +# - Foundation-TestConfig: test matrices reused from the main pipeline. +# - Versions: MajorVersion / MinorVersion / PatchVersion (consumed by CommonVariables). +# - CommonVariables: WindowsContainerImage (required by 1ES OneBranch for +# "Initialize containers") and the family of ob_sdl_* knobs. The SDL knobs +# are inert here because we disable those scanners in globalSdl below. +# +# OfficialPipelineID is the Aggregator nightly definition id (WinAppSDK-Build-Nightly, +# OneBranch) that produces the WindowsAppSDK_Nuget_And_MSIX artifact daily on 'main'. +# The VSIX build-validation stage consumes it with runVersion 'latestFromBranch' to pull +# the latest nightly nuget, so no per-run build id is required. Defined here (not in the +# ADO UI) so it is version-controlled and reviewable. +variables: +- name: OfficialPipelineID + value: 118002 +- template: WindowsAppSDK-Foundation-TestConfig.yml@WindowsAppSDKConfig +- template: AzurePipelinesTemplates\WindowsAppSDK-Versions.yml@WindowsAppSDKVersionConfig +- template: WindowsAppSDK-CommonVariables.yml + +name: TemplatesPR-$(Date:yyyyMMdd)$(Rev:.r) + +resources: + repositories: + - repository: templates + type: git + name: OneBranch.Pipelines/GovernedTemplates + ref: refs/heads/main + - repository: WindowsAppSDKConfig + # adding config for WindowsAppSDK-VSIXTemplates-BuildValidation-Stage + type: git + name: ProjectReunion/WindowsAppSDKConfig + ref: refs/heads/main + - repository: WindowsAppSDKVersionConfig + type: git + name: ProjectReunion/WindowsAppSDKConfig + ref: refs/heads/main + +extends: + template: v2/Microsoft.NonOfficial.yml@templates + parameters: + featureFlags: + EnableCDPxPAT: false + WindowsHostVersion: + Version: 2022 + Network: R1 + + platform: + name: 'windows_undocked' + + cloudvault: + enabled: false + + # Skip heavy SDL tools for PR validation; the main pipeline + # (WindowsAppSDK-DotnetNewTemplates.yml) covers them on canonical builds. + globalSdl: + tsa: + enabled: false + isNativeCode: false + psscriptanalyzer: + enable: false + binskim: + enabled: false + prefast: + enabled: false + apiscan: + enabled: false + + stages: + # Build + pack the templates NuGet. IsPRBuild=true makes the stage stamp + # every pack as ----pr so the + # .nupkg filename uniquely identifies the run (manual replays without a + # PR# fall back to pr0 + timestamp). + - template: AzurePipelinesTemplates\WindowsAppSDK-DotnetNewTemplates-Stages.yml@self + parameters: + pool: + type: windows + publishToInternalFeed: false + SignOutput: false + IsPRBuild: true + + # Smoke-test: scaffold every template from the pack and dotnet build each. + - template: AzurePipelinesTemplates\WindowsAppSDK-DotnetNewTemplates-Test-Stage.yml@self + parameters: + pool: + type: windows + dependsOnStage: 'DotnetNewTemplates_Build' + + # Build-validate the VSIX. Runs the production VSIX pack steps so + # VSIX-pack regressions (e.g. VSSDK1300 path overflow) surface at PR + # time. See WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml. + - template: AzurePipelinesTemplates\WindowsAppSDK-VSIXTemplates-BuildValidation-Stage.yml@self + parameters: + pool: + type: windows \ No newline at end of file diff --git a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 similarity index 97% rename from dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX.ps1 rename to dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 index e3ed329d02..28e2639933 100644 --- a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX.ps1 +++ b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 @@ -50,15 +50,15 @@ Skip NuGet restore (useful if you've already restored). .EXAMPLE - .\Build-VSIX.ps1 + .\Build-VSIX-Local.ps1 # Build the LocalDev VSIX (default). Then install with .\Install-LocalDev-VSIX.ps1 .EXAMPLE - .\Build-VSIX.ps1 -WindowsAppSDKVersion "1.8.260317003" -Deployment Standalone + .\Build-VSIX-Local.ps1 -WindowsAppSDKVersion "1.8.260317003" -Deployment Standalone # Build a Standalone VSIX artifact (build-only; not installable locally) .EXAMPLE - .\Build-VSIX.ps1 -NupkgSourceDir "C:\packages" -Deployment Both + .\Build-VSIX-Local.ps1 -NupkgSourceDir "C:\packages" -Deployment Both # Build the Standalone + Component artifacts (build-only) #> @@ -295,9 +295,11 @@ if ($WindowsAppSDKVersion -ne "") { } if ($OptionalVSIXVersion -eq "") { + # ...0 -- year-as-Major outranks any official 1.x/2.x, + # monotonic across years. PR# segment is always 0 locally. $now = Get-Date - $OptionalVSIXVersion = "99.$($now.ToString('yyyy')).$($now.ToString('MMdd')).$($now.ToString('HHmm'))" - Write-Step "OptionalVSIXVersion = $OptionalVSIXVersion (auto-generated from current time)" + $OptionalVSIXVersion = "$($now.Year).$($now.ToString('MMdd')).$($now.ToString('HHmm')).0" + Write-Step "OptionalVSIXVersion = $OptionalVSIXVersion (auto-generated)" } else { Write-Step "OptionalVSIXVersion = $OptionalVSIXVersion (user-specified)" } @@ -311,7 +313,7 @@ Write-Banner "Configuring NuGet Sources" $nugetConfig = Join-Path $scriptDir "vsix-nuget.config" if (-not (Test-Path $nugetConfig)) { Write-Err "vsix-nuget.config not found at: $nugetConfig" - Write-Err "This file should be alongside Build-VSIX.ps1." + Write-Err "This file should be alongside Build-VSIX-Local.ps1." exit 1 } diff --git a/dev/Templates/VSIX/build-local-VSIX-package/Install-LocalDev-VSIX.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/Install-LocalDev-VSIX.ps1 index 8dbf2a62f4..32fe6f9afb 100644 --- a/dev/Templates/VSIX/build-local-VSIX-package/Install-LocalDev-VSIX.ps1 +++ b/dev/Templates/VSIX/build-local-VSIX-package/Install-LocalDev-VSIX.ps1 @@ -19,7 +19,8 @@ The workload ships the same extension Id (Microsoft.WindowsAppSDK.Cs.Dev17) per-machine. VS scans BOTH the per-machine and per-user extension hives at startup. When two installed extensions share the same Id, the higher - Version wins. The locally-built VSIX uses version 99... + Version wins. The locally-built VSIX uses version + ...0 (e.g. 2026.0529.1710.0) and the workload-shipped one is 1.x.x.x, so the LocalDev build always wins for the current user. The workload copy stays untouched on disk (no admin needed to install OR uninstall LocalDev). @@ -167,7 +168,7 @@ if ($VsixPath -ne "") { } if (-not (Test-Path $VsixDir)) { Write-Err "VSIX directory not found: $VsixDir" - Write-Err "Run '.\Build-VSIX.ps1 -Deployment LocalDev' first." + Write-Err "Run '.\Build-VSIX-Local.ps1 -Deployment LocalDev' first." exit 1 } @@ -181,7 +182,7 @@ if ($VsixPath -ne "") { if (-not $toInstall) { Write-Err "No matching LocalDev VSIX files found." Write-Err "Expected names: WindowsAppSDK.{Cs,Cpp}.Extension.Dev17.LocalDev..vsix" - Write-Err "Run: .\Build-VSIX.ps1 -Deployment LocalDev" + Write-Err "Run: .\Build-VSIX-Local.ps1 -Deployment LocalDev" exit 1 } diff --git a/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 index 850ee5b1bb..124566d1d7 100644 --- a/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 +++ b/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 @@ -65,7 +65,7 @@ function Write-Err { param([string]$M) Write-Host "[X] $M" -ForegroundColor Red $scriptDir = $PSScriptRoot if (-not $scriptDir) { $scriptDir = (Get-Location).Path } -$buildScript = Join-Path $scriptDir 'Build-VSIX.ps1' +$buildScript = Join-Path $scriptDir 'Build-VSIX-Local.ps1' $installScript = Join-Path $scriptDir 'Install-LocalDev-VSIX.ps1' $publishDir = Join-Path $scriptDir 'publish\VSIX' @@ -81,14 +81,14 @@ if ($SkipBuild) { } else { Write-Banner 'Build LocalDev VSIX' if (-not (Test-Path $buildScript)) { - Write-Err "Build-VSIX.ps1 not found at: $buildScript" + Write-Err "Build-VSIX-Local.ps1 not found at: $buildScript" exit 1 } Push-Location $scriptDir try { & $buildScript -Deployment LocalDev if ($LASTEXITCODE -ne 0) { - Write-Err "Build-VSIX.ps1 exited with code $LASTEXITCODE" + Write-Err "Build-VSIX-Local.ps1 exited with code $LASTEXITCODE" exit $LASTEXITCODE } } finally { diff --git a/dev/Templates/VSIX/build-local-VSIX-package/build-local-VSIX-package.md b/dev/Templates/VSIX/build-local-VSIX-package/build-local-VSIX-package.md index a8f6b0996b..2cfc5c05c1 100644 --- a/dev/Templates/VSIX/build-local-VSIX-package/build-local-VSIX-package.md +++ b/dev/Templates/VSIX/build-local-VSIX-package/build-local-VSIX-package.md @@ -82,7 +82,7 @@ The recommended one-shot orchestrator: Or run the steps separately (same result): ```powershell -.\Build-VSIX.ps1 # default = -Deployment LocalDev +.\Build-VSIX-Local.ps1 # default = -Deployment LocalDev .\Install-LocalDev-VSIX.ps1 ``` @@ -145,27 +145,29 @@ parity. **They cannot be installed locally on a workload-equipped machine.** ```powershell # Build the Standalone artifact only: -.\Build-VSIX.ps1 -Deployment Standalone +.\Build-VSIX-Local.ps1 -Deployment Standalone # Build the Component artifact only: -.\Build-VSIX.ps1 -Deployment Component +.\Build-VSIX-Local.ps1 -Deployment Component # Build both: -.\Build-VSIX.ps1 -Deployment Both +.\Build-VSIX-Local.ps1 -Deployment Both # Build with a specific Windows App SDK version: -.\Build-VSIX.ps1 -Deployment Standalone -WindowsAppSDKVersion "1.8.260317003" +.\Build-VSIX-Local.ps1 -Deployment Standalone -WindowsAppSDKVersion "1.8.260317003" # Build using a local .nupkg directory (auto-extracts the WindowsAppSDK version # from the embedded .nuspec): -.\Build-VSIX.ps1 -Deployment Standalone -NupkgSourceDir "C:\my-packages" +.\Build-VSIX-Local.ps1 -Deployment Standalone -NupkgSourceDir "C:\my-packages" -# Override the auto-generated VSIX version (default is 99...): -.\Build-VSIX.ps1 -Deployment Standalone -OptionalVSIXVersion "99.2026.0428.1640" +# (Optional) Override the auto-generated VSIX version. By default the script +# stamps ...0 (e.g. 2026.0529.1640.0) from the current +# time. Pass this flag only if you want a specific value, for instance: +.\Build-VSIX-Local.ps1 -Deployment Standalone -OptionalVSIXVersion "2026.0529.1640.0" ``` The output `.vsix` files land in `.\publish\VSIX\` named with the version, e.g. -`WindowsAppSDK.Cs.Extension.Dev17.Standalone.99.2026.0428.1640.vsix`. +`WindowsAppSDK.Cs.Extension.Dev17.Standalone.2026.0529.1640.0.vsix`. --- @@ -173,9 +175,9 @@ The output `.vsix` files land in `.\publish\VSIX\` named with the version, e.g. | File | Purpose | |------|---------| -| `Build-VSIX.ps1` | Builds VSIXes. Default `-Deployment LocalDev`. | +| `Build-VSIX-Local.ps1` | Builds VSIXes. Default `-Deployment LocalDev`. | | `Install-LocalDev-VSIX.ps1` | Per-user install of the LocalDev VSIX into VS 17+ instances. No admin. | -| `build-install-localdev-vsix.ps1` | One-shot orchestrator: Build-VSIX (LocalDev) + Install-LocalDev-VSIX. | +| `build-install-localdev-vsix.ps1` | One-shot orchestrator: Build-VSIX-Local (LocalDev) + Install-LocalDev-VSIX. | | `vsix-nuget.config` | NuGet config the build script passes via `/p:RestoreConfigFile`. | | `investigation.md` | Historical findings about why per-machine install is broken on workload-equipped machines. Read this before trying to "fix" Standalone install. | @@ -201,7 +203,7 @@ re-run. ### NuGet restore fails with "Unable to find version..." The repo's root `NuGet.config` uses `` and points at Microsoft -internal feeds only. `Build-VSIX.ps1` works around this by passing +internal feeds only. `Build-VSIX-Local.ps1` works around this by passing `vsix-nuget.config` via `/p:RestoreConfigFile`. If you're invoking MSBuild yourself, use the same parameter. @@ -218,13 +220,13 @@ The `WinAppSdk.CSharp.DotnetNewTemplates.csproj` targets `net8.0`. Install the ### `VSSDK1300: Could not find a part of the path...` The VSSDK extracts template ZIPs into deeply nested paths and the .NET -Framework APIs it uses do not honor `LongPathsEnabled`. `Build-VSIX.ps1` +Framework APIs it uses do not honor `LongPathsEnabled`. `Build-VSIX-Local.ps1` already redirects build output to `C:\tmp\vsixbo\` to keep paths short. If you're invoking MSBuild yourself, pass `/p:BuildOutput=C:\tmp\vsixbo\`. ### "Version 1.0.0-preview1 of package Microsoft.WindowsAppSDK not found" -You ran `Build-VSIX.ps1` without `-WindowsAppSDKVersion` or `-NupkgSourceDir`, +You ran `Build-VSIX-Local.ps1` without `-WindowsAppSDKVersion` or `-NupkgSourceDir`, so the build fell back to the placeholder version baked into `Directory.Build.props`. The VSIX file still builds and installs (the inner templates carry token placeholders that are rewritten at template-instantiation @@ -232,7 +234,7 @@ time), but `dotnet new`-style restore against the published nupkg won't work. Pass a real version when you need package-realistic testing: ```powershell -.\Build-VSIX.ps1 -Deployment LocalDev -WindowsAppSDKVersion "1.8.260317003" +.\Build-VSIX-Local.ps1 -Deployment LocalDev -WindowsAppSDKVersion "1.8.260317003" ``` ### Want to install the Standalone or Component VSIX locally From 4c16568f92eddedaf6b0a4d80a8d436dfd2ba5cb Mon Sep 17 00:00:00 2001 From: kythant Date: Mon, 8 Jun 2026 18:07:06 -0700 Subject: [PATCH 16/16] FI fixups: squashed conflict resolution adjustments Combines 4 fixup commits applied on top of the FI merge: - 78c7b68f Merge Conflict Fix: Duplicate Name in Foundation-PR - cd7d429d Merge Conflict Fix: /WindowsAppSDK-BuildVSIX-Steps.yml - c7dc6b34 Use Latest Nightly for Installer and VSIX artifacts - baf3e991 Update ArtifactName to WindowsAppSDK-NuGet-And-MSIX Files: build/WindowsAppSDK-Foundation-PR.yml: remove duplicate name: directive introduced by auto-merge. build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml: revert artifactName to ${{ parameters.artifactName }}; restore Latest Nightly download configuration (project/runVersion/runBranch). build/AzurePipelinesTemplates/WindowsAppSDK-BuildInstaller-Steps.yml: align Installer download with VSIX Latest Nightly behavior. --- .../WindowsAppSDK-BuildInstaller-Steps.yml | 31 ++++++++++++++----- .../WindowsAppSDK-BuildVSIX-Steps.yml | 10 +++--- build/WindowsAppSDK-Foundation-PR.yml | 2 -- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildInstaller-Steps.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildInstaller-Steps.yml index 03a9863a44..8779166963 100644 --- a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildInstaller-Steps.yml +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildInstaller-Steps.yml @@ -23,7 +23,7 @@ parameters: # preserves the legacy name so non-monobuild callers don't need to opt in. - name: artifactName type: string - default: 'WindowsAppSDK_Nuget_And_MSIX' + default: 'WindowsAppSDK-NuGet-And-MSIX' # When true, skip the artifact download step entirely. The caller is responsible # for ensuring $(parameters.artifactName) content is already present at # $(System.ArtifactsDirectory) before this template's first MSBuild step. Used by @@ -34,6 +34,12 @@ parameters: - name: SkipArtifactDownload type: boolean default: false +# Branch (in the Aggregator pipeline's repo) to pull the latest Windows App SDK +# nuget from when UseCurrentBuild is false. The Aggregator nightly runs daily on +# 'main', so default there. Override if the active publishing branch changes. +- name: NightlyBranchName + type: string + default: 'refs/heads/release/dev/monobuild' steps: - task: PowerShell@2 @@ -69,19 +75,28 @@ steps: condition: and(succeeded(), ne(variables.SkipInstallerBuild, true)) - ${{ else }}: ### - # This step downloads the WindowsAppSDK NuGet package from a pipeline - # variables: OfficialPipelineID LatestOfficialBuildID - # for use in building the Installers + # This step downloads the WindowsAppSDK NuGet package from the Aggregator nightly + # pipeline (identified by the OfficialPipelineID variable) for use in building the + # VSIX. We pull the latest run from NightlyBranchName rather than a pinned + # LatestOfficialBuildID so PR build-validation runs always get a fresh package without + # needing a build id supplied at queue time. + # + # The nightly runs commonly finish as PartiallySucceeded (some downstream test/SDL + # stages are not green) even though the packaging stage produced the artifact, so + # both allowPartiallySucceededBuilds and allowFailedBuilds must be true -- the task + # requires the pair to be set together to consider non-succeeded runs. - task: DownloadPipelineArtifact@2 displayName: 'Download WindowsAppSDK From Latest Nightly' inputs: artifactName: ${{ parameters.artifactName }} targetPath: '$(System.ArtifactsDirectory)' source: 'specific' - project: 55e8140e-57ac-4e5f-8f9c-c7c15b51929d # TODO: replace with $(System.TeamProjectId) once we can have a full WinAppSDK Build on the new mono repo - pipeline: $(OfficialPipelineID) - pipelineId: $(LatestOfficialBuildID) - condition: and(succeeded(), ne(variables.SkipInstallerBuild, true)) + project: $(System.TeamProjectId) + pipeline: 190463 + runVersion: 'latestFromBranch' + runBranch: '${{ parameters.NightlyBranchName }}' + allowPartiallySucceededBuilds: true + allowFailedBuilds: true ### # Install the internal licensing support for release-signed packages. This can always be present in diff --git a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml index 5bb80c6ac1..ff7a11fbf7 100644 --- a/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml +++ b/build/AzurePipelinesTemplates/WindowsAppSDK-BuildVSIX-Steps.yml @@ -31,7 +31,7 @@ parameters: # preserves the legacy name so non-monobuild callers don't need to opt in. - name: artifactName type: string - default: 'WindowsAppSDK_Nuget_And_MSIX' + default: 'WindowsAppSDK-NuGet-And-MSIX' # When true, skip the artifact download step entirely. The caller is responsible # for ensuring $(parameters.artifactName) content is already present at # $(System.ArtifactsDirectory) before ExtractWindowsAppSDKVersion runs. Used by @@ -51,7 +51,7 @@ parameters: # 'main', so default there. Override if the active publishing branch changes. - name: NightlyBranchName type: string - default: 'refs/heads/main' + default: 'refs/heads/release/dev/monobuild' steps: - ${{ if eq(parameters.SkipArtifactDownload, false) }}: @@ -59,7 +59,7 @@ steps: - task: DownloadPipelineArtifact@2 displayName: 'Download WindowsAppSDK From Current Build' inputs: - artifactName: 'WindowsAppSDK_Nuget_And_MSIX' + artifactName: ${{ parameters.artifactName }} targetPath: '$(System.ArtifactsDirectory)' - ${{ else }}: ### @@ -76,11 +76,11 @@ steps: - task: DownloadPipelineArtifact@2 displayName: 'Download WindowsAppSDK From Latest Nightly' inputs: - artifactName: 'WindowsAppSDK_Nuget_And_MSIX' + artifactName: ${{ parameters.artifactName }} targetPath: '$(System.ArtifactsDirectory)' source: 'specific' project: $(System.TeamProjectId) - pipeline: $(OfficialPipelineID) + pipeline: 190463 runVersion: 'latestFromBranch' runBranch: '${{ parameters.NightlyBranchName }}' allowPartiallySucceededBuilds: true diff --git a/build/WindowsAppSDK-Foundation-PR.yml b/build/WindowsAppSDK-Foundation-PR.yml index 643a2ac42c..702f43a35e 100644 --- a/build/WindowsAppSDK-Foundation-PR.yml +++ b/build/WindowsAppSDK-Foundation-PR.yml @@ -50,8 +50,6 @@ variables: - name: maxParallelForBuildSamplesCompatJob_arm64 value: 20 -name: $(MajorVersion).$(FoundationMinorVersionResolved).$(FoundationPatchVersionResolved)-$(NugetBuildTypePrefix)$(channel)$(Revision) - resources: repositories: - repository: templates