diff --git a/GenerateAllSolution.ps1 b/GenerateAllSolution.ps1
index 90f7126c..bbb6388b 100644
--- a/GenerateAllSolution.ps1
+++ b/GenerateAllSolution.ps1
@@ -148,7 +148,7 @@ foreach ($componentName in $Components) {
[void]$projects.Add(".\components\$($componentPath.BaseName)\src\*.csproj")
[void]$projects.Add(".\components\$($componentPath.BaseName)\samples\*.Samples.csproj")
- [void]$projects.Add(".\components\$($componentPath.BaseName)\tests\*.Tests\*.shproj")
+ [void]$projects.Add(".\components\$($componentPath.BaseName)\tests\*.shproj")
} else {
Write-Warning "Component $($componentPath.BaseName) doesn't MultiTarget any of $MultiTargets and won't be added to the solution.";
}
diff --git a/MultiTarget/EnabledMultiTargets.props b/MultiTarget/EnabledMultiTargets.props
index ea21f057..f03e52d4 100644
--- a/MultiTarget/EnabledMultiTargets.props
+++ b/MultiTarget/EnabledMultiTargets.props
@@ -2,6 +2,6 @@
- wasm;uwp;netstandard;
+ wasm;wasdk;
diff --git a/MultiTarget/GenerateAllProjectReferences.ps1 b/MultiTarget/GenerateAllProjectReferences.ps1
index 8ccf4732..62ca3b02 100644
--- a/MultiTarget/GenerateAllProjectReferences.ps1
+++ b/MultiTarget/GenerateAllProjectReferences.ps1
@@ -35,23 +35,29 @@ foreach ($componentName in $Components) {
continue;
}
- # Find all components source csproj (when wildcard), or find specific component csproj by name.
+ # Find all components source/sample/test projects (when wildcard), or find specific component projects by component name.
foreach ($componentPath in Get-Item "$PSScriptRoot/../../components/$componentName/") {
$componentName = $componentPath.BaseName;
Write-Output "Generating project references for component $componentName at $componentPath";
- # Find source and sample csproj files
+ # Find source, sample and test project files
$componentSourceCsproj = Get-ChildItem $componentPath/src/*.csproj -ErrorAction SilentlyContinue;
$componentSampleCsproj = Get-ChildItem $componentPath/samples/*.csproj -ErrorAction SilentlyContinue;
+ $componentTestProj = Get-ChildItem $componentPath/tests/*.projitems -ErrorAction SilentlyContinue;
# Generate s for sample project
# Use source project MultiTarget as first fallback.
if ($null -ne $componentSampleCsproj -and (Test-Path $componentSampleCsproj)) {
- & $PSScriptRoot\GenerateMultiTargetAwareProjectReferenceProps.ps1 -projectPath $componentSampleCsproj -outputPath "$projectPropsOutputDir/$($componentSampleCsproj.BaseName).props" -MultiTargets $MultiTargets
+ & $PSScriptRoot\GenerateMultiTargetAwareProjectReferenceProps.ps1 -projectPath $componentSampleCsproj -outputPath "$projectPropsOutputDir/$($componentName).Samples.props" -MultiTargets $MultiTargets
}
- # Generate s for src project
- & $PSScriptRoot\GenerateMultiTargetAwareProjectReferenceProps.ps1 -projectPath $componentSourceCsproj -outputPath "$projectPropsOutputDir/$($componentSourceCsproj.BaseName).props" -MultiTargets $MultiTargets
+ if ($null -ne $componentTestProj -and (Test-Path $componentTestProj)) {
+ # Generate references for test project
+ & $PSScriptRoot\GenerateMultiTargetAwareProjectReferenceProps.ps1 -projectPath $componentTestProj -outputPath "$projectPropsOutputDir/$($componentName).Tests.props" -MultiTargets $MultiTargets
+ }
+
+ # Generate references for src project
+ & $PSScriptRoot\GenerateMultiTargetAwareProjectReferenceProps.ps1 -projectPath $componentSourceCsproj -outputPath "$projectPropsOutputDir/$($componentName).Source.props" -MultiTargets $MultiTargets
}
}
diff --git a/MultiTarget/GenerateMultiTargetAwareProjectReferenceProps.ps1 b/MultiTarget/GenerateMultiTargetAwareProjectReferenceProps.ps1
index 6890d89e..dbbd6728 100644
--- a/MultiTarget/GenerateMultiTargetAwareProjectReferenceProps.ps1
+++ b/MultiTarget/GenerateMultiTargetAwareProjectReferenceProps.ps1
@@ -1,12 +1,12 @@
Param (
- [Parameter(HelpMessage = "The full path of the csproj to generated references to.", Mandatory = $true)]
+ [Parameter(HelpMessage = "The full path of the csproj or projitems to generate a reference to.", Mandatory = $true)]
[string]$projectPath,
- [Parameter(HelpMessage = "A path to a .props file where generated content should be saved to.", Mandatory = $true)]
+ [Parameter(HelpMessage = "A path to where the generated .props file containing the reference should be saved to.", Mandatory = $true)]
[string]$outputPath,
[Parameter(HelpMessage = "The path to the template used to generate the props file.")]
- [string]$templatePath = "$PSScriptRoot/MultiTargetAwareProjectReference.props.template",
+ [string]$templatePath,
[Parameter(HelpMessage = "The placeholder text to replace when inserting the project file name into the template.")]
[string]$projectFileNamePlaceholder = "[ProjectFileName]",
@@ -20,6 +20,16 @@ Param (
[string[]] $MultiTargets = @("uwp", "wasdk", "wpf", "wasm", "linuxgtk", "macos", "ios", "android", "netstandard")
)
+if ($projectPath.EndsWith(".projitems")) {
+ $templatePath = "$PSScriptRoot/MultiTargetAwareSharedProjectImport.props.template"
+} elseif ($projectPath.EndsWith(".csproj")) {
+ $templatePath = "$PSScriptRoot/MultiTargetAwareProjectReference.props.template";
+
+} else {
+ Write-Error "The specified project path is not a valid csproj or projitems file: $projectPath";
+ exit(-1);
+}
+
$templateContents = Get-Content -Path $templatePath;
$preWorkingDir = $pwd;
@@ -29,9 +39,9 @@ $relativeProjectPath = Resolve-Path -Relative -Path $projectPath
Set-Location $preWorkingDir;
-# Insert csproj file name.
-$csprojFileName = [System.IO.Path]::GetFileName($projectPath);
-$templateContents = $templateContents -replace [regex]::escape($projectFileNamePlaceholder), $csprojFileName;
+# Insert project file name.
+$projectFileName = [System.IO.Path]::GetFileName($projectPath);
+$templateContents = $templateContents -replace [regex]::escape($projectFileNamePlaceholder), $projectFileName;
# Insert component directory
$componentDirectoryRelativeToRoot = [System.IO.Path]::GetDirectoryName($relativeProjectPath).TrimStart('.').TrimStart('\');
@@ -67,7 +77,7 @@ function ShouldMultiTargetMsBuildValue([string] $target) {
$targeted = @("uwp", "wasdk", "wpf", "wasm", "linuxgtk", "macos", "ios", "android", "netstandard").Where({ ShouldMultiTarget $_ })
if ($targeted.Count -gt 0) {
- Write-Host "Generating project references for $([System.IO.Path]::GetFileNameWithoutExtension($csprojFileName)): $($targeted -Join ', ')"
+ Write-Host "Generating project references for $([System.IO.Path]::GetFileNameWithoutExtension($projectFileName)): $($targeted -Join ', ')"
}
$templateContents = $templateContents -replace [regex]::escape("[CanTargetWasm]"), "'$(ShouldMultiTargetMsBuildValue "wasm")'";
diff --git a/MultiTarget/MultiTargetAwareSharedProjectImport.props.template b/MultiTarget/MultiTargetAwareSharedProjectImport.props.template
new file mode 100644
index 00000000..06c9c8e0
--- /dev/null
+++ b/MultiTarget/MultiTargetAwareSharedProjectImport.props.template
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/ProjectHeads/AllComponents/Tests.Head.AllComponents.props b/ProjectHeads/AllComponents/Tests.Head.AllComponents.props
index 8cce938b..3d37ab22 100644
--- a/ProjectHeads/AllComponents/Tests.Head.AllComponents.props
+++ b/ProjectHeads/AllComponents/Tests.Head.AllComponents.props
@@ -2,9 +2,6 @@
-
-
-
diff --git a/ProjectHeads/AllComponents/Uwp/CommunityToolkit.App.Uwp.csproj b/ProjectHeads/AllComponents/Uwp/CommunityToolkit.App.Uwp.csproj
index ef273d6b..2a366ca4 100644
--- a/ProjectHeads/AllComponents/Uwp/CommunityToolkit.App.Uwp.csproj
+++ b/ProjectHeads/AllComponents/Uwp/CommunityToolkit.App.Uwp.csproj
@@ -15,7 +15,8 @@
-
+
+
CommunityToolkit.App.Uwp
diff --git a/ProjectHeads/AllComponents/Wasdk/CommunityToolkit.App.Wasdk.csproj b/ProjectHeads/AllComponents/Wasdk/CommunityToolkit.App.Wasdk.csproj
index ed800138..35317eea 100644
--- a/ProjectHeads/AllComponents/Wasdk/CommunityToolkit.App.Wasdk.csproj
+++ b/ProjectHeads/AllComponents/Wasdk/CommunityToolkit.App.Wasdk.csproj
@@ -14,7 +14,8 @@
-
+
+
diff --git a/ProjectHeads/AllComponents/Wasm/CommunityToolkit.App.Wasm.csproj b/ProjectHeads/AllComponents/Wasm/CommunityToolkit.App.Wasm.csproj
index f1bc44a9..ad0e0d70 100644
--- a/ProjectHeads/AllComponents/Wasm/CommunityToolkit.App.Wasm.csproj
+++ b/ProjectHeads/AllComponents/Wasm/CommunityToolkit.App.Wasm.csproj
@@ -17,7 +17,8 @@
-
+
+