WindowsAppSDK/Directory.Build.props

81 строка
5.0 KiB
Plaintext
Исходник Обычный вид История

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License. See LICENSE-CODE in the project root for license information. -->
<!-- This is a special MSBuild file that is parsed before everything else when MSBuild detects it in our directory structure.
Adding Sdk="Microsoft.NET.Sdk" to a project causes NuGet files to be generated very early on, so we need these defines to be here
to ensure that all of our build output files end up in the same location. -->
<Project InitialTargets="DirectoryBuildPropsInfo" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
devcheck -CheckDependencies (#3188) Teach DevCheck to verify dependencies To use: * DevCheck -CheckDependencies (or -All or no parameters) to verify dependencies * DevCheck -SyncDependencies to verify and potentially update dependencies (if necessary) * DevCheck -CheckVisualStudio now also verifies all required components are installed per docs\Coding-Guidelines\VisualStudio2022.vsconfig Also enabled StrictMode 3.0 for better error detection. Sample runs: [C:\source\repos\windowsappsdk]DevCheck.cmd -CheckVisualStudio Checking developer environment... Windows App SDK location...C:\source\repos\windowsappsdk VisualStudio 2022...C:\Program Files\Microsoft Visual Studio\2022\Enterprise ...Scanning 69 components in C:\source\repos\windowsappsdk\docs\Coding-Guidelines\VisualStudio2022.vsconfig.....................................................................OK Coding time! and [C:\source\repos\windowsappsdk]DevCheck.cmd Checking developer environment... Windows App SDK location...C:\source\repos\windowsappsdk VisualStudio 2022...C:\Program Files\Microsoft Visual Studio\2022\Enterprise ...Scanning 69 components in C:\source\repos\windowsappsdk\docs\Coding-Guidelines\VisualStudio2022.vsconfig.....................................................................OK Test certificate for C:\source\repos\windowsappsdk\.user\winappsdk.certificate.test.thumbprint...OK Test certificate AF8A2139E3942FE1D3DA65009D68C2A97EB41739...OK TAEF service...Running Reading C:\source\repos\windowsappsdk\eng\Version.Details.xml... 14 dependencies detected Reading C:\source\repos\windowsappsdk\eng\Version.Dependencies.props... Verify C:\source\repos\windowsappsdk\eng\Version.Dependencies.props...OK Scanning packages.config... Scanned 23 packages.config Scanned 40 *.vcxproj Coding time! TODO (in a future PR) * Verify references in *proj use only packages in Version.*.xml * Verify references in *proj use only package versions matching Version.*.xml
2023-01-04 22:46:40 +03:00
<Import Project="eng\Version.Dependencies.props" />
<!-- Due to import ordering inconsistencies between different project types, we import this file from multiple places. -->
<Import Project="$(MSBuildThisFileDirectory)build\EnsureOutputLayout.props" Condition="$(EnsureOutputLayoutPropsIncluded) == ''" />
<PropertyGroup>
<IsTDPConfiguration>false</IsTDPConfiguration>
<GeneratedFilesDir>$(BaseIntermediateOutputPath)Generated Files\</GeneratedFilesDir>
<GenerateProjectSpecificOutputFolder>True</GenerateProjectSpecificOutputFolder>
<ForceImportAfterCppTargets>$(BuildRoot)AfterCpp.targets</ForceImportAfterCppTargets>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
2021-07-15 22:29:42 +03:00
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<NugetPackageDirectory>$(RepoRoot)\packages</NugetPackageDirectory>
</PropertyGroup>
<!-- Compilation differs for the build pipeline vs local development -->
<PropertyGroup Condition="$(WindowsAppSDKBuildPipeline) != '1'">
<!-- If not set, default it to no . -->
<WindowsAppSDKBuildPipeline>0</WindowsAppSDKBuildPipeline>
</PropertyGroup>
<Target Name="DirectoryBuildPropsInfo">
<Message Condition="'$(WindowsAppSDKBuildPipeline)' == '1'" Importance="High" Text="Directory.Build.props detects WindowsAppSDKBuildPipeline=$(WindowsAppSDKBuildPipeline)"/>
Generate cert (#1986) * Update DevCheck to generate MSTest.pfx/.cer * Refactor temp handling. Add .user dir * Change cert handling to use .user\* and direct certificate handler via Powershell's PKI module. Buh-bye all references to MSTest.* and certutil * Add -Remove-DevTestCert and -Remove-DevTestPfx * Change all temp\MSTest.pfx to .user\winappsdk.certificate.test.pfx * Added -CertPasswordFile, -CertPasswordUser, -RemoveAll. Save password as plaintext to .pwd file for later use * Update makemsix.cmd to pass along the .pwd content needed to use the (now password protected) .pfx * Update MSTest references * Start of changing NMAKEfiles to MSBuild * Add new file * MakeMsix.targets works! Rewrote DDLM.msix to work it out, when running a specific project (e.g. 'msbuild /bl /p:Configuration=Debug,Platform=x64 /t:Build test\DynamicDependency\data\DynamicDependencyLifetimeManager.Msix\DynamicDependencyLifetimeManager.Msix.vcxproj'). Now to verify it works when building the solution, moving MakeMsix.targets out to root\build and propogating this to the other makemsix projects * 'msbuild foo.vcxproj' works but 'msbuild bar.sln' fails due to 'C:\source\repos\windowsappsdk\test\DynamicDependency\data\DynamicDependencyLifetimeManager.Msix\DynamicDependencyLifetimeManager.Msix.vcxproj error MSB4057: The target GetProjectInfoForReference does not exist in the project. [C:\source\repos\windowsappsdk\' Seems GetPRojectInfoForReference is referenced by 'C:\ProgramFiles (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets' and Microsoft.Makefile.targets, we don't fit either but they're required to resolve '<ProjectReference...'? Is it possible to move the ProjectReference dependency to the .sln? Or make this work without trying to make a full blown C++ or NMake project? Time to ping some VS/MSBuild experts... * Tweaked the vcxproj to successfully create .msix via MakeMSIX! * Moved MakeMSIX.targets to the root (with other build files) * It works! Got the test projects building with the .pfx and .pwd * Rewiring test projects to use MakeMsix.targets instead of NMake * Yet more MakeMsix fixup * Fixed the package name * Added dummy Clean command (for now) * Fixed Deployment's test package where source files get put to different subdir+filename inside the msix * Fix DevCheck Start-Service to gracefully degrade if not running as admin * DeploymentTests were missing a build order dependency on BootstrapDLL project * Updated DevCheck generated cert to have 12-month lifespan (like current one) * Move Framework.* projects from makemsix.cmd to MakeMSIX.targets * Delete makemsix.cmd (obsolete) * Updated test projects to use static manifests instead of generated from a template (unnecessary complexity) * Deleted obsolete MakeAppxManifestFromTemplate.* * Removed obsolete manifest/template handling. Removed printfery debugging * Minor syntax cleanup. Fixed appxmanifest overly aggressive copy/paste human error <sheepish grin>. Fixed publish-header delete-custom-build-step human error * Fixup Math framework header publishing (due to bad merge due to the age of this change and other work in other branches that hit main. Grrr) * Deleted obsolete files * Replaced SolutionDir with RepoRoot * Rewrote installer's testpackage creation project to use MakeMSIX * Fixed naming inconsistencies * Addressed some issues. More to come * Fixed Get-UserPath emitting New-Item result to the output stream thus when creating the .user directory return $user returned System.Object[] with 2 objects in the stream (filename twice). Well, that was fun * Fix bad merge * Added Clean support to MakeMSIX. Cleanup up some internals including dependencies. MakeMsixOutputFilename is no longer optional and inferred; it must be defined by a project before import'ing makemsix.targets * Optimized load-test-cert-password to a global done once instead of per import rof makemsix.targets * Updated projects to use the common RepoTestCertificate* * Removed obsolete and redundant <Error> check * Added file-existence check before readng file. Added error check at start of project to flag missing-devcheck-artifacts early rather than late * Test WTH is going on * Remove debugging printfery. NOTE: Separate Jobs in a pipeline (will? may?) run in parallel on different machines. Until build-mrt.yml is merged into WindowsAppSDK-BuildProject-Steps.yml any common setup (or cleanup) needs to be done in both. Also, it means MRTCore *cannot* use any APIs in WindowsAppRuntime.sln because they're technically peers * Add DevCheck support to RunTestsInHelix job
2022-01-26 09:41:38 +03:00
<Error Condition="!Exists('$(RepoTestCertificatePFX)')" Text="$(RepoTestCertificatePFX) not found. Run '$(RepoRoot)\DevCheck.cmd' to generate the test certificate." />
<Error Condition="!Exists('$(RepoTestCertificatePWD)')" Text="$(RepoTestCertificatePWD) not found. Run '$(RepoRoot)\DevCheck.cmd' to generate the test certificate." />
</Target>
<!-- Conditional behavior for build pipeline vs local development -->
<ItemDefinitionGroup Condition="$(WindowsAppSDKBuildPipeline) == '1'">
<ClCompile>
<PreprocessorDefinitions>WINDOWSAPPSDK_BUILD_PIPELINE=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\build\override;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WINDOWSAPPSDK_BUILD_PIPELINE=1;%(PreprocessorDefinitions);</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\build\override;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Midl>
<PreprocessorDefinitions>WINDOWSAPPSDK_BUILD_PIPELINE=1;%(PreprocessorDefinitions);</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\build\override;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</Midl>
</ItemDefinitionGroup>
Commonize Hybrid CRT support (#1026) * Move Hybrid CRT support out of individual project files up to the project level as a whole * Remove unnecesasry Store-app-ness that fails the Hybrid CRT support * Stop enabling DebugLibraries to avoid bringing in debug VC CRT DLL dependencies (violating the Hybrid CRT rules) * Add DesktopCompatible to MrtCoreManagedTest for future reference - it doesn't hurt, but it doesn't help (at least, not this issue). Also added Win32Proj keyword to M.AM.Resources project. We now have 1 root issue * Removed MrtCoreManagedTest from the build due to a fundamental incompatibility (ut's a Universal Windows project referencing Microsoft.ApplicationModel.Resources (the WinRT dll) which isn't, and VS doesn't like crossing streams. Even worse, VS and msbuild produce different results!). * Revert "Removed MrtCoreManagedTest from the build due to a fundamental incompatibility (ut's a Universal Windows project referencing Microsoft.ApplicationModel.Resources (the WinRT dll) which isn't, and VS doesn't like crossing streams. Even worse, VS and msbuild produce different results!)." This reverts commit 6f4b23dd1057ee2d0c2c0684aedcd3797adfbaa3. * Doing things to workaround MrtCoreManagedTest is a Univesal Windows project. Epic Failure. Because it's a Universal Windows project MSTest is creating $(OutDir)AppX subdir and copying files ***it knows about*** to the subdir. This brutal hack fails because File.Exists() for files in the parent directory fails, and that's because the last var pc = ... tries to access the AppX directory's parent ***and fails because Access Denied***. Previously doing the copy in the .csproj fails because the AppX directory doesn't necesarily exist before the test runs, and MD $(OutDir)AppX before copying files is pointless because MSTest is deleting all the files (if any) in the AppX directory when the test starts. So dead end upon dead end. Only way is to find a way to bench the Universal Windows .props logic to understand the files it doesn't want to allow through the ...Transitive... copy rules. Or just rewrite the project as a non-Universal Windows project. Or rewrite the test using TAEF instead of MSTest. Or... drink heavily. Hunting up Scott tomorrow hoping he has an idea * Hah! Thank you ScottJ! ReferenceCopyLocalPaths does the right thing, copying the needed DLLs into $(OutDir) *and* $(OutDir)AppX and the tests now find the dll and pass * Remove debugging hackery
2021-08-17 23:17:35 +03:00
devcheck -CheckDependencies (#3188) Teach DevCheck to verify dependencies To use: * DevCheck -CheckDependencies (or -All or no parameters) to verify dependencies * DevCheck -SyncDependencies to verify and potentially update dependencies (if necessary) * DevCheck -CheckVisualStudio now also verifies all required components are installed per docs\Coding-Guidelines\VisualStudio2022.vsconfig Also enabled StrictMode 3.0 for better error detection. Sample runs: [C:\source\repos\windowsappsdk]DevCheck.cmd -CheckVisualStudio Checking developer environment... Windows App SDK location...C:\source\repos\windowsappsdk VisualStudio 2022...C:\Program Files\Microsoft Visual Studio\2022\Enterprise ...Scanning 69 components in C:\source\repos\windowsappsdk\docs\Coding-Guidelines\VisualStudio2022.vsconfig.....................................................................OK Coding time! and [C:\source\repos\windowsappsdk]DevCheck.cmd Checking developer environment... Windows App SDK location...C:\source\repos\windowsappsdk VisualStudio 2022...C:\Program Files\Microsoft Visual Studio\2022\Enterprise ...Scanning 69 components in C:\source\repos\windowsappsdk\docs\Coding-Guidelines\VisualStudio2022.vsconfig.....................................................................OK Test certificate for C:\source\repos\windowsappsdk\.user\winappsdk.certificate.test.thumbprint...OK Test certificate AF8A2139E3942FE1D3DA65009D68C2A97EB41739...OK TAEF service...Running Reading C:\source\repos\windowsappsdk\eng\Version.Details.xml... 14 dependencies detected Reading C:\source\repos\windowsappsdk\eng\Version.Dependencies.props... Verify C:\source\repos\windowsappsdk\eng\Version.Dependencies.props...OK Scanning packages.config... Scanned 23 packages.config Scanned 40 *.vcxproj Coding time! TODO (in a future PR) * Verify references in *proj use only packages in Version.*.xml * Verify references in *proj use only package versions matching Version.*.xml
2023-01-04 22:46:40 +03:00
<!-- The standard props files do not set _DEBUG for the resource compiler, but we need that to build the correct file
flags in the version info resource -->
<ItemDefinitionGroup Condition="$(Configuration) == 'Debug'">
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions);</PreprocessorDefinitions>
</ResourceCompile>
devcheck -CheckDependencies (#3188) Teach DevCheck to verify dependencies To use: * DevCheck -CheckDependencies (or -All or no parameters) to verify dependencies * DevCheck -SyncDependencies to verify and potentially update dependencies (if necessary) * DevCheck -CheckVisualStudio now also verifies all required components are installed per docs\Coding-Guidelines\VisualStudio2022.vsconfig Also enabled StrictMode 3.0 for better error detection. Sample runs: [C:\source\repos\windowsappsdk]DevCheck.cmd -CheckVisualStudio Checking developer environment... Windows App SDK location...C:\source\repos\windowsappsdk VisualStudio 2022...C:\Program Files\Microsoft Visual Studio\2022\Enterprise ...Scanning 69 components in C:\source\repos\windowsappsdk\docs\Coding-Guidelines\VisualStudio2022.vsconfig.....................................................................OK Coding time! and [C:\source\repos\windowsappsdk]DevCheck.cmd Checking developer environment... Windows App SDK location...C:\source\repos\windowsappsdk VisualStudio 2022...C:\Program Files\Microsoft Visual Studio\2022\Enterprise ...Scanning 69 components in C:\source\repos\windowsappsdk\docs\Coding-Guidelines\VisualStudio2022.vsconfig.....................................................................OK Test certificate for C:\source\repos\windowsappsdk\.user\winappsdk.certificate.test.thumbprint...OK Test certificate AF8A2139E3942FE1D3DA65009D68C2A97EB41739...OK TAEF service...Running Reading C:\source\repos\windowsappsdk\eng\Version.Details.xml... 14 dependencies detected Reading C:\source\repos\windowsappsdk\eng\Version.Dependencies.props... Verify C:\source\repos\windowsappsdk\eng\Version.Dependencies.props...OK Scanning packages.config... Scanned 23 packages.config Scanned 40 *.vcxproj Coding time! TODO (in a future PR) * Verify references in *proj use only packages in Version.*.xml * Verify references in *proj use only package versions matching Version.*.xml
2023-01-04 22:46:40 +03:00
</ItemDefinitionGroup>
Do a compiler options pass on all binaries contributing to WinAppSDK (#2629) Tweak various compiler options for optimization (e.g. /GR-) and correctness/productivity (e.g. /W4). Project-wide standardization via new \WindowsAppSDK.Build.Cpp.props. See for more details. Corrected several inconsistencies across projects e.g. given Debug|Release + x86+x64+arm64 = 6 permutations, but some projects had an option set for only 5, or only 1. Most projects were mostly already setting most of these options so their changes were mostly removing the now-redundant project-specific setting and let the top-level project-wide standards handle it. This now standardizes all C++ projects to... * Compile (all): `/W4 /sdl /permissive- /std:c++17 /GR-` (except 2 projects that explicitly set `/std:c++20`) * Compile (debug): `/Od` * Compile (release): `/GS /GF /GL /Gy /Gw /Ob2 /Oi /Os /Oy` * Link (debug) `/DEBUG:FULL /INCREMENTAL` * Link (release): `/INCREMENTAL:NO /LTCG /OPT:ICF /OPT:REF` https://task.ms/39994837 Foundation https://task.ms/39994852 MRTCore * Add standardized (project-wide) C++ compile and link options * Remove ARM support (not supported, but some ARM-conditional fragments weren't removed) * Removed <WarningLevel> from all projects. Fixed up warnings masked by projects who'd set Level3 * Added SDLCheck for all builds. Added Disable-Optimization for Debug builds. Remove properties in *vcxproj redundnat with standardized options * Removed redundant <Optimization> from *vcxproj * Fixed warnings. Removed unnecessary delayload * Fixed some inconsistencies in project settings * Fixed AccessControlTests weren't copying the Bootstrap dll to the test's OutDir and thus the test dll wouldn't load * Fix some warnings in MRT. Had to disable read-only string pooling and strictstrings as workaround for some funky issues in MrtBaseUnitTests for now; filed bug for follow up to fix the errors * Corrected some comments. Added the missing LTCG option * Changed LTCG from fast to normal * Updated FavorSizeOrSpeed to Size instead of Speed * Move LinkIncremental=false for Release builds to the top-level project-wide standard * Host LinkIncremental=true if Configuration=Debug to be project wide setting (projects were routinely doing this locally, but inconsistently) * Fixed a comment * Added a cautionary note about why Detours.vcxproj has seemingly redundant or contradictory options and to be wary of making any changes * Removed options redundant with WindowsAppSDK.Build.Cpp.props * Elevate GenerateDebugInformation=Full to project-wide and remove redundancies. Move dev\WindowsAppSDK.Build.Cpp.props content to project wide (not just \dev) and delete the now obsolete dev\WindowsAppSDK.Build.Cpp.props (really only amounted to /ZH:SHA_256). * Incorporated feedback
2022-06-16 20:57:32 +03:00
<!-- Define our standardardized options for C/C++ builds -->
<Import Project="$(MSBuildThisFileDirectory)WindowsAppSDK.Build.Cpp.props" />
Generate cert (#1986) * Update DevCheck to generate MSTest.pfx/.cer * Refactor temp handling. Add .user dir * Change cert handling to use .user\* and direct certificate handler via Powershell's PKI module. Buh-bye all references to MSTest.* and certutil * Add -Remove-DevTestCert and -Remove-DevTestPfx * Change all temp\MSTest.pfx to .user\winappsdk.certificate.test.pfx * Added -CertPasswordFile, -CertPasswordUser, -RemoveAll. Save password as plaintext to .pwd file for later use * Update makemsix.cmd to pass along the .pwd content needed to use the (now password protected) .pfx * Update MSTest references * Start of changing NMAKEfiles to MSBuild * Add new file * MakeMsix.targets works! Rewrote DDLM.msix to work it out, when running a specific project (e.g. 'msbuild /bl /p:Configuration=Debug,Platform=x64 /t:Build test\DynamicDependency\data\DynamicDependencyLifetimeManager.Msix\DynamicDependencyLifetimeManager.Msix.vcxproj'). Now to verify it works when building the solution, moving MakeMsix.targets out to root\build and propogating this to the other makemsix projects * 'msbuild foo.vcxproj' works but 'msbuild bar.sln' fails due to 'C:\source\repos\windowsappsdk\test\DynamicDependency\data\DynamicDependencyLifetimeManager.Msix\DynamicDependencyLifetimeManager.Msix.vcxproj error MSB4057: The target GetProjectInfoForReference does not exist in the project. [C:\source\repos\windowsappsdk\' Seems GetPRojectInfoForReference is referenced by 'C:\ProgramFiles (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets' and Microsoft.Makefile.targets, we don't fit either but they're required to resolve '<ProjectReference...'? Is it possible to move the ProjectReference dependency to the .sln? Or make this work without trying to make a full blown C++ or NMake project? Time to ping some VS/MSBuild experts... * Tweaked the vcxproj to successfully create .msix via MakeMSIX! * Moved MakeMSIX.targets to the root (with other build files) * It works! Got the test projects building with the .pfx and .pwd * Rewiring test projects to use MakeMsix.targets instead of NMake * Yet more MakeMsix fixup * Fixed the package name * Added dummy Clean command (for now) * Fixed Deployment's test package where source files get put to different subdir+filename inside the msix * Fix DevCheck Start-Service to gracefully degrade if not running as admin * DeploymentTests were missing a build order dependency on BootstrapDLL project * Updated DevCheck generated cert to have 12-month lifespan (like current one) * Move Framework.* projects from makemsix.cmd to MakeMSIX.targets * Delete makemsix.cmd (obsolete) * Updated test projects to use static manifests instead of generated from a template (unnecessary complexity) * Deleted obsolete MakeAppxManifestFromTemplate.* * Removed obsolete manifest/template handling. Removed printfery debugging * Minor syntax cleanup. Fixed appxmanifest overly aggressive copy/paste human error <sheepish grin>. Fixed publish-header delete-custom-build-step human error * Fixup Math framework header publishing (due to bad merge due to the age of this change and other work in other branches that hit main. Grrr) * Deleted obsolete files * Replaced SolutionDir with RepoRoot * Rewrote installer's testpackage creation project to use MakeMSIX * Fixed naming inconsistencies * Addressed some issues. More to come * Fixed Get-UserPath emitting New-Item result to the output stream thus when creating the .user directory return $user returned System.Object[] with 2 objects in the stream (filename twice). Well, that was fun * Fix bad merge * Added Clean support to MakeMSIX. Cleanup up some internals including dependencies. MakeMsixOutputFilename is no longer optional and inferred; it must be defined by a project before import'ing makemsix.targets * Optimized load-test-cert-password to a global done once instead of per import rof makemsix.targets * Updated projects to use the common RepoTestCertificate* * Removed obsolete and redundant <Error> check * Added file-existence check before readng file. Added error check at start of project to flag missing-devcheck-artifacts early rather than late * Test WTH is going on * Remove debugging printfery. NOTE: Separate Jobs in a pipeline (will? may?) run in parallel on different machines. Until build-mrt.yml is merged into WindowsAppSDK-BuildProject-Steps.yml any common setup (or cleanup) needs to be done in both. Also, it means MRTCore *cannot* use any APIs in WindowsAppRuntime.sln because they're technically peers * Add DevCheck support to RunTestsInHelix job
2022-01-26 09:41:38 +03:00
<!-- Load the test certificate's password (so we do it once for reuse across projects) -->
<PropertyGroup Condition="'$(RepoTestCertificatePFX)' == ''">
<RepoTestCertificatePFX>$(RepoRoot)\.user\winappsdk.certificate.test.pfx</RepoTestCertificatePFX>
</PropertyGroup>
<PropertyGroup Condition="'$(RepoTestCertificatePWD)' == ''">
<RepoTestCertificatePWD>$(RepoRoot)\.user\winappsdk.certificate.test.pwd</RepoTestCertificatePWD>
</PropertyGroup>
<PropertyGroup Condition="('$(RepoTestCertificatePWD)' != '') and Exists('$(RepoTestCertificatePWD)')">
<RepoTestCertificatePassword>$([System.IO.File]::ReadAllText('$(RepoTestCertificatePWD)').TrimEnd())</RepoTestCertificatePassword>
<RepoTestCertificatePasswordRedacted>...redacted...</RepoTestCertificatePasswordRedacted>
</PropertyGroup>
<!-- 'Clean As We Go' if necessary (specified). Prevents build agents from running out of disk space -->
<Target Name="CleanIntermediateFiles" AfterTargets="Build" Condition="'$(WindowsAppSDKCleanIntermediateFiles)' == 'true'">
<RemoveDir Directories="$(IntermediateOutputPath)" />
</Target>
</Project>