Added ARM64 support

This commit is contained in:
Michael Grafnetter 2023-05-11 12:02:46 +02:00
parent d76ad51f46
commit a273b1371e
11 changed files with 382 additions and 70 deletions

View File

@ -48,15 +48,20 @@ $PSVersion
### Development Environment ### Development Environment
If you want to build the module from source code yourself, you need to install these programs first: If you want to build the module from source code yourself, you need to install these programs first:
- [Microsoft Visual Studio Community](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) 2015, 2017 or 2019 with these features installed: - [Microsoft Visual Studio Community](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) 2022 with these features installed:
* Common Tools for Visual C++ * .NET Framework 4.7.2 targeting pack
* Windows SDK (you have to retarget the [DSInternals.Replication.Interop](../Src/DSInternals.Replication.Interop/DSInternals.Replication.Interop.vcxproj) project to the version you have) * C++ 2022 Redistributable Update
* C++/CLI support for v143 build tools (Latest)
* MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)
* MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (Latest)
* Windows Universal C Runtime
* Windows 11 SDK (you might have to retarget the [DSInternals.Replication.Interop](../Src/DSInternals.Replication.Interop/DSInternals.Replication.Interop.vcxproj) project to the version you have)
* PowerShell Tools for Visual Studio (optional) * PowerShell Tools for Visual Studio (optional)
* Git for Windows (optional) * Git for Windows (optional)
* GitHub Extension for Visual Studio (optional) * GitHub Extension for Visual Studio (optional)
- [Windows Management Framework 5](https://www.microsoft.com/en-us/download/details.aspx?id=50395). - [Windows Management Framework 5](https://www.microsoft.com/en-us/download/details.aspx?id=50395).
To make IntelliSense work with *.psm1 files, the following code needs to be added to the `C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Xml\Schemas\catalog.xml` file: To make IntelliSense work with *.psm1 files, the following code needs to be added to the `C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Xml\Schemas\catalog.xml` file:
```xml ```xml
<Association extension="ps1xml" schema="https://raw.githubusercontent.com/PowerShell/PowerShell/master/src/Schemas/Format.xsd" enableValidation="true"/> <Association extension="ps1xml" schema="https://raw.githubusercontent.com/PowerShell/PowerShell/master/src/Schemas/Format.xsd" enableValidation="true"/>

7
.github/README.md vendored
View File

@ -4,8 +4,9 @@
[![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](../LICENSE.md) [![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](../LICENSE.md)
[![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg?logo=PowerShell)](#) [![PowerShell 3 | 4 | 5](https://img.shields.io/badge/PowerShell-3%20|%204%20|%205-0000FF.svg?logo=PowerShell)](#)
[![Windows Server 2008 R2 | 2012 R2 | 2016 | 2019 | 2022](https://img.shields.io/badge/Windows%20Server-2008%20R2%20|%202012%20R2%20|%202016%20|%202019%20|%202022-007bb8.svg?logo=Windows)](#) [![Windows Server 2008 R2 | 2012 R2 | 2016 | 2019 | 2022](https://img.shields.io/badge/Windows%20Server-2008%20R2%20|%202012%20R2%20|%202016%20|%202019%20|%202022-007bb8.svg?logo=Windows%2011)](#)
[![.NET Framework 4.7.2+](https://img.shields.io/badge/.NET%20Framework-4.7.2%2B-007FFF.svg)](#) [![.NET Framework 4.7.2+](https://img.shields.io/badge/Framework-4.7.2%2B-007FFF.svg?logo=.net)](#)
[![Architecture x64 | x86 | amd64](https://img.shields.io/badge/Architecture-x64%20|%20x86%20|%20ARM64-0071c5.svg?logo=Amazon%20EC2)](#)
## Introduction ## Introduction
@ -101,7 +102,7 @@ The easiest way of integrating the DSInternals functionality into .NET applicati
### Building from Source Code ### Building from Source Code
[![Visual Studio 2017 | 2019](https://img.shields.io/badge/Visual%20Studio-2017%20|%202019-383278.svg?logo=Visual-Studio-Code)](CONTRIBUTING.md#building-from-source-code) [![Visual Studio 2022](https://img.shields.io/badge/Visual%20Studio-2022-383278.svg?logo=Visual-Studio-Code)](CONTRIBUTING.md#building-from-source-code)
[![Build Status](https://dev.azure.com/DSInternals/DSInternals%20CI/_apis/build/status/DSInternals?branchName=master)](https://dev.azure.com/DSInternals/DSInternals%20CI/_build/latest?definitionId=2&branchName=master) [![Build Status](https://dev.azure.com/DSInternals/DSInternals%20CI/_apis/build/status/DSInternals?branchName=master)](https://dev.azure.com/DSInternals/DSInternals%20CI/_build/latest?definitionId=2&branchName=master)
[![Test Results](https://img.shields.io/azure-devops/tests/DSInternals/DSInternals%20CI/2.svg?label=Test%20Results&logo=Azure-DevOps)](https://dev.azure.com/DSInternals/DSInternals%20CI/_build/latest?definitionId=2&branchName=master) [![Test Results](https://img.shields.io/azure-devops/tests/DSInternals/DSInternals%20CI/2.svg?label=Test%20Results&logo=Azure-DevOps)](https://dev.azure.com/DSInternals/DSInternals%20CI/_build/latest?definitionId=2&branchName=master)

View File

@ -15,7 +15,7 @@ Import-Module $modulePath -ErrorAction Stop
$targets = 'Build' # 'Clean' $targets = 'Build' # 'Clean'
$configurations = 'Release', 'Debug' $configurations = 'Release', 'Debug'
$platforms = 'x86','x64' $platforms = 'x86','x64','ARM64'
# Delete the entire Build directory # Delete the entire Build directory
if(Test-Path $buildDir) if(Test-Path $buildDir)

View File

@ -12,7 +12,7 @@
RootModule = 'Invoke-MsBuild.psm1' RootModule = 'Invoke-MsBuild.psm1'
# Version number of this module. # Version number of this module.
ModuleVersion = '2.6.2' ModuleVersion = '2.7.1'
# Supported PSEditions # Supported PSEditions
# CompatiblePSEditions = @() # CompatiblePSEditions = @()
@ -107,7 +107,9 @@ PrivateData = @{
# IconUri = '' # IconUri = ''
# ReleaseNotes of this module # ReleaseNotes of this module
ReleaseNotes = '- Use native -WhatIf parameter functionality.' ReleaseNotes = 'Fixes:
- Compare MSBuild version numbers in other languages correctly.'
} # End of PSData hashtable } # End of PSData hashtable

View File

@ -56,9 +56,9 @@ function Invoke-MsBuild
By default the build output is not shown in any window. By default the build output is not shown in any window.
NOTE: This switch will override the ShowBuildOutputInNewWindow switch. NOTE: This switch will override the ShowBuildOutputInNewWindow switch.
NOTE: There is a problem with the -NoNewWindow parameter of the Start-Process cmdlet; this is used for the ShowBuildOutputInCurrentWindow switch. NOTE: There is a problem with the -NoNewWindow parameter of the Start-Process cmdlet; this is used for the ShowBuildOutputInCurrentWindow switch.
The bug is that in some PowerShell consoles, the build output is not directed back to the console calling this function, so nothing is displayed. The bug is that in some PowerShell consoles, the build output is not directed back to the console calling this function, so nothing is displayed.
To avoid the build process from appearing to hang, PromptForInputBeforeClosing only has an effect with ShowBuildOutputInCurrentWindow when running To avoid the build process from appearing to hang, PromptForInputBeforeClosing only has an effect with ShowBuildOutputInCurrentWindow when running
in the default "ConsoleHost" PowerShell console window, as we know it works properly with that console (it does not in other consoles like ISE, PowerGUI, etc.). in the default "ConsoleHost" PowerShell console window, as we know it works properly with that console (it does not in other consoles like ISE, PowerGUI, etc.).
.PARAMETER PromptForInputBeforeClosing .PARAMETER PromptForInputBeforeClosing
If set, this switch will prompt the user for input after the build completes, and will not continue until the user presses a key. If set, this switch will prompt the user for input after the build completes, and will not continue until the user presses a key.
@ -66,7 +66,7 @@ function Invoke-MsBuild
NOTE: This switch cannot be used with the PassThru switch. NOTE: This switch cannot be used with the PassThru switch.
NOTE: The user will need to provide input before execution will return back to the calling script (so do not use this switch for automated builds). NOTE: The user will need to provide input before execution will return back to the calling script (so do not use this switch for automated builds).
NOTE: To avoid the build process from appearing to hang, PromptForInputBeforeClosing only has an effect with ShowBuildOutputInCurrentWindow when running NOTE: To avoid the build process from appearing to hang, PromptForInputBeforeClosing only has an effect with ShowBuildOutputInCurrentWindow when running
in the default "ConsoleHost" PowerShell console window, as we know it works properly with that console (it does not in other consoles like ISE, PowerGUI, etc.). in the default "ConsoleHost" PowerShell console window, as we know it works properly with that console (it does not in other consoles like ISE, PowerGUI, etc.).
.PARAMETER MsBuildFilePath .PARAMETER MsBuildFilePath
By default this script will locate and use the latest version of MsBuild.exe on the machine. By default this script will locate and use the latest version of MsBuild.exe on the machine.
@ -101,7 +101,7 @@ function Invoke-MsBuild
BuildErrorsLogFilePath = The path to the build's error log file. BuildErrorsLogFilePath = The path to the build's error log file.
ItemToBuildFilePath = The item that MsBuild ran against. ItemToBuildFilePath = The item that MsBuild ran against.
CommandUsedToBuild = The full command that was used to invoke MsBuild. This can be useful for inspecting what parameters are passed to MsBuild.exe. CommandUsedToBuild = The full command that was used to invoke MsBuild. This can be useful for inspecting what parameters are passed to MsBuild.exe.
Message = A message describing any problems that were encoutered by Invoke-MsBuild. This is typically an empty string unless something went wrong. Message = A message describing any problems that were encountered by Invoke-MsBuild. This is typically an empty string unless something went wrong.
MsBuildProcess = The process that was used to execute MsBuild.exe. MsBuildProcess = The process that was used to execute MsBuild.exe.
BuildDuration = The amount of time the build took to complete, represented as a TimeSpan. BuildDuration = The amount of time the build took to complete, represented as a TimeSpan.
@ -116,7 +116,7 @@ function Invoke-MsBuild
{ {
Write-Output ("Build failed after {0:N1} seconds. Check the build log file '$($buildResult.BuildLogFilePath)' for errors." -f $buildResult.BuildDuration.TotalSeconds) Write-Output ("Build failed after {0:N1} seconds. Check the build log file '$($buildResult.BuildLogFilePath)' for errors." -f $buildResult.BuildDuration.TotalSeconds)
} }
elseif ($buildResult.BuildSucceeded -eq $null) elseif ($null -eq $buildResult.BuildSucceeded)
{ {
Write-Output "Unsure if build passed or failed: $($buildResult.Message)" Write-Output "Unsure if build passed or failed: $($buildResult.Message)"
} }
@ -129,7 +129,7 @@ function Invoke-MsBuild
while (!$process.HasExited) while (!$process.HasExited)
{ {
Write-Host "Solution is still buildling..." Write-Host "Solution is still building..."
Start-Sleep -Seconds 1 Start-Sleep -Seconds 1
} }
@ -143,7 +143,7 @@ function Invoke-MsBuild
Write-Output "Build completed successfully." Write-Output "Build completed successfully."
} }
Perfom the build against the file specified at $pathToSolution and checks it for success in a single line. Perform the build against the file specified at $pathToSolution and checks it for success in a single line.
.EXAMPLE .EXAMPLE
Invoke-MsBuild -Path "C:\Some Folder\MyProject.csproj" -MsBuildParameters "/target:Clean;Build" -ShowBuildOutputInNewWindow Invoke-MsBuild -Path "C:\Some Folder\MyProject.csproj" -MsBuildParameters "/target:Clean;Build" -ShowBuildOutputInNewWindow
@ -208,7 +208,7 @@ function Invoke-MsBuild
.NOTES .NOTES
Name: Invoke-MsBuild Name: Invoke-MsBuild
Author: Daniel Schroeder (originally based on the module at http://geekswithblogs.net/dwdii/archive/2011/05/27/part-2-automating-a-visual-studio-build-with-powershell.aspx) Author: Daniel Schroeder (originally based on the module at http://geekswithblogs.net/dwdii/archive/2011/05/27/part-2-automating-a-visual-studio-build-with-powershell.aspx)
Version: 2.6.2 Version: 2.7.1
#> #>
[CmdletBinding(SupportsShouldProcess, DefaultParameterSetName="Wait")] [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName="Wait")]
param param
@ -284,7 +284,7 @@ function Invoke-MsBuild
# Default the ParameterSet variables that may not have been set depending on which parameter set is being used. This is required for PowerShell v2.0 compatibility. # Default the ParameterSet variables that may not have been set depending on which parameter set is being used. This is required for PowerShell v2.0 compatibility.
if (!(Test-Path Variable:Private:AutoLaunchBuildLogOnFailure)) { $AutoLaunchBuildLogOnFailure = $false } if (!(Test-Path Variable:Private:AutoLaunchBuildLogOnFailure)) { $AutoLaunchBuildLogOnFailure = $false }
if (!(Test-Path Variable:Private:AutoLaunchBuildLogOnFailure)) { $AutoLaunchBuildErrorsLogOnFailure = $false } if (!(Test-Path Variable:Private:AutoLaunchBuildErrorsLogOnFailure)) { $AutoLaunchBuildErrorsLogOnFailure = $false }
if (!(Test-Path Variable:Private:KeepBuildLogOnSuccessfulBuilds)) { $KeepBuildLogOnSuccessfulBuilds = $false } if (!(Test-Path Variable:Private:KeepBuildLogOnSuccessfulBuilds)) { $KeepBuildLogOnSuccessfulBuilds = $false }
if (!(Test-Path Variable:Private:PromptForInputBeforeClosing)) { $PromptForInputBeforeClosing = $false } if (!(Test-Path Variable:Private:PromptForInputBeforeClosing)) { $PromptForInputBeforeClosing = $false }
if (!(Test-Path Variable:Private:PassThru)) { $PassThru = $false } if (!(Test-Path Variable:Private:PassThru)) { $PassThru = $false }
@ -331,12 +331,6 @@ function Invoke-MsBuild
# Build the arguments to pass to MsBuild. # Build the arguments to pass to MsBuild.
$buildArguments = """$Path"" $MsBuildParameters /fileLoggerParameters:LogFile=""$buildLogFilePath""$verbosityLevel /fileLoggerParameters1:LogFile=""$buildErrorsLogFilePath"";errorsonly" $buildArguments = """$Path"" $MsBuildParameters /fileLoggerParameters:LogFile=""$buildLogFilePath""$verbosityLevel /fileLoggerParameters1:LogFile=""$buildErrorsLogFilePath"";errorsonly"
# If the user hasn't set the UseSharedCompilation mode explicitly, turn it off (it's on by default, but can cause MsBuild to hang for some reason).
if ($buildArguments -notlike '*UseSharedCompilation*')
{
$buildArguments += " /p:UseSharedCompilation=false " # prevent processes from hanging (Roslyn compiler?)
}
# Get the path to the MsBuild executable. # Get the path to the MsBuild executable.
$msBuildPath = $MsBuildFilePath $msBuildPath = $MsBuildFilePath
[bool] $msBuildPathWasNotProvided = [string]::IsNullOrEmpty($msBuildPath) [bool] $msBuildPathWasNotProvided = [string]::IsNullOrEmpty($msBuildPath)
@ -415,12 +409,14 @@ function Invoke-MsBuild
{ {
if ($ShowBuildOutputInCurrentWindow) if ($ShowBuildOutputInCurrentWindow)
{ {
$result.MsBuildProcess = Start-Process cmd.exe -ArgumentList $cmdArgumentsToRunMsBuild -NoNewWindow -Wait -PassThru $result.MsBuildProcess = Start-Process cmd.exe -ArgumentList $cmdArgumentsToRunMsBuild -NoNewWindow -PassThru
} }
else else
{ {
$result.MsBuildProcess = Start-Process cmd.exe -ArgumentList $cmdArgumentsToRunMsBuild -WindowStyle $windowStyleOfNewWindow -Wait -PassThru $result.MsBuildProcess = Start-Process cmd.exe -ArgumentList $cmdArgumentsToRunMsBuild -WindowStyle $windowStyleOfNewWindow -PassThru
} }
Wait-Process -InputObject $result.MsBuildProcess
} }
# Perform the build and record how long it takes. # Perform the build and record how long it takes.
@ -449,7 +445,7 @@ function Invoke-MsBuild
} }
# Get if the build succeeded or not. # Get if the build succeeded or not.
[bool] $buildOutputDoesNotContainFailureMessage = (Select-String -Path $buildLogFilePath -Pattern "Build FAILED." -SimpleMatch) -eq $null [bool] $buildOutputDoesNotContainFailureMessage = $null -eq (Select-String -Path $buildLogFilePath -Pattern "Build FAILED." -SimpleMatch)
[bool] $buildReturnedSuccessfulExitCode = $result.MsBuildProcess.ExitCode -eq 0 [bool] $buildReturnedSuccessfulExitCode = $result.MsBuildProcess.ExitCode -eq 0
$buildSucceeded = $buildOutputDoesNotContainFailureMessage -and $buildReturnedSuccessfulExitCode $buildSucceeded = $buildOutputDoesNotContainFailureMessage -and $buildReturnedSuccessfulExitCode
@ -528,7 +524,7 @@ function Get-VisualStudioCommandPromptPathForVisualStudio2017AndNewer
{ {
# Later we can probably make use of the VSSetup.PowerShell module to find the MsBuild.exe: https://github.com/Microsoft/vssetup.powershell # Later we can probably make use of the VSSetup.PowerShell module to find the MsBuild.exe: https://github.com/Microsoft/vssetup.powershell
# Or perhaps the VsWhere.exe: https://github.com/Microsoft/vswhere # Or perhaps the VsWhere.exe: https://github.com/Microsoft/vswhere
# But for now, to keep this script PowerShell 2.0 compatible and not rely on external executables, let's look for it ourselve in known locations. # But for now, to keep this script PowerShell 2.0 compatible and not rely on external executables, let's look for it ourselves in known locations.
# Example of known locations: # Example of known locations:
# "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat" # "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
@ -543,10 +539,10 @@ function Get-VisualStudioCommandPromptPathForVisualStudio2017AndNewer
$expectedVsCommandPromptPathWithWildcards = "$visualStudioDirectoryPath\*\*\Common7\Tools\VsDevCmd.bat" $expectedVsCommandPromptPathWithWildcards = "$visualStudioDirectoryPath\*\*\Common7\Tools\VsDevCmd.bat"
$vsCommandPromptPathObjects = Get-Item -Path $expectedVsCommandPromptPathWithWildcards $vsCommandPromptPathObjects = Get-Item -Path $expectedVsCommandPromptPathWithWildcards
[bool] $vsCommandPromptWasNotFound = ($vsCommandPromptPathObjects -eq $null) -or ($vsCommandPromptPathObjects.Length -eq 0) [bool] $vsCommandPromptWasNotFound = ($null -eq $vsCommandPromptPathObjects) -or ($vsCommandPromptPathObjects.Length -eq 0)
if ($vsCommandPromptWasNotFound) if ($vsCommandPromptWasNotFound)
{ {
# Recurisvely search the entire Microsoft Visual Studio directory for the VS Command Prompt (slower, but will still work if MS changes folder structure). # Recursively search the entire Microsoft Visual Studio directory for the VS Command Prompt (slower, but will still work if MS changes folder structure).
Write-Verbose "The Visual Studio Command Prompt was not found at an expected location. Searching more locations, but this will be a little slow." Write-Verbose "The Visual Studio Command Prompt was not found at an expected location. Searching more locations, but this will be a little slow."
$vsCommandPromptPathObjects = Get-ChildItem -Path $visualStudioDirectoryPath -Recurse | Where-Object { $_.Name -ieq 'VsDevCmd.bat' } $vsCommandPromptPathObjects = Get-ChildItem -Path $visualStudioDirectoryPath -Recurse | Where-Object { $_.Name -ieq 'VsDevCmd.bat' }
} }
@ -582,6 +578,19 @@ function Get-VisualStudioCommandPromptPathForVisualStudio2015AndPrior
return $newestVsCommandPromptPath return $newestVsCommandPromptPath
} }
function Get-LatestMsBuildPath_NotUsedYetButCouldBeIfNeeded
{
[bool] $vsSetupExists = $null -ne (Get-Command Get-VSSetupInstance -ErrorAction SilentlyContinue)
if (!$vsSetupExists)
{
Write-Verbose "Importing the VSSetup module in order to determine TF.exe path..." -Verbose
Install-Module VSSetup -Scope CurrentUser -Force
}
[string] $visualStudioInstallationPath = (Get-VSSetupInstance | Select-VSSetupInstance -Latest -Require Microsoft.Component.MSBuild).InstallationPath
$msBuildExecutableFilePath = (Get-ChildItem $visualStudioInstallationPath -Recurse -Filter "MsBuild.exe" | Select-Object -First 1).FullName
return $msBuildExecutableFilePath
}
function Get-LatestMsBuildPath([switch] $Use32BitMsBuild) function Get-LatestMsBuildPath([switch] $Use32BitMsBuild)
{ {
<# <#
@ -616,14 +625,16 @@ function Get-LatestMsBuildPath([switch] $Use32BitMsBuild)
return $msBuildPath return $msBuildPath
} }
function Get-MsBuildPathForVisualStudio2017AndNewer([switch] $Use32BitMsBuild) function Get-MsBuildPathForVisualStudio2017AndNewer([bool] $Use32BitMsBuild)
{ {
# Later we can probably make use of the VSSetup.PowerShell module to find the MsBuild.exe: https://github.com/Microsoft/vssetup.powershell # Later we can probably make use of the VSSetup.PowerShell module to find the MsBuild.exe: https://github.com/Microsoft/vssetup.powershell
# Or perhaps the VsWhere.exe: https://github.com/Microsoft/vswhere # Or perhaps the VsWhere.exe: https://github.com/Microsoft/vswhere
# But for now, to keep this script PowerShell 2.0 compatible and not rely on external executables, let's look for it ourselve in known locations. # But for now, to keep this script PowerShell 2.0 compatible and not rely on external executables, let's look for it ourselves in known locations.
# Example of known locations: # Example of known locations:
# "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" - 32 bit # "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" - 32 bit
# "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\amd64\MSBuild.exe" - 64 bit # "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\amd64\MSBuild.exe" - 64 bit
# "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" -32 bit
# "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\amd64\MSBuild.exe" - 64 bit
[string] $visualStudioDirectoryPath = Get-CommonVisualStudioDirectoryPath [string] $visualStudioDirectoryPath = Get-CommonVisualStudioDirectoryPath
[bool] $visualStudioDirectoryPathDoesNotExist = [string]::IsNullOrEmpty($visualStudioDirectoryPath) [bool] $visualStudioDirectoryPathDoesNotExist = [string]::IsNullOrEmpty($visualStudioDirectoryPath)
@ -637,10 +648,10 @@ function Get-MsBuildPathForVisualStudio2017AndNewer([switch] $Use32BitMsBuild)
$expected64bitPathWithWildcards = "$visualStudioDirectoryPath\*\*\MsBuild\*\Bin\amd64\MsBuild.exe" $expected64bitPathWithWildcards = "$visualStudioDirectoryPath\*\*\MsBuild\*\Bin\amd64\MsBuild.exe"
$msBuildPathObjects = Get-Item -Path $expected32bitPathWithWildcards, $expected64bitPathWithWildcards $msBuildPathObjects = Get-Item -Path $expected32bitPathWithWildcards, $expected64bitPathWithWildcards
[bool] $msBuildWasNotFound = ($msBuildPathObjects -eq $null) -or ($msBuildPathObjects.Length -eq 0) [bool] $msBuildWasNotFound = ($null -eq $msBuildPathObjects) -or ($msBuildPathObjects.Length -eq 0)
if ($msBuildWasNotFound) if ($msBuildWasNotFound)
{ {
# Recurisvely search the entire Microsoft Visual Studio directory for MsBuild (slower, but will still work if MS changes folder structure). # Recursively search the entire Microsoft Visual Studio directory for MsBuild (slower, but will still work if MS changes folder structure).
Write-Verbose "MsBuild.exe was not found at an expected location. Searching more locations, but this will be a little slow." Write-Verbose "MsBuild.exe was not found at an expected location. Searching more locations, but this will be a little slow."
$msBuildPathObjects = Get-ChildItem -Path $visualStudioDirectoryPath -Recurse | Where-Object { $_.Name -ieq 'MsBuild.exe' } $msBuildPathObjects = Get-ChildItem -Path $visualStudioDirectoryPath -Recurse | Where-Object { $_.Name -ieq 'MsBuild.exe' }
} }
@ -657,7 +668,7 @@ function Get-MsBuildPathForVisualStudio2017AndNewer([switch] $Use32BitMsBuild)
return $newest64BitMsBuildPath return $newest64BitMsBuildPath
} }
function Get-MsBuildPathForVisualStudio2015AndPrior([switch] $Use32BitMsBuild) function Get-MsBuildPathForVisualStudio2015AndPrior([bool] $Use32BitMsBuild)
{ {
$registryPathToMsBuildToolsVersions = 'HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\' $registryPathToMsBuildToolsVersions = 'HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\'
if ($Use32BitMsBuild) if ($Use32BitMsBuild)
@ -670,6 +681,10 @@ function Get-MsBuildPathForVisualStudio2015AndPrior([switch] $Use32BitMsBuild)
} }
} }
# Backup the current culture and force using English US to ensure version numbers are in the expected format (e.g. 17.0).
$previousCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
[System.Threading.Thread]::CurrentThread.CurrentCulture = 'en-US'
# Get the path to the directory that the latest version of MsBuild is in. # Get the path to the directory that the latest version of MsBuild is in.
$msBuildToolsVersionsStrings = Get-ChildItem -Path $registryPathToMsBuildToolsVersions | Where-Object { $_ -match '[0-9]+\.[0-9]' } | Select-Object -ExpandProperty PsChildName $msBuildToolsVersionsStrings = Get-ChildItem -Path $registryPathToMsBuildToolsVersions | Where-Object { $_ -match '[0-9]+\.[0-9]' } | Select-Object -ExpandProperty PsChildName
$msBuildToolsVersions = @{} $msBuildToolsVersions = @{}
@ -679,6 +694,9 @@ function Get-MsBuildPathForVisualStudio2015AndPrior([switch] $Use32BitMsBuild)
$msBuildToolsVersionsKeyToUse = Get-Item -Path $registryPathToMsBuildToolsLatestVersion $msBuildToolsVersionsKeyToUse = Get-Item -Path $registryPathToMsBuildToolsLatestVersion
$msBuildDirectoryPath = $msBuildToolsVersionsKeyToUse | Get-ItemProperty -Name 'MSBuildToolsPath' | Select-Object -ExpandProperty 'MSBuildToolsPath' $msBuildDirectoryPath = $msBuildToolsVersionsKeyToUse | Get-ItemProperty -Name 'MSBuildToolsPath' | Select-Object -ExpandProperty 'MSBuildToolsPath'
# Restore the previous culture now that we're done comparing version numbers.
[System.Threading.Thread]::CurrentThread.CurrentCulture = $previousCulture
if(!$msBuildDirectoryPath) if(!$msBuildDirectoryPath)
{ {
return $null return $null
@ -692,25 +710,28 @@ function Get-MsBuildPathForVisualStudio2015AndPrior([switch] $Use32BitMsBuild)
function Get-CommonVisualStudioDirectoryPath function Get-CommonVisualStudioDirectoryPath
{ {
# As of VS 2022 Visual Studio is 64-bit, so look in "Program Files" directory before "Program Files (x86)".
[string] $programFilesDirectory = $null [string] $programFilesDirectory = $null
try try
{ {
$programFilesDirectory = Get-Item 'Env:\ProgramFiles(x86)' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Value $programFilesDirectory = Get-Item 'Env:\ProgramFiles' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Value
} }
catch catch
{ } { }
if ([string]::IsNullOrEmpty($programFilesDirectory)) if ([string]::IsNullOrEmpty($programFilesDirectory))
{ {
$programFilesDirectory = 'C:\Program Files (x86)' $programFilesDirectory = 'C:\Program Files'
} }
# If we're on a 32-bit machine, we need to go straight after the "Program Files" directory. [string] $visualStudioDirectoryPath = Join-Path -Path $programFilesDirectory -ChildPath 'Microsoft Visual Studio'
if (!(Test-Path -LiteralPath $programFilesDirectory -PathType Container)) [bool] $visualStudioDirectoryPathExists = (Test-Path -LiteralPath $visualStudioDirectoryPath -PathType Container)
if (!$visualStudioDirectoryPathExists)
{ {
# Look for Visual Studio in "Program Files (x86)" directory.
try try
{ {
$programFilesDirectory = Get-Item 'Env:\ProgramFiles' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Value $programFilesDirectory = Get-Item 'Env:\ProgramFiles(x86)' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Value
} }
catch catch
{ {
@ -719,13 +740,12 @@ function Get-CommonVisualStudioDirectoryPath
if ([string]::IsNullOrEmpty($programFilesDirectory)) if ([string]::IsNullOrEmpty($programFilesDirectory))
{ {
$programFilesDirectory = 'C:\Program Files' $programFilesDirectory = 'C:\Program Files (x86)'
} }
} }
[string] $visualStudioDirectoryPath = Join-Path -Path $programFilesDirectory -ChildPath 'Microsoft Visual Studio' $visualStudioDirectoryPath = Join-Path -Path $programFilesDirectory -ChildPath 'Microsoft Visual Studio'
$visualStudioDirectoryPathExists = (Test-Path -LiteralPath $visualStudioDirectoryPath -PathType Container)
[bool] $visualStudioDirectoryPathExists = (Test-Path -LiteralPath $visualStudioDirectoryPath -PathType Container)
if (!$visualStudioDirectoryPathExists) if (!$visualStudioDirectoryPathExists)
{ {
return $null return $null

View File

@ -10,6 +10,8 @@
--> -->
<TargetProcessorArchitecture Condition=" '$(Platform)'=='x64' ">amd64</TargetProcessorArchitecture> <TargetProcessorArchitecture Condition=" '$(Platform)'=='x64' ">amd64</TargetProcessorArchitecture>
<TargetProcessorArchitecture Condition=" '$(Platform)'=='Win32' ">x86</TargetProcessorArchitecture> <TargetProcessorArchitecture Condition=" '$(Platform)'=='Win32' ">x86</TargetProcessorArchitecture>
<TargetProcessorArchitecture Condition=" '$(Platform)'=='ARM' ">arm</TargetProcessorArchitecture>
<TargetProcessorArchitecture Condition=" '$(Platform)'=='ARM64' ">arm64</TargetProcessorArchitecture>
</PropertyGroup> </PropertyGroup>
<!-- Output Paths --> <!-- Output Paths -->
<PropertyGroup> <PropertyGroup>
@ -21,4 +23,4 @@
<LinkKeyFile>$(SigningKeyPath)</LinkKeyFile> <LinkKeyFile>$(SigningKeyPath)</LinkKeyFile>
<LinkDelaySign>$(PerformDelaySign)</LinkDelaySign> <LinkDelaySign>$(PerformDelaySign)</LinkDelaySign>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -13,7 +13,7 @@
[string] $interopAssemblyPath = Join-Path $PSScriptRoot "$env:PROCESSOR_ARCHITECTURE\DSInternals.Replication.Interop.dll" [string] $interopAssemblyPath = Join-Path $PSScriptRoot "$env:PROCESSOR_ARCHITECTURE\DSInternals.Replication.Interop.dll"
try try
{ {
Add-Type -Path $interopAssemblyPath Add-Type -Path $interopAssemblyPath -ErrorAction Stop
} }
catch [System.IO.IOException] catch [System.IO.IOException]
{ {
@ -26,7 +26,7 @@ catch [System.IO.IOException]
# Check the presence of the Universal C Runtime # Check the presence of the Universal C Runtime
[string] $ucrtPath = Join-Path ([System.Environment]::SystemDirectory) 'ucrtbase.dll' [string] $ucrtPath = Join-Path ([System.Environment]::SystemDirectory) 'ucrtbase.dll'
[bool] $ucrtPresent = Test-Path $ucrtPath [bool] $ucrtPresent = Test-Path -Path $ucrtPath
if(-not $ucrtPresent) if(-not $ucrtPresent)
{ {
@ -36,7 +36,7 @@ catch [System.IO.IOException]
} }
# Check if the interop assembly is blocked # Check if the interop assembly is blocked
[object] $zoneIdentifier = Get-Item $interopAssemblyPath -Stream 'Zone.Identifier' -ErrorAction SilentlyContinue [object] $zoneIdentifier = Get-Item -Path $interopAssemblyPath -Stream 'Zone.Identifier' -ErrorAction SilentlyContinue
if($zoneIdentifier -ne $null) if($zoneIdentifier -ne $null)
{ {

View File

@ -41,7 +41,7 @@ DotNetFrameworkVersion = '4.7.2' # This requirement is not enforced by older ver
# Minimum version of the common language runtime (CLR) required by this module # Minimum version of the common language runtime (CLR) required by this module
CLRVersion = '4.0.30319.42000' # Corresponds to .NET Framework 4.6 and later CLRVersion = '4.0.30319.42000' # Corresponds to .NET Framework 4.6 and later
# Processor architecture (None, X86, Amd64) required by this module # Processor architecture (None, X86, Amd64, ARM64) required by this module
ProcessorArchitecture = 'None' ProcessorArchitecture = 'None'
# Type files (.ps1xml) to be loaded when importing this module # Type files (.ps1xml) to be loaded when importing this module
@ -118,6 +118,7 @@ FileList = 'AutoMapper.dll',
'Newtonsoft.Json.dll', 'Newtonsoft.Json.dll',
'Numbers.dll', 'Numbers.dll',
'amd64\DSInternals.Replication.Interop.dll', 'amd64\DSInternals.Replication.Interop.dll',
'arm64\DSInternals.Replication.Interop.dll',
'x86\DSInternals.Replication.Interop.dll', 'x86\DSInternals.Replication.Interop.dll',
'en-US\about_DSInternals.help.txt', 'en-US\about_DSInternals.help.txt',
'en-US\DSInternals.PowerShell.dll-Help.xml' 'en-US\DSInternals.PowerShell.dll-Help.xml'

View File

@ -90,10 +90,10 @@ Describe 'DSInternals PowerShell Module' {
$licenseFile | Should -FileContentMatch ('Copyright \(c\) 2015-{0}' -f (Get-Date).Year) $licenseFile | Should -FileContentMatch ('Copyright \(c\) 2015-{0}' -f (Get-Date).Year)
} }
It 'contains Visual C++ Runtime (<Platform>)' -TestCases @{ Platform = 'x86' },@{ Platform = 'amd64' } -Test { It 'contains Visual C++ Runtime (<Platform>)' -TestCases @{ Platform = 'x86' },@{ Platform = 'amd64' },@{ Platform = 'arm64' } -Test {
param([string] $Platform) param([string] $Platform)
# Regardless of the runtime version, we expect 2-3 additional DLLs to be present in the x86/amd64 directory # Regardless of the runtime version, we expect 2-3 additional DLLs to be present in the x86/amd64/arm64 directory
$platformSpecificPath = Join-Path $ModulePath $Platform $platformSpecificPath = Join-Path $ModulePath $Platform
Get-ChildItem -Path $platformSpecificPath -Recurse -Include msvc*,vcruntime* | Get-ChildItem -Path $platformSpecificPath -Recurse -Include msvc*,vcruntime* |
Measure-Object | Measure-Object |

View File

@ -2,6 +2,14 @@
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\Configuration\Common.vcxproj.props" /> <Import Project="..\Configuration\Common.vcxproj.props" />
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -10,6 +18,14 @@
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -46,6 +62,20 @@
<CLRSupport>true</CLRSupport> <CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolSet)</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolSet)</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -60,6 +90,20 @@
<CLRSupport>true</CLRSupport> <CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolSet)</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>$(DefaultPlatformToolSet)</PlatformToolset>
<CLRSupport>true</CLRSupport>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -69,12 +113,24 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
@ -84,6 +140,16 @@
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<IncludePath>$(ProjectDir);$(IncludePath)</IncludePath> <IncludePath>$(ProjectDir);$(IncludePath)</IncludePath>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>$(ProjectDir);$(IncludePath)</IncludePath>
<EnableManagedIncrementalBuild>false</EnableManagedIncrementalBuild>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>$(ProjectDir);$(IncludePath)</IncludePath>
<EnableManagedIncrementalBuild>false</EnableManagedIncrementalBuild>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir);$(IncludePath)</IncludePath> <IncludePath>$(ProjectDir);$(IncludePath)</IncludePath>
@ -92,6 +158,16 @@
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir);$(IncludePath)</IncludePath> <IncludePath>$(ProjectDir);$(IncludePath)</IncludePath>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir);$(IncludePath)</IncludePath>
<EnableManagedIncrementalBuild>false</EnableManagedIncrementalBuild>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir);$(IncludePath)</IncludePath>
<EnableManagedIncrementalBuild>false</EnableManagedIncrementalBuild>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
@ -150,6 +226,64 @@
<EnableErrorChecks>All</EnableErrorChecks> <EnableErrorChecks>All</EnableErrorChecks>
</Midl> </Midl>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<ExceptionHandling>false</ExceptionHandling>
<CompileAsManaged>true</CompileAsManaged>
<PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>RpcRT4.lib;Secur32.lib</AdditionalDependencies>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
</Link>
<Midl>
<HeaderFileName>%(Filename).h</HeaderFileName>
</Midl>
<Midl>
<GenerateClientFiles>Stub</GenerateClientFiles>
</Midl>
<Midl>
<GenerateServerFiles>None</GenerateServerFiles>
<ClientStubFile>%(Filename).cpp</ClientStubFile>
<GenerateTypeLibrary>false</GenerateTypeLibrary>
<EnableErrorChecks>All</EnableErrorChecks>
</Midl>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<ExceptionHandling>false</ExceptionHandling>
<CompileAsManaged>true</CompileAsManaged>
<PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<AdditionalDependencies>RpcRT4.lib;Secur32.lib</AdditionalDependencies>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
</Link>
<Midl>
<HeaderFileName>%(Filename).h</HeaderFileName>
</Midl>
<Midl>
<GenerateClientFiles>Stub</GenerateClientFiles>
</Midl>
<Midl>
<GenerateServerFiles>None</GenerateServerFiles>
<ClientStubFile>%(Filename).cpp</ClientStubFile>
<GenerateTypeLibrary>false</GenerateTypeLibrary>
<EnableErrorChecks>All</EnableErrorChecks>
</Midl>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
@ -200,6 +334,56 @@
<ClientStubFile>%(Filename).cpp</ClientStubFile> <ClientStubFile>%(Filename).cpp</ClientStubFile>
</Midl> </Midl>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<ExceptionHandling>Async</ExceptionHandling>
<PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalDependencies>Rpcrt4.lib;Secur32.lib</AdditionalDependencies>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
</Link>
<Midl>
<HeaderFileName>%(Filename).h</HeaderFileName>
</Midl>
<Midl>
<GenerateClientFiles>Stub</GenerateClientFiles>
</Midl>
<Midl>
<GenerateServerFiles>None</GenerateServerFiles>
<ClientStubFile>%(Filename).cpp</ClientStubFile>
</Midl>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeader>Use</PrecompiledHeader>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<ExceptionHandling>Async</ExceptionHandling>
<PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<GenerateDebugInformation>false</GenerateDebugInformation>
<AdditionalDependencies>Rpcrt4.lib;Secur32.lib</AdditionalDependencies>
<LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
</Link>
<Midl>
<HeaderFileName>%(Filename).h</HeaderFileName>
</Midl>
<Midl>
<GenerateClientFiles>Stub</GenerateClientFiles>
</Midl>
<Midl>
<GenerateServerFiles>None</GenerateServerFiles>
<ClientStubFile>%(Filename).cpp</ClientStubFile>
</Midl>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <Reference Include="System" />
</ItemGroup> </ItemGroup>
@ -220,7 +404,11 @@
<ClCompile Include="DrsConnection.cpp" /> <ClCompile Include="DrsConnection.cpp" />
<ClCompile Include="drsr.cpp"> <ClCompile Include="drsr.cpp">
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles> <ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles> <ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles> <ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Release|x64'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles> <ForcedIncludeFiles Condition="'$(Configuration)|$(Platform)'=='Release|x64'">stdafx.h;unmanaged.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
</ClCompile> </ClCompile>
@ -258,35 +446,32 @@
<ItemGroup> <ItemGroup>
<Midl Include="drsr.idl"> <Midl Include="drsr.idl">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
</Midl> </Midl>
<Midl Include="drsr_imports.idl"> <Midl Include="drsr_imports.idl">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</Midl> </Midl>
</ItemGroup> </ItemGroup>
<!-- Visual C++ Runtime Redistribution -->
<PropertyGroup Condition=" '$(PlatformToolsetVersion)' &lt; 141 ">
<!-- Definitions for Visual Studio 2013 and 2015 -->
<VCRuntimePath Condition=" '$(Platform)'=='x64' ">$(VCInstallDir)\redist\x64\Microsoft.VC$(PlatformToolsetVersion).CRT</VCRuntimePath>
<VCRuntimePath Condition=" '$(Platform)'=='Win32' ">$(VCInstallDir)\redist\x86\Microsoft.VC$(PlatformToolsetVersion).CRT</VCRuntimePath>
</PropertyGroup>
<PropertyGroup Condition=" '$(PlatformToolsetVersion)' &gt;= 141 ">
<!-- Definitions for Visual Studio 2017 -->
<VCRuntimePath Condition=" '$(Platform)'=='x64' ">$(VCInstallDir)\Tools\MSVC\$(VCToolsVersion)\bin\Hostx64\x64</VCRuntimePath>
<VCRuntimePath Condition=" '$(Platform)'=='Win32' ">$(VCInstallDir)\Tools\MSVC\$(VCToolsVersion)\bin\Hostx86\x86</VCRuntimePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)' == 'Release'"> <ItemDefinitionGroup Condition="'$(Configuration)' == 'Release'">
<CustomBuildStep> <CustomBuildStep>
<!-- Note: The msvcr140.dll file has been replaced by vcruntime140.dll since Visual Studio 2017. The vcruntime140_1.dll file is also required. <!--
Moreover, $(PlatformToolsetVersion) equals to 150 instead of 140 and thus does not match the names of the runtime files.--> Sample source path: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Redist\MSVC\14.34.31931\arm64\Microsoft.VC143.CRT\msvcp140.dll
Note: The msvcr140.dll file has been replaced by vcruntime140.dll since Visual Studio 2017. The vcruntime140_1.dll file is also required.
Moreover, $(PlatformToolsetVersion) equals to 150 instead of 140 and thus does not match the names of the runtime files.-->
<Command> <Command>
robocopy.exe "$(VCRuntimePath)" "$(OutDir)\." "msvcp*.dll" "msvcr*.dll" "vcruntime*.dll" /xf "msvcp*_*.dll" /FP /NP /NDL /NS /NJH /NJS robocopy.exe "$(CppRuntimeFilesPath.Replace(';',''))\Microsoft.VC$(PlatformToolsetVersion).CRT" "$(OutDir)\." "msvcp*.dll" "msvcr*.dll" "vcruntime*.dll" /xf "msvcp*_*.dll" /FP /NP /NDL /NS /NJH /NJS
IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0 IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0
</Command> </Command>
<Outputs>$(OutDir)\msvcr$(PlatformToolsetVersion).dll;$(OutDir)\msvcp$(PlatformToolsetVersion).dll;$(OutDir)\vcruntime$(PlatformToolsetVersion).dll;$(OutDir)\msvcp140.dll;$(OutDir)\vcruntime140.dll</Outputs> <Outputs>$(OutDir)\msvcp140.dll;$(OutDir)\vcruntime140.dll;$(OutDir)\vcruntime140_1.dll</Outputs>
<Message>Copying VC Runtime</Message> <Message>Copying VC Runtime</Message>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>

View File

@ -1,7 +1,7 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16 # Visual Studio Version 17
VisualStudioVersion = 16.0.28803.352 VisualStudioVersion = 17.5.33627.172
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DSInternals.PowerShell", "DSInternals.PowerShell\DSInternals.PowerShell.csproj", "{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DSInternals.PowerShell", "DSInternals.PowerShell\DSInternals.PowerShell.csproj", "{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}"
EndProject EndProject
@ -63,6 +63,8 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{9735D030-AEE6-415A-BF03-074076FF776A}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{9735D030-AEE6-415A-BF03-074076FF776A}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
..\Documentation\CHANGELOG.md = ..\Documentation\CHANGELOG.md ..\Documentation\CHANGELOG.md = ..\Documentation\CHANGELOG.md
..\.github\CONTRIBUTING.md = ..\.github\CONTRIBUTING.md
..\.github\README.md = ..\.github\README.md
EndProjectSection EndProjectSection
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Database.Isam", "Microsoft.Database.Isam\Microsoft.Database.Isam.csproj", "{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Database.Isam", "Microsoft.Database.Isam\Microsoft.Database.Isam.csproj", "{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}"
@ -121,106 +123,200 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PowerShell", "PowerShell",
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
Debug|x86 = Debug|x86 Debug|x86 = Debug|x86
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64 Release|x64 = Release|x64
Release|x86 = Release|x86 Release|x86 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|ARM.ActiveCfg = Debug|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|ARM.Build.0 = Debug|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|ARM64.Build.0 = Debug|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|x64.ActiveCfg = Debug|Any CPU {C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|x64.ActiveCfg = Debug|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|x64.Build.0 = Debug|Any CPU {C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|x64.Build.0 = Debug|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|x86.ActiveCfg = Debug|Any CPU {C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|x86.ActiveCfg = Debug|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|x86.Build.0 = Debug|Any CPU {C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Debug|x86.Build.0 = Debug|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Release|ARM.ActiveCfg = Release|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Release|ARM64.ActiveCfg = Release|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Release|x64.ActiveCfg = Release|Any CPU {C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Release|x64.ActiveCfg = Release|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Release|x86.ActiveCfg = Release|Any CPU {C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Release|x86.ActiveCfg = Release|Any CPU
{C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Release|x86.Build.0 = Release|Any CPU {C7EECC1F-1F9C-400B-A981-A8106E2A75F7}.Release|x86.Build.0 = Release|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|ARM.ActiveCfg = Debug|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|ARM.Build.0 = Debug|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|ARM64.Build.0 = Debug|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|x64.ActiveCfg = Debug|Any CPU {924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|x64.ActiveCfg = Debug|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|x64.Build.0 = Debug|Any CPU {924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|x64.Build.0 = Debug|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|x86.ActiveCfg = Debug|Any CPU {924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|x86.ActiveCfg = Debug|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|x86.Build.0 = Debug|Any CPU {924F67C0-8FFF-4714-891A-FC0799F46727}.Debug|x86.Build.0 = Debug|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Release|ARM.ActiveCfg = Release|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Release|ARM64.ActiveCfg = Release|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Release|x64.ActiveCfg = Release|Any CPU {924F67C0-8FFF-4714-891A-FC0799F46727}.Release|x64.ActiveCfg = Release|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Release|x86.ActiveCfg = Release|Any CPU {924F67C0-8FFF-4714-891A-FC0799F46727}.Release|x86.ActiveCfg = Release|Any CPU
{924F67C0-8FFF-4714-891A-FC0799F46727}.Release|x86.Build.0 = Release|Any CPU {924F67C0-8FFF-4714-891A-FC0799F46727}.Release|x86.Build.0 = Release|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|ARM.Build.0 = Debug|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|ARM64.Build.0 = Debug|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|x64.ActiveCfg = Debug|Any CPU {7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|x64.ActiveCfg = Debug|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|x64.Build.0 = Debug|Any CPU {7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|x64.Build.0 = Debug|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|x86.ActiveCfg = Debug|Any CPU {7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|x86.ActiveCfg = Debug|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|x86.Build.0 = Debug|Any CPU {7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Debug|x86.Build.0 = Debug|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|ARM.ActiveCfg = Release|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|ARM.Build.0 = Release|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|ARM64.ActiveCfg = Release|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|ARM64.Build.0 = Release|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|x64.ActiveCfg = Release|Any CPU {7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|x64.ActiveCfg = Release|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|x64.Build.0 = Release|Any CPU {7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|x64.Build.0 = Release|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|x86.ActiveCfg = Release|Any CPU {7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|x86.ActiveCfg = Release|Any CPU
{7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|x86.Build.0 = Release|Any CPU {7D47F040-D3A9-43CA-9F69-EF91FAF2C23A}.Release|x86.Build.0 = Release|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|ARM.ActiveCfg = Debug|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|ARM.Build.0 = Debug|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|ARM64.Build.0 = Debug|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|x64.ActiveCfg = Debug|Any CPU {8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|x64.ActiveCfg = Debug|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|x64.Build.0 = Debug|Any CPU {8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|x64.Build.0 = Debug|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|x86.ActiveCfg = Debug|Any CPU {8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|x86.ActiveCfg = Debug|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|x86.Build.0 = Debug|Any CPU {8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Debug|x86.Build.0 = Debug|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Release|ARM.ActiveCfg = Release|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Release|ARM64.ActiveCfg = Release|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Release|x64.ActiveCfg = Release|Any CPU {8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Release|x64.ActiveCfg = Release|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Release|x86.ActiveCfg = Release|Any CPU {8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Release|x86.ActiveCfg = Release|Any CPU
{8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Release|x86.Build.0 = Release|Any CPU {8A857B97-1BE0-4BAE-A4E8-DEE870858BFD}.Release|x86.Build.0 = Release|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|ARM.ActiveCfg = Debug|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|ARM.Build.0 = Debug|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|ARM64.Build.0 = Debug|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|x64.ActiveCfg = Debug|Any CPU {744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|x64.ActiveCfg = Debug|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|x64.Build.0 = Debug|Any CPU {744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|x64.Build.0 = Debug|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|x86.ActiveCfg = Debug|Any CPU {744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|x86.ActiveCfg = Debug|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|x86.Build.0 = Debug|Any CPU {744163E3-AEDA-407C-A917-7C406977B4B8}.Debug|x86.Build.0 = Debug|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Release|ARM.ActiveCfg = Release|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Release|ARM64.ActiveCfg = Release|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Release|x64.ActiveCfg = Release|Any CPU {744163E3-AEDA-407C-A917-7C406977B4B8}.Release|x64.ActiveCfg = Release|Any CPU
{744163E3-AEDA-407C-A917-7C406977B4B8}.Release|x86.ActiveCfg = Release|Any CPU {744163E3-AEDA-407C-A917-7C406977B4B8}.Release|x86.ActiveCfg = Release|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|ARM.ActiveCfg = Debug|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|ARM.Build.0 = Debug|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|ARM64.Build.0 = Debug|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|x64.ActiveCfg = Debug|Any CPU {91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|x64.ActiveCfg = Debug|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|x64.Build.0 = Debug|Any CPU {91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|x64.Build.0 = Debug|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|x86.ActiveCfg = Debug|Any CPU {91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|x86.ActiveCfg = Debug|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|x86.Build.0 = Debug|Any CPU {91377A6C-52EE-4267-9D6A-1475E2183648}.Debug|x86.Build.0 = Debug|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Release|ARM.ActiveCfg = Release|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Release|ARM64.ActiveCfg = Release|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Release|x64.ActiveCfg = Release|Any CPU {91377A6C-52EE-4267-9D6A-1475E2183648}.Release|x64.ActiveCfg = Release|Any CPU
{91377A6C-52EE-4267-9D6A-1475E2183648}.Release|x86.ActiveCfg = Release|Any CPU {91377A6C-52EE-4267-9D6A-1475E2183648}.Release|x86.ActiveCfg = Release|Any CPU
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|ARM.ActiveCfg = Debug|ARM
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|ARM.Build.0 = Debug|ARM
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|ARM64.Build.0 = Debug|ARM64
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|x64.ActiveCfg = Debug|x64 {A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|x64.ActiveCfg = Debug|x64
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|x64.Build.0 = Debug|x64 {A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|x64.Build.0 = Debug|x64
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|x86.ActiveCfg = Debug|Win32 {A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|x86.ActiveCfg = Debug|Win32
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|x86.Build.0 = Debug|Win32 {A70A6658-DD67-4C73-AB9A-581465137C6B}.Debug|x86.Build.0 = Debug|Win32
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|ARM.ActiveCfg = Release|ARM
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|ARM.Build.0 = Release|ARM
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|ARM64.ActiveCfg = Release|ARM64
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|ARM64.Build.0 = Release|ARM64
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|x64.ActiveCfg = Release|x64 {A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|x64.ActiveCfg = Release|x64
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|x64.Build.0 = Release|x64 {A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|x64.Build.0 = Release|x64
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|x86.ActiveCfg = Release|Win32 {A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|x86.ActiveCfg = Release|Win32
{A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|x86.Build.0 = Release|Win32 {A70A6658-DD67-4C73-AB9A-581465137C6B}.Release|x86.Build.0 = Release|Win32
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|ARM.Build.0 = Debug|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|ARM64.Build.0 = Debug|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|x64.ActiveCfg = Debug|Any CPU {0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|x64.ActiveCfg = Debug|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|x64.Build.0 = Debug|Any CPU {0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|x64.Build.0 = Debug|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|x86.ActiveCfg = Debug|Any CPU {0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|x86.ActiveCfg = Debug|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|x86.Build.0 = Debug|Any CPU {0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Debug|x86.Build.0 = Debug|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|ARM.ActiveCfg = Release|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|ARM.Build.0 = Release|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|ARM64.ActiveCfg = Release|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|ARM64.Build.0 = Release|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|x64.ActiveCfg = Release|Any CPU {0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|x64.ActiveCfg = Release|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|x64.Build.0 = Release|Any CPU {0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|x64.Build.0 = Release|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|x86.ActiveCfg = Release|Any CPU {0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|x86.ActiveCfg = Release|Any CPU
{0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|x86.Build.0 = Release|Any CPU {0BCA513C-5F12-48B6-8288-D3A95EC2994A}.Release|x86.Build.0 = Release|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|ARM.ActiveCfg = Debug|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|ARM.Build.0 = Debug|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|ARM64.Build.0 = Debug|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|x64.ActiveCfg = Debug|Any CPU {2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|x64.ActiveCfg = Debug|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|x64.Build.0 = Debug|Any CPU {2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|x64.Build.0 = Debug|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|x86.ActiveCfg = Debug|Any CPU {2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|x86.ActiveCfg = Debug|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|x86.Build.0 = Debug|Any CPU {2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Debug|x86.Build.0 = Debug|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Release|ARM.ActiveCfg = Release|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Release|ARM64.ActiveCfg = Release|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Release|x64.ActiveCfg = Release|Any CPU {2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Release|x64.ActiveCfg = Release|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Release|x86.ActiveCfg = Release|Any CPU {2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Release|x86.ActiveCfg = Release|Any CPU
{2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Release|x86.Build.0 = Release|Any CPU {2EE0D48F-65BA-4D4F-A8E1-FC01349BA786}.Release|x86.Build.0 = Release|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|ARM.ActiveCfg = Debug|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|ARM.Build.0 = Debug|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|ARM64.Build.0 = Debug|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|x64.ActiveCfg = Debug|Any CPU {11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|x64.ActiveCfg = Debug|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|x64.Build.0 = Debug|Any CPU {11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|x64.Build.0 = Debug|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|x86.ActiveCfg = Debug|Any CPU {11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|x86.ActiveCfg = Debug|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|x86.Build.0 = Debug|Any CPU {11DB6E06-E5E4-4612-9062-0B8E68099880}.Debug|x86.Build.0 = Debug|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Release|ARM.ActiveCfg = Release|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Release|ARM64.ActiveCfg = Release|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Release|x64.ActiveCfg = Release|Any CPU {11DB6E06-E5E4-4612-9062-0B8E68099880}.Release|x64.ActiveCfg = Release|Any CPU
{11DB6E06-E5E4-4612-9062-0B8E68099880}.Release|x86.ActiveCfg = Release|Any CPU {11DB6E06-E5E4-4612-9062-0B8E68099880}.Release|x86.ActiveCfg = Release|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|ARM.ActiveCfg = Debug|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|ARM.Build.0 = Debug|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|ARM64.Build.0 = Debug|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x64.ActiveCfg = Debug|Any CPU {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x64.ActiveCfg = Debug|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x64.Build.0 = Debug|Any CPU {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x64.Build.0 = Debug|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x86.ActiveCfg = Debug|Any CPU {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x86.ActiveCfg = Debug|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x86.Build.0 = Debug|Any CPU {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Debug|x86.Build.0 = Debug|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|ARM.ActiveCfg = Release|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|ARM64.ActiveCfg = Release|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x64.ActiveCfg = Release|Any CPU {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x64.ActiveCfg = Release|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x86.ActiveCfg = Release|Any CPU {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x86.ActiveCfg = Release|Any CPU
{21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x86.Build.0 = Release|Any CPU {21CC632C-B09A-4DB7-BD6E-7F7D2716F58F}.Release|x86.Build.0 = Release|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|ARM.Build.0 = Debug|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|ARM64.Build.0 = Debug|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x64.ActiveCfg = Debug|Any CPU {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x64.ActiveCfg = Debug|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x64.Build.0 = Debug|Any CPU {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x64.Build.0 = Debug|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x86.ActiveCfg = Debug|Any CPU {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x86.ActiveCfg = Debug|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x86.Build.0 = Debug|Any CPU {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Debug|x86.Build.0 = Debug|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|ARM.ActiveCfg = Release|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|ARM64.ActiveCfg = Release|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x64.ActiveCfg = Release|Any CPU {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x64.ActiveCfg = Release|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x86.ActiveCfg = Release|Any CPU {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x86.ActiveCfg = Release|Any CPU
{E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x86.Build.0 = Release|Any CPU {E929E163-52A0-4AAC-917B-6D7FAF70C45E}.Release|x86.Build.0 = Release|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|ARM.ActiveCfg = Debug|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|ARM.Build.0 = Debug|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|ARM64.Build.0 = Debug|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|x64.ActiveCfg = Debug|Any CPU {B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|x64.ActiveCfg = Debug|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|x64.Build.0 = Debug|Any CPU {B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|x64.Build.0 = Debug|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|x86.ActiveCfg = Debug|Any CPU {B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|x86.ActiveCfg = Debug|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|x86.Build.0 = Debug|Any CPU {B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Debug|x86.Build.0 = Debug|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Release|ARM.ActiveCfg = Release|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Release|ARM64.ActiveCfg = Release|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Release|x64.ActiveCfg = Release|Any CPU {B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Release|x64.ActiveCfg = Release|Any CPU
{B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Release|x86.ActiveCfg = Release|Any CPU {B7E02A94-DA21-4302-82A6-2D4B7F279F21}.Release|x86.ActiveCfg = Release|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|ARM.ActiveCfg = Debug|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|ARM.Build.0 = Debug|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|ARM64.Build.0 = Debug|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|x64.ActiveCfg = Debug|Any CPU {7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|x64.ActiveCfg = Debug|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|x64.Build.0 = Debug|Any CPU {7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|x64.Build.0 = Debug|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|x86.ActiveCfg = Debug|Any CPU {7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|x86.ActiveCfg = Debug|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|x86.Build.0 = Debug|Any CPU {7420D8C2-14BE-40F2-B724-A88D27BC6743}.Debug|x86.Build.0 = Debug|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Release|ARM.ActiveCfg = Release|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Release|ARM64.ActiveCfg = Release|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Release|x64.ActiveCfg = Release|Any CPU {7420D8C2-14BE-40F2-B724-A88D27BC6743}.Release|x64.ActiveCfg = Release|Any CPU
{7420D8C2-14BE-40F2-B724-A88D27BC6743}.Release|x86.ActiveCfg = Release|Any CPU {7420D8C2-14BE-40F2-B724-A88D27BC6743}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection EndGlobalSection