2025-05-02 20:38:11 -07:00
|
|
|
[CmdletBinding()]
|
|
|
|
|
Param(
|
|
|
|
|
[Parameter(Mandatory = $True, Position = 1)]
|
|
|
|
|
[string]$sourceDir
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# scan all csharp project in the source directory
|
|
|
|
|
function Get-CSharpProjects {
|
|
|
|
|
param (
|
|
|
|
|
[string]$path
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Get all .csproj files under the specified path
|
|
|
|
|
return Get-ChildItem -Path $path -Recurse -Filter *.csproj | Select-Object -ExpandProperty FullName
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Check if the project file imports 'Common.Dotnet.CsWinRT.props'
|
|
|
|
|
function Test-ImportSharedCsWinRTProps {
|
|
|
|
|
param (
|
|
|
|
|
[string]$filePath
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Load the XML content of the .csproj file
|
|
|
|
|
[xml]$csprojContent = Get-Content -Path $filePath
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Check if the Import element with Project attribute containing 'Common.Dotnet.CsWinRT.props' exists
|
|
|
|
|
return $csprojContent.Project.Import | Where-Object { $null -ne $_.Project -and $_.Project.EndsWith('Common.Dotnet.CsWinRT.props') }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Call the function with the provided source directory
|
|
|
|
|
$csprojFilesArray = Get-CSharpProjects -path $sourceDir
|
|
|
|
|
|
|
|
|
|
$hasInvalidCsProj = $false
|
|
|
|
|
|
|
|
|
|
# Enumerate the array of file paths and call Validate-ImportSharedCsWinRTProps for each file
|
|
|
|
|
foreach ($csprojFile in $csprojFilesArray) {
|
|
|
|
|
# Skip if the file ends with 'TemplateCmdPalExtension.csproj'
|
|
|
|
|
if ($csprojFile -like '*TemplateCmdPalExtension.csproj') {
|
|
|
|
|
continue
|
|
|
|
|
}
|
2025-09-26 08:05:37 -05:00
|
|
|
|
|
|
|
|
# The CmdPal.Core projects use a common shared props file, so skip them
|
|
|
|
|
if ($csprojFile -like '*Microsoft.CmdPal.Core.*.csproj') {
|
|
|
|
|
continue
|
|
|
|
|
}
|
2025-10-02 06:36:59 -05:00
|
|
|
if ($csprojFile -like '*Microsoft.CmdPal.Ext.Shell.csproj') {
|
|
|
|
|
continue
|
|
|
|
|
}
|
2025-05-02 20:38:11 -07:00
|
|
|
|
|
|
|
|
$importExists = Test-ImportSharedCsWinRTProps -filePath $csprojFile
|
|
|
|
|
if (!$importExists) {
|
|
|
|
|
Write-Output "$csprojFile need to import 'Common.Dotnet.CsWinRT.props'."
|
|
|
|
|
$hasInvalidCsProj = $true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($hasInvalidCsProj) {
|
|
|
|
|
exit 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
exit 0
|