44 * Licensed under the MIT License. See License.txt in the project root for license information.
55 *--------------------------------------------------------------------------------------------*/
66
7+ using System ;
78using System . IO ;
89using System . Text ;
910using UnityEditor . Compilation ;
@@ -29,12 +30,34 @@ public SdkStyleProjectGeneration() : base(
2930 {
3031 }
3132
33+ internal static readonly string [ ] SupportedCapabilities = new string [ ]
34+ {
35+ "Unity" ,
36+ } ;
37+
38+ internal static readonly string [ ] UnsupportedCapabilities = new string [ ]
39+ {
40+ "LaunchProfiles" ,
41+ "SharedProjectReferences" ,
42+ "ReferenceManagerSharedProjects" ,
43+ "ProjectReferences" ,
44+ "ReferenceManagerProjects" ,
45+ "COMReferences" ,
46+ "ReferenceManagerCOM" ,
47+ "AssemblyReferences" ,
48+ "ReferenceManagerAssemblies" ,
49+ } ;
50+
3251 internal override void GetProjectHeader ( ProjectProperties properties , out StringBuilder headerBuilder )
3352 {
3453 headerBuilder = new StringBuilder ( ) ;
3554
36- headerBuilder . Append ( @"<Project ToolsVersion=""Current"" Sdk=""Microsoft.NET.Sdk"" >" ) . Append ( k_WindowsNewline ) ;
55+ headerBuilder . Append ( @"<Project ToolsVersion=""Current"">" ) . Append ( k_WindowsNewline ) ;
3756 headerBuilder . Append ( @" <!-- Generated file, do not modify, your changes will be overwritten (use AssetPostprocessor.OnGeneratedCSProject) -->" ) . Append ( k_WindowsNewline ) ;
57+
58+ // Supported capabilities
59+ GetCapabilityBlock ( headerBuilder , "Sdk.props" , "Include" , SupportedCapabilities ) ;
60+
3861 headerBuilder . Append ( @" <PropertyGroup>" ) . Append ( k_WindowsNewline ) ;
3962 headerBuilder . Append ( @" <GenerateAssemblyInfo>false</GenerateAssemblyInfo>" ) . Append ( k_WindowsNewline ) ;
4063 headerBuilder . Append ( @" <EnableDefaultItems>false</EnableDefaultItems>" ) . Append ( k_WindowsNewline ) ;
@@ -78,7 +101,21 @@ internal override void AppendProjectReference(Assembly assembly, Assembly refere
78101
79102 internal override void GetProjectFooter ( StringBuilder footerBuilder )
80103 {
104+ // Unsupported capabilities
105+ GetCapabilityBlock ( footerBuilder , "Sdk.targets" , "Remove" , UnsupportedCapabilities ) ;
106+
81107 footerBuilder . Append ( "</Project>" ) . Append ( k_WindowsNewline ) ;
82108 }
109+
110+ internal static void GetCapabilityBlock ( StringBuilder footerBuilder , string import , string attribute , string [ ] capabilities )
111+ {
112+ footerBuilder . Append ( $@ " <Import Project=""{ import } "" Sdk=""Microsoft.NET.Sdk"" />") . Append ( k_WindowsNewline ) ;
113+ footerBuilder . Append ( @" <ItemGroup>" ) . Append ( k_WindowsNewline ) ;
114+ foreach ( var capability in capabilities )
115+ {
116+ footerBuilder . Append ( $@ " <ProjectCapability { attribute } =""{ capability } "" />") . Append ( k_WindowsNewline ) ;
117+ }
118+ footerBuilder . Append ( @" </ItemGroup>" ) . Append ( k_WindowsNewline ) ;
119+ }
83120 }
84121}
0 commit comments