1- using namespace NuGet.Versioning
1+ # # Copyright (c) Microsoft Corporation. All rights reserved.
2+ # # Licensed under the MIT License.
23
34[CmdletBinding ()]
45param (
3334
3435function GetAllPSResources {
3536 $resources = Get-PSResource
36-
37-
3837}
3938
4039function GetOperation {
@@ -73,6 +72,8 @@ function GetOperation {
7372 $resourcesExist = @ ()
7473 $resourcesMissing = @ ()
7574
75+ Add-Type - AssemblyName " $PSScriptRoot /dependencies/NuGet.Versioning.dll"
76+
7677 foreach ($resource in $allPSResources ) {
7778 foreach ($inputResource in $inputObj.resources ) {
7879 if ($resource.Name -eq $inputResource.Name ) {
@@ -81,23 +82,24 @@ function GetOperation {
8182 try {
8283 $versionRange = [NuGet.Versioning.VersionRange ]::Parse($inputResource.Version )
8384 $resourceVersion = [NuGet.Versioning.NuGetVersion ]::Parse($resource.Version.ToString ())
84- if (-not $versionRange.Satisfies ($resourceVersion )) {
85- continue
85+ if ($versionRange.Satisfies ($resourceVersion )) {
86+ $resourcesExist += $resource
8687 }
8788 else {
88- $resourcesExist += $resource
89- continue
89+ $resourcesMissing += $inputResource
9090 }
91- } catch {
91+ }
92+ catch {
9293 # Fallback: simple string comparison (not full NuGet range support)
93- if ($resource.Version.ToString () -ne $inputObj.resources.Version ) {
94- continue
94+ if ($resource.Version.ToString () -eq $inputResource.Version ) {
95+ $resourcesExist += $resource
96+ }
97+ else {
98+ $resourcesMissing += $inputResource
9599 }
96100 }
97101 }
98102 }
99-
100- $resourcesMissing += $resource
101103 }
102104 }
103105
0 commit comments