@@ -192,65 +192,78 @@ export class VisualStudioExporter extends Exporter {
192192 async exportSolution ( project : Project , from : string , to : string , platform : string , vrApi : any , options : any ) {
193193 this . clion . exportSolution ( project , from , to , platform , vrApi , options ) ;
194194
195- this . writeFile ( path . resolve ( to , project . getSafeName ( ) + '.sln' ) ) ;
196-
197- if ( Options . visualStudioVersion === VisualStudioVersion . VS2022 ) {
198- this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
199- this . p ( '# Visual Studio Version 17' ) ;
200- this . p ( 'VisualStudioVersion = 17.0.31903.59' ) ;
201- this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
202- }
203- else if ( Options . visualStudioVersion === VisualStudioVersion . VS2019 ) {
204- this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
205- this . p ( '# Visual Studio Version 16' ) ;
206- this . p ( 'VisualStudioVersion = 16.0.28729.10' ) ;
207- this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
208- }
209- else if ( Options . visualStudioVersion === VisualStudioVersion . VS2017 ) {
210- this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
211- this . p ( '# Visual Studio 15' ) ;
212- this . p ( 'VisualStudioVersion = 15.0.26228.4' ) ;
213- this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
214- }
215- else if ( Options . visualStudioVersion === VisualStudioVersion . VS2015 ) {
216- this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
217- this . p ( '# Visual Studio 14' ) ;
218- this . p ( 'VisualStudioVersion = 14.0.25420.1' ) ;
219- this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
220- }
221- else if ( Options . visualStudioVersion === VisualStudioVersion . VS2013 ) {
222- this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
223- this . p ( '# Visual Studio 2013' ) ;
224- this . p ( 'VisualStudioVersion = 12.0.21005.1' ) ;
225- this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
226- }
227- else if ( Options . visualStudioVersion === VisualStudioVersion . VS2012 ) {
228- this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
229- this . p ( '# Visual Studio 2012' ) ;
195+ if ( Options . visualStudioVersion === VisualStudioVersion . VS2026 ) {
196+ this . writeFile ( path . resolve ( to , project . getSafeName ( ) + '.slnx' ) ) ;
197+ this . p ( '<Solution>' ) ;
198+ this . p ( '<Configurations>' , 1 ) ;
199+ this . p ( '<Platform Name="x64" />' , 2 ) ;
200+ this . p ( '<Platform Name="x86" />' , 2 ) ;
201+ this . p ( '</Configurations>' , 1 ) ;
202+ this . p ( '<Project Path="Project1.vcxproj" Id="' + project . getUuid ( ) . toString ( ) . toLowerCase ( ) + '" />' , 1 ) ;
203+ this . p ( '</Solution>' ) ;
204+ this . closeFile ( ) ;
230205 }
231206 else {
232- this . p ( 'Microsoft Visual Studio Solution File, Format Version 11.00' ) ;
233- this . p ( '# Visual Studio 2010' ) ;
234- }
235- const solutionUuid = crypto . randomUUID ( ) ;
236- this . writeProjectDeclarations ( project , solutionUuid ) ;
237- this . p ( 'Global' ) ;
238- this . p ( 'GlobalSection(SolutionConfigurationPlatforms) = preSolution' , 1 ) ;
239- for ( let config of this . getConfigs ( platform ) ) {
240- for ( let system of this . getSystems ( platform ) ) {
241- this . p ( config + '|' + this . renameSystem ( system ) + ' = ' + config + '|' + this . renameSystem ( system ) , 2 ) ;
207+ this . writeFile ( path . resolve ( to , project . getSafeName ( ) + '.sln' ) ) ;
208+
209+ if ( Options . visualStudioVersion === VisualStudioVersion . VS2022 ) {
210+ this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
211+ this . p ( '# Visual Studio Version 17' ) ;
212+ this . p ( 'VisualStudioVersion = 17.0.31903.59' ) ;
213+ this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
242214 }
215+ else if ( Options . visualStudioVersion === VisualStudioVersion . VS2019 ) {
216+ this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
217+ this . p ( '# Visual Studio Version 16' ) ;
218+ this . p ( 'VisualStudioVersion = 16.0.28729.10' ) ;
219+ this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
220+ }
221+ else if ( Options . visualStudioVersion === VisualStudioVersion . VS2017 ) {
222+ this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
223+ this . p ( '# Visual Studio 15' ) ;
224+ this . p ( 'VisualStudioVersion = 15.0.26228.4' ) ;
225+ this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
226+ }
227+ else if ( Options . visualStudioVersion === VisualStudioVersion . VS2015 ) {
228+ this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
229+ this . p ( '# Visual Studio 14' ) ;
230+ this . p ( 'VisualStudioVersion = 14.0.25420.1' ) ;
231+ this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
232+ }
233+ else if ( Options . visualStudioVersion === VisualStudioVersion . VS2013 ) {
234+ this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
235+ this . p ( '# Visual Studio 2013' ) ;
236+ this . p ( 'VisualStudioVersion = 12.0.21005.1' ) ;
237+ this . p ( 'MinimumVisualStudioVersion = 10.0.40219.1' ) ;
238+ }
239+ else if ( Options . visualStudioVersion === VisualStudioVersion . VS2012 ) {
240+ this . p ( 'Microsoft Visual Studio Solution File, Format Version 12.00' ) ;
241+ this . p ( '# Visual Studio 2012' ) ;
242+ }
243+ else {
244+ this . p ( 'Microsoft Visual Studio Solution File, Format Version 11.00' ) ;
245+ this . p ( '# Visual Studio 2010' ) ;
246+ }
247+ const solutionUuid = crypto . randomUUID ( ) ;
248+ this . writeProjectDeclarations ( project , solutionUuid ) ;
249+ this . p ( 'Global' ) ;
250+ this . p ( 'GlobalSection(SolutionConfigurationPlatforms) = preSolution' , 1 ) ;
251+ for ( let config of this . getConfigs ( platform ) ) {
252+ for ( let system of this . getSystems ( platform ) ) {
253+ this . p ( config + '|' + this . renameSystem ( system ) + ' = ' + config + '|' + this . renameSystem ( system ) , 2 ) ;
254+ }
255+ }
256+ this . p ( 'EndGlobalSection' , 1 ) ;
257+ this . p ( 'GlobalSection(ProjectConfigurationPlatforms) = postSolution' , 1 ) ;
258+ this . writeProjectBuilds ( project , platform ) ;
259+ this . p ( 'EndGlobalSection' , 1 ) ;
260+ this . p ( 'GlobalSection(SolutionProperties) = preSolution' , 1 ) ;
261+ this . p ( 'HideSolutionNode = FALSE' , 2 ) ;
262+ this . p ( 'EndGlobalSection' , 1 ) ;
263+ this . postSolution ( ) ;
264+ this . p ( 'EndGlobal' ) ;
265+ this . closeFile ( ) ;
243266 }
244- this . p ( 'EndGlobalSection' , 1 ) ;
245- this . p ( 'GlobalSection(ProjectConfigurationPlatforms) = postSolution' , 1 ) ;
246- this . writeProjectBuilds ( project , platform ) ;
247- this . p ( 'EndGlobalSection' , 1 ) ;
248- this . p ( 'GlobalSection(SolutionProperties) = preSolution' , 1 ) ;
249- this . p ( 'HideSolutionNode = FALSE' , 2 ) ;
250- this . p ( 'EndGlobalSection' , 1 ) ;
251- this . postSolution ( ) ;
252- this . p ( 'EndGlobal' ) ;
253- this . closeFile ( ) ;
254267
255268 await this . exportProject ( from , to , project , platform , project . isCmd ( ) , options . noshaders , options ) ;
256269 this . exportFilters ( from , to , project , platform ) ;
@@ -502,6 +515,8 @@ export class VisualStudioExporter extends Exporter {
502515 return 'v142' ;
503516 case VisualStudioVersion . VS2022 :
504517 return 'v143' ;
518+ case VisualStudioVersion . VS2026 :
519+ return 'v145' ;
505520 default :
506521 throw 'Unknown Visual Studio version' ;
507522 }
@@ -779,14 +794,26 @@ export class VisualStudioExporter extends Exporter {
779794 } ) ;
780795 }
781796
797+ getVCProjectVersion ( ) {
798+ switch ( Options . visualStudioVersion ) {
799+ case VisualStudioVersion . VS2017 :
800+ return '15.0' ;
801+ case VisualStudioVersion . VS2019 :
802+ return '16.0' ;
803+ case VisualStudioVersion . VS2022 :
804+ return '17.0' ;
805+ case VisualStudioVersion . VS2026 :
806+ return '18.0' ;
807+ default :
808+ return null ;
809+ }
810+ }
811+
782812 async globals ( platform : string , indent : number ) {
783813 let windowsTargetVersion = Options . visualStudioVersion === VisualStudioVersion . VS2017 ? '10.0.16299.0' : '10.0.14393.0' ;
784814
785- if ( Options . visualStudioVersion === VisualStudioVersion . VS2022 || Options . visualStudioVersion === VisualStudioVersion . VS2019 ) {
786- this . p ( '<VCProjectVersion>16.0</VCProjectVersion>' , indent ) ;
787- }
788- else if ( Options . visualStudioVersion === VisualStudioVersion . VS2017 ) {
789- this . p ( '<VCProjectVersion>15.0</VCProjectVersion>' , indent ) ;
815+ if ( this . getVCProjectVersion ( ) ) {
816+ this . p ( '<VCProjectVersion>' + this . getVCProjectVersion ( ) + '</VCProjectVersion>' , indent ) ;
790817 }
791818
792819 if ( platform === Platform . WindowsApp ) {
@@ -859,7 +886,7 @@ export class VisualStudioExporter extends Exporter {
859886 this . p ( '</ItemGroup>' , 1 ) ;
860887 this . customItemGroups ( 1 ) ;
861888 this . p ( '<PropertyGroup Label="Globals">' , 1 ) ;
862- this . p ( '<ProjectGuid>{' + project . getUuid ( ) . toString ( ) . toUpperCase ( ) + '}</ProjectGuid>' , 2 ) ;
889+ this . p ( '<ProjectGuid>{' + project . getUuid ( ) . toString ( ) . toLowerCase ( ) + '}</ProjectGuid>' , 2 ) ;
863890 // p("<Keyword>Win32Proj</Keyword>", 2);
864891 // p("<RootNamespace>" + project.Name + "</RootNamespace>", 2);
865892 await this . globals ( platform , 2 ) ;
0 commit comments