File tree Expand file tree Collapse file tree 2 files changed +47
-1
lines changed Expand file tree Collapse file tree 2 files changed +47
-1
lines changed Original file line number Diff line number Diff line change @@ -737,7 +737,53 @@ public string GetWindowsSdkVersion()
737
737
if ( package == null )
738
738
return string . Empty ;
739
739
740
- return package . Id . Substring ( "Microsoft.VisualStudio.Component.Windows10SDK." . Length ) ;
740
+ // SDK
741
+ if ( package . Id . Length > "Microsoft.VisualStudio.Component.Windows10SDK." . Length )
742
+ {
743
+ return package . Id . Substring ( "Microsoft.VisualStudio.Component.Windows10SDK." . Length ) ;
744
+ }
745
+ else
746
+ {
747
+ List < string > versions = new List < string > ( ) ;
748
+
749
+ var found = this . Packages . FindAll ( p =>
750
+ {
751
+ return p . Id . StartsWith ( "Microsoft.VisualStudio.Component.Windows10SDK" , StringComparison . OrdinalIgnoreCase ) ||
752
+ p . Id . StartsWith ( "Microsoft.VisualStudio.Component.Windows11SDK" , StringComparison . OrdinalIgnoreCase ) ;
753
+ } ) ;
754
+
755
+ // Workaround MSVC bug returning idential version numbers for all packages.
756
+ foreach ( var sdk in found )
757
+ {
758
+ string [ ] tokens = sdk . Id . Split ( "." , StringSplitOptions . RemoveEmptyEntries | StringSplitOptions . TrimEntries ) ;
759
+
760
+ foreach ( string name in tokens )
761
+ {
762
+ if ( uint . TryParse ( name , out uint version ) )
763
+ {
764
+ versions . Add ( name ) ;
765
+ break ;
766
+ }
767
+ }
768
+ }
769
+
770
+ versions . Sort ( ( p1 , p2 ) =>
771
+ {
772
+ if ( Version . TryParse ( p1 , out Version v1 ) && Version . TryParse ( p2 , out Version v2 ) )
773
+ return v1 . CompareTo ( v2 ) ;
774
+ else
775
+ return 1 ;
776
+ } ) ;
777
+
778
+ if ( versions . Count > 0 )
779
+ {
780
+ return versions [ ^ 1 ] ;
781
+ }
782
+ else
783
+ {
784
+ return package . UniqueId ;
785
+ }
786
+ }
741
787
}
742
788
743
789
public string GetWindowsSdkFullVersion ( )
You can’t perform that action at this time.
0 commit comments