From a4c37149e4763ef65b46b6c37732189701e595e8 Mon Sep 17 00:00:00 2001 From: Luke Longley <18177025+llongley@users.noreply.github.com> Date: Mon, 15 Mar 2021 03:34:30 -0700 Subject: [PATCH] Fix WACK certification error for transitive WinUI references (#4218) WACK expects to be able to find WinMDs for type resolution purposes in the root of the AppX, but when WinUI 2 is referenced via framework package, the WinMD is instead placed in a WinMetadata subdirectory. As a result, applications that reference nuget packages with references to WinUI 2, WACK certification fails. I'm not sure whether placing the WinMD file in that directory is still needed, so to work around this issue in the safest manner, this adds an additional build target that places the WinMD where WACK certification needs it to be. An example of an issue that will be resolved by this fix: windows-toolkit/Lottie-Windows#214 --- .../MUX-NugetReleaseTest-Job.yml | 5 + .../MUX-WACKTests-Job.yml | 5 + .../NuSpecs/MUXControls-Nuget-Common.targets | 43 +++++ .../MUXControls-Nuget-FrameworkPackage.props | 33 ---- .../AppThatUsesMUXIndirectly.csproj | 5 +- .../AppThatUsesMUXIndirectly/MainPage.xaml | 1 - .../AppThatUsesMUXIndirectly/MainPage.xaml.cs | 8 +- .../MUXCInterfaceImplementation.cpp | 22 +++ .../MUXCInterfaceImplementation.h | 26 +++ .../MUXCInterfaceImplementation.idl | 8 + .../PropertySheet.props | 16 ++ .../RuntimeComponentThatUsesMUX.def | 3 + ...RuntimeComponentThatUsesMUX.native.targets | 14 ++ .../RuntimeComponentThatUsesMUX.nuspec | 28 +++ .../RuntimeComponentThatUsesMUX.sln | 43 +++++ .../RuntimeComponentThatUsesMUX.targets | 16 ++ .../RuntimeComponentThatUsesMUX.vcxproj | 164 ++++++++++++++++++ ...untimeComponentThatUsesMUX.vcxproj.filters | 35 ++++ ...ntimeComponentThatUsesMUX_TemporaryKey.pfx | Bin 0 -> 2528 bytes .../packages.config | 5 + .../RuntimeComponentThatUsesMUX/pch.cpp | 1 + .../RuntimeComponentThatUsesMUX/pch.h | 16 ++ .../RuntimeComponentThatUsesMUX/readme.txt | 23 +++ 23 files changed, 483 insertions(+), 37 deletions(-) create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.cpp create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.h create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.idl create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/PropertySheet.props create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.def create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.native.targets create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.nuspec create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.sln create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.targets create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.vcxproj create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.vcxproj.filters create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX_TemporaryKey.pfx create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/packages.config create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/pch.cpp create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/pch.h create mode 100644 test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/readme.txt diff --git a/build/AzurePipelinesTemplates/MUX-NugetReleaseTest-Job.yml b/build/AzurePipelinesTemplates/MUX-NugetReleaseTest-Job.yml index 2d07a725a5..eaa4825550 100644 --- a/build/AzurePipelinesTemplates/MUX-NugetReleaseTest-Job.yml +++ b/build/AzurePipelinesTemplates/MUX-NugetReleaseTest-Job.yml @@ -75,6 +75,11 @@ jobs: .\test\MUXControlsReleaseTest\updateUsedNugetPackageVersion.ps1 $newVersion displayName: Update proj files to use candidate nupkg. + - template: MUX-BuildProject-Steps.yml + parameters: + solutionPath: test\MUXControlsReleaseTest\RuntimeComponentThatUsesMUX\RuntimeComponentThatUsesMUX.sln + artifactName: ${{ parameters.buildArtifactName }} + - template: MUX-BuildProject-Steps.yml parameters: solutionPath: $(solutionPath) diff --git a/build/AzurePipelinesTemplates/MUX-WACKTests-Job.yml b/build/AzurePipelinesTemplates/MUX-WACKTests-Job.yml index 733f9b7ff7..e57c60ae73 100644 --- a/build/AzurePipelinesTemplates/MUX-WACKTests-Job.yml +++ b/build/AzurePipelinesTemplates/MUX-WACKTests-Job.yml @@ -25,4 +25,9 @@ jobs: - task: PkgESWACKTests@10 inputs: AppxFolder: '$(artifactDownloadPath)\${{parameters.artifactName}}\$(BuildConfiguration)\$(BuildPlatform)\NugetPackageTestApp\AppPackages\NugetPackageTestApp_Test' + WACKFailbuild: true + + - task: PkgESWACKTests@10 + inputs: + AppxFolder: '$(artifactDownloadPath)\${{parameters.artifactName}}\$(BuildConfiguration)\$(BuildPlatform)\AppThatUsesMUXIndirectly\AppPackages\AppThatUsesMUXIndirectly_Test' WACKFailbuild: true \ No newline at end of file diff --git a/build/NuSpecs/MUXControls-Nuget-Common.targets b/build/NuSpecs/MUXControls-Nuget-Common.targets index 367a5f3a58..eee603899d 100644 --- a/build/NuSpecs/MUXControls-Nuget-Common.targets +++ b/build/NuSpecs/MUXControls-Nuget-Common.targets @@ -17,4 +17,47 @@ Text="Microsoft.UI.Xaml nuget package requires TargetPlatformVersion >= 10.0.18362.0 (current project is $(MicrosoftUIXamlTargetPlatformCheckValue))" Condition="$(MicrosoftUIXamlTargetPlatformCheckValue) < 18362" /> + + + + true + $(WinMetadataDir)\Microsoft.UI.Xaml.winmd + CustomOutputGroupForPackaging + $(ProjectName) + Microsoft.UI.Xaml.dll + + + + Microsoft.UI.Xaml.winmd + Microsoft.UI.Xaml\DensityStyles\Compact.xbf + + + + + + + + + + + + + + + + + + + + + + + + Microsoft.UI.Xaml.winmd + + + \ No newline at end of file diff --git a/build/NuSpecs/MUXControls-Nuget-FrameworkPackage.props b/build/NuSpecs/MUXControls-Nuget-FrameworkPackage.props index f2228fedf6..c72b8702f6 100644 --- a/build/NuSpecs/MUXControls-Nuget-FrameworkPackage.props +++ b/build/NuSpecs/MUXControls-Nuget-FrameworkPackage.props @@ -40,37 +40,4 @@ - - - - true - $(WinMetadataDir)\Microsoft.UI.Xaml.winmd - CustomOutputGroupForPackaging - $(ProjectName) - - - - Microsoft.UI.Xaml.winmd - Microsoft.UI.Xaml\DensityStyles\Compact.xbf - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/AppThatUsesMUXIndirectly.csproj b/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/AppThatUsesMUXIndirectly.csproj index d7fcb77c20..fb03b9f947 100644 --- a/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/AppThatUsesMUXIndirectly.csproj +++ b/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/AppThatUsesMUXIndirectly.csproj @@ -138,6 +138,9 @@ 1.0.67 + + 1.0.0 + @@ -158,7 +161,7 @@ --> - + \ No newline at end of file diff --git a/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/MainPage.xaml b/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/MainPage.xaml index c2fadc2f16..d337b1af23 100644 --- a/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/MainPage.xaml +++ b/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/MainPage.xaml @@ -9,6 +9,5 @@ Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> - diff --git a/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/MainPage.xaml.cs b/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/MainPage.xaml.cs index b642b39676..2390dbb432 100644 --- a/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/MainPage.xaml.cs +++ b/test/MUXControlsReleaseTest/AppThatUsesMUXIndirectly/MainPage.xaml.cs @@ -17,13 +17,17 @@ namespace AppThatUsesMUXIndirectly { public sealed partial class MainPage : Page { - // This app does NOT directly consume MUX, but it references another library that does use MUX. + // This app does NOT directly consume MUX, but it references a library and a nupkg that use MUX. public MainPage() { - this.InitializeComponent(); + var userControl = new LibraryThatUsesMUX.TestUserControl1(); layoutRoot.Children.Add(userControl); + + var muxcInterfaceImplementation = new RuntimeComponentThatUsesMUX.MUXCInterfaceImplementation(); + object dummy; + muxcInterfaceImplementation.TryCreateAnimatedVisual(null, out dummy); } } } diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.cpp b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.cpp new file mode 100644 index 0000000000..af5d5b3dd5 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.cpp @@ -0,0 +1,22 @@ +#include "pch.h" +#include "MUXCInterfaceImplementation.h" +#if __has_include("MUXCInterfaceImplementation.g.cpp") +#include "MUXCInterfaceImplementation.g.cpp" +#endif + +using namespace winrt; +using namespace Windows::UI::Xaml; + +namespace winrt::RuntimeComponentThatUsesMUX::implementation +{ + MUXCInterfaceImplementation::MUXCInterfaceImplementation() + { + } + + winrt::Microsoft::UI::Xaml::Controls::IAnimatedVisual MUXCInterfaceImplementation::TryCreateAnimatedVisual( + winrt::Windows::UI::Composition::Compositor const&, + winrt::Windows::Foundation::IInspectable&) + { + return nullptr; + } +} diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.h b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.h new file mode 100644 index 0000000000..76f285ea27 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.h @@ -0,0 +1,26 @@ +#pragma once + +#include "winrt/Windows.UI.Xaml.h" +#include "winrt/Windows.UI.Xaml.Markup.h" +#include "winrt/Windows.UI.Xaml.Controls.Primitives.h" +#include "winrt/Microsoft.UI.Xaml.Controls.h" +#include "MUXCInterfaceImplementation.g.h" + +namespace winrt::RuntimeComponentThatUsesMUX::implementation +{ + struct MUXCInterfaceImplementation : MUXCInterfaceImplementationT + { + MUXCInterfaceImplementation(); + + winrt::Microsoft::UI::Xaml::Controls::IAnimatedVisual TryCreateAnimatedVisual( + winrt::Windows::UI::Composition::Compositor const& compositor, + winrt::Windows::Foundation::IInspectable& diagnostics); + }; +} + +namespace winrt::RuntimeComponentThatUsesMUX::factory_implementation +{ + struct MUXCInterfaceImplementation : MUXCInterfaceImplementationT + { + }; +} diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.idl b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.idl new file mode 100644 index 0000000000..a9671f5b80 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/MUXCInterfaceImplementation.idl @@ -0,0 +1,8 @@ +namespace RuntimeComponentThatUsesMUX +{ + [default_interface] + runtimeclass MUXCInterfaceImplementation : Microsoft.UI.Xaml.Controls.IAnimatedVisualSource + { + MUXCInterfaceImplementation(); + } +} diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/PropertySheet.props b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/PropertySheet.props new file mode 100644 index 0000000000..5942ba395b --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/PropertySheet.props @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.def b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.def new file mode 100644 index 0000000000..24e7c1235c --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.def @@ -0,0 +1,3 @@ +EXPORTS +DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE +DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.native.targets b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.native.targets new file mode 100644 index 0000000000..2157e7aa12 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.native.targets @@ -0,0 +1,14 @@ + + + + <_WinmdDir>$(MSBuildThisFileDirectory)..\..\lib\uap10.0\ + + + + false + + + + diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.nuspec b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.nuspec new file mode 100644 index 0000000000..636b652b46 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.nuspec @@ -0,0 +1,28 @@ + + + + RuntimeComponentThatUsesMUX + 1.0.0 + RuntimeComponentThatUsesMUX + Microsoft + Microsoft + This package tests the functionality of having a NuGet package reference Microsoft.UI.Xaml. + © Microsoft Corporation. All rights reserved. + false + + + + + + + + + + + + + + + + + diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.sln b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.sln new file mode 100644 index 0000000000..53f594e9c7 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.sln @@ -0,0 +1,43 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30803.129 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RuntimeComponentThatUsesMUX", "RuntimeComponentThatUsesMUX.vcxproj", "{267D7B40-556E-447B-A262-B59B300CC8F6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|arm = Debug|arm + Debug|arm64 = Debug|arm64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|arm = Release|arm + Release|arm64 = Release|arm64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {267D7B40-556E-447B-A262-B59B300CC8F6}.Debug|arm.ActiveCfg = Debug|arm + {267D7B40-556E-447B-A262-B59B300CC8F6}.Debug|arm.Build.0 = Debug|arm + {267D7B40-556E-447B-A262-B59B300CC8F6}.Debug|arm64.ActiveCfg = Debug|arm64 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Debug|arm64.Build.0 = Debug|arm64 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Debug|x64.ActiveCfg = Debug|x64 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Debug|x64.Build.0 = Debug|x64 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Debug|x86.ActiveCfg = Debug|Win32 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Debug|x86.Build.0 = Debug|Win32 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Release|arm.ActiveCfg = Release|arm + {267D7B40-556E-447B-A262-B59B300CC8F6}.Release|arm.Build.0 = Release|arm + {267D7B40-556E-447B-A262-B59B300CC8F6}.Release|arm64.ActiveCfg = Release|arm64 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Release|arm64.Build.0 = Release|arm64 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Release|x64.ActiveCfg = Release|x64 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Release|x64.Build.0 = Release|x64 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Release|x86.ActiveCfg = Release|Win32 + {267D7B40-556E-447B-A262-B59B300CC8F6}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E4731583-0CEA-4289-A2E3-75D1563D9671} + EndGlobalSection +EndGlobal diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.targets b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.targets new file mode 100644 index 0000000000..004f66f46c --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.targets @@ -0,0 +1,16 @@ + + + + <_RuntimeIdentifier Condition="'$(Platform)' == 'Win32'">win10-x86 + <_RuntimeIdentifier Condition="'$(Platform)' != 'Win32'">win10-$(Platform) + <_DllDir>$(MSBuildThisFileDirectory)..\runtimes\$(_WinUIRuntimeIdentifier)\native\ + + + + + + + + diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.vcxproj b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.vcxproj new file mode 100644 index 0000000000..a2b3979d65 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.vcxproj @@ -0,0 +1,164 @@ + + + + + + true + true + true + {267d7b40-556e-447b-a262-b59b300cc8f6} + RuntimeComponentThatUsesMUX + RuntimeComponentThatUsesMUX + en-US + 16.0 + true + Windows Store + 10.0 + $(MuxSdkVersion) + 10.0.15063.0 + false + + + + + Debug + Win32 + + + Debug + x64 + + + Debug + arm64 + + + Debug + arm + + + Release + Win32 + + + Release + x64 + + + Release + arm64 + + + Release + arm + + + + DynamicLibrary + v142 + Unicode + false + + + true + true + + + false + true + false + + + + + + + + + + + + + + + + + Use + pch.h + $(IntDir)pch.pch + Level4 + %(AdditionalOptions) /bigobj + _WINRT_DLL;%(PreprocessorDefinitions) + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + + + Console + true + RuntimeComponentThatUsesMUX.def + + + + + _DEBUG;%(PreprocessorDefinitions) + + + + + NDEBUG;%(PreprocessorDefinitions) + + + true + true + + + + + + MUXCInterfaceImplementation.idl + Code + + + + + Create + + + + MUXCInterfaceImplementation.idl + Code + + + + + + + + + + + + + false + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + x86 + $(Platform) + + + + \ No newline at end of file diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.vcxproj.filters b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.vcxproj.filters new file mode 100644 index 0000000000..33fc64a571 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX.vcxproj.filters @@ -0,0 +1,35 @@ + + + + + accd3aa8-1ba0-4223-9bbe-0c431709210b + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tga;tiff;tif;png;wav;mfcribbon-ms + + + {926ab91d-31b4-48c3-b9a4-e681349f27f0} + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX_TemporaryKey.pfx b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/RuntimeComponentThatUsesMUX_TemporaryKey.pfx new file mode 100644 index 0000000000000000000000000000000000000000..6bca8f1fc3a5bd3b8fa9fbe3ac61b5c85c84b027 GIT binary patch literal 2528 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 literal 0 HcmV?d00001 diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/packages.config b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/packages.config new file mode 100644 index 0000000000..e22227309d --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/pch.cpp b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/pch.cpp new file mode 100644 index 0000000000..bcb5590be1 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/pch.cpp @@ -0,0 +1 @@ +#include "pch.h" diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/pch.h b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/pch.h new file mode 100644 index 0000000000..c4942fa260 --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/pch.h @@ -0,0 +1,16 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/readme.txt b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/readme.txt new file mode 100644 index 0000000000..61e004aeca --- /dev/null +++ b/test/MUXControlsReleaseTest/RuntimeComponentThatUsesMUX/readme.txt @@ -0,0 +1,23 @@ +======================================================================== + C++/WinRT RuntimeComponentThatUsesMUX Project Overview +======================================================================== + +This project demonstrates how to get started authoring Windows Runtime +classes directly with standard C++, using the C++/WinRT SDK component +to generate implementation headers from interface (IDL) files. The +generated Windows Runtime component binary and WinMD files should then +be bundled with the Universal Windows Platform (UWP) app consuming them. + +Steps: +1. Create an interface (IDL) file to define your Windows Runtime class, + its default interface, and any other interfaces it implements. +2. Build the project once to generate module.g.cpp, module.h.cpp, and + implementation templates under the "Generated Files" folder, as + well as skeleton class definitions under "Generated Files\sources". +3. Use the skeleton class definitions for reference to implement your + Windows Runtime classes. + +======================================================================== +Learn more about C++/WinRT here: +http://aka.ms/cppwinrt/ +========================================================================