Skip to content

Commit bdd30cf

Browse files
committed
Improve SDK style project generation
1 parent f3e025f commit bdd30cf

File tree

3 files changed

+29
-28
lines changed

3 files changed

+29
-28
lines changed

Packages/com.unity.ide.visualstudio/Editor/ProjectGeneration/LegacyStyleProjectGeneration.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ internal override void GetProjectHeader(ProjectProperties properties, out String
5555
headerBuilder.Append(@" <BaseDirectory>.</BaseDirectory>").Append(k_WindowsNewline);
5656
headerBuilder.Append(@" </PropertyGroup>").Append(k_WindowsNewline);
5757

58+
GetProjectHeaderProperties(properties, headerBuilder);
5859
GetProjectHeaderConfigurations(properties, headerBuilder);
5960

6061
// Explicit references
@@ -70,6 +71,25 @@ internal override void GetProjectHeader(ProjectProperties properties, out String
7071
GetProjectHeaderAnalyzers(properties, headerBuilder);
7172
}
7273

74+
internal static void GetProjectHeaderConfigurations(ProjectProperties properties, StringBuilder headerBuilder)
75+
{
76+
headerBuilder.Append(@" <PropertyGroup Condition="" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "">").Append(k_WindowsNewline);
77+
headerBuilder.Append(@" <DebugSymbols>true</DebugSymbols>").Append(k_WindowsNewline);
78+
headerBuilder.Append(@" <DebugType>full</DebugType>").Append(k_WindowsNewline);
79+
headerBuilder.Append(@" <Optimize>false</Optimize>").Append(k_WindowsNewline);
80+
headerBuilder.Append(@" <OutputPath>").Append(properties.OutputPath).Append(@"</OutputPath>").Append(k_WindowsNewline);
81+
headerBuilder.Append(@" <ErrorReport>prompt</ErrorReport>").Append(k_WindowsNewline);
82+
headerBuilder.Append(@" <WarningLevel>4</WarningLevel>").Append(k_WindowsNewline);
83+
headerBuilder.Append(@" </PropertyGroup>").Append(k_WindowsNewline);
84+
headerBuilder.Append(@" <PropertyGroup Condition="" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "">").Append(k_WindowsNewline);
85+
headerBuilder.Append(@" <DebugType>pdbonly</DebugType>").Append(k_WindowsNewline);
86+
headerBuilder.Append(@" <Optimize>true</Optimize>").Append(k_WindowsNewline);
87+
headerBuilder.Append($" <OutputPath>{@"Temp\bin\Release\".NormalizePathSeparators()}</OutputPath>").Append(k_WindowsNewline);
88+
headerBuilder.Append(@" <ErrorReport>prompt</ErrorReport>").Append(k_WindowsNewline);
89+
headerBuilder.Append(@" <WarningLevel>4</WarningLevel>").Append(k_WindowsNewline);
90+
headerBuilder.Append(@" </PropertyGroup>").Append(k_WindowsNewline);
91+
}
92+
7393
internal override void AppendProjectReference(Assembly assembly, Assembly reference, StringBuilder projectBuilder)
7494
{
7595
// If the current assembly is a Player project, we want to project-reference the corresponding Player project

Packages/com.unity.ide.visualstudio/Editor/ProjectGeneration/ProjectGeneration.cs

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -758,28 +758,13 @@ internal virtual void GetProjectHeader(ProjectProperties properties, out StringB
758758
headerBuilder = default;
759759
}
760760

761-
internal static void GetProjectHeaderConfigurations(ProjectProperties properties, StringBuilder headerBuilder)
761+
internal void GetProjectHeaderProperties(ProjectProperties properties, StringBuilder headerBuilder)
762762
{
763763
const string NoWarn = "0169;USG0001";
764764

765-
headerBuilder.Append(@" <PropertyGroup Condition="" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "">").Append(k_WindowsNewline);
766-
headerBuilder.Append(@" <DebugSymbols>true</DebugSymbols>").Append(k_WindowsNewline);
767-
headerBuilder.Append(@" <DebugType>full</DebugType>").Append(k_WindowsNewline);
768-
headerBuilder.Append(@" <Optimize>false</Optimize>").Append(k_WindowsNewline);
769-
headerBuilder.Append(@" <OutputPath>").Append(properties.OutputPath).Append(@"</OutputPath>").Append(k_WindowsNewline);
770-
headerBuilder.Append(@" <DefineConstants>").Append(string.Join(";", properties.Defines)).Append(@"</DefineConstants>").Append(k_WindowsNewline);
771-
headerBuilder.Append(@" <ErrorReport>prompt</ErrorReport>").Append(k_WindowsNewline);
772-
headerBuilder.Append(@" <WarningLevel>4</WarningLevel>").Append(k_WindowsNewline);
773-
headerBuilder.Append(@" <NoWarn>").Append(NoWarn).Append("</NoWarn>").Append(k_WindowsNewline);
774-
headerBuilder.Append(@" <AllowUnsafeBlocks>").Append(properties.Unsafe).Append(@"</AllowUnsafeBlocks>").Append(k_WindowsNewline);
775-
headerBuilder.Append(@" </PropertyGroup>").Append(k_WindowsNewline);
776-
headerBuilder.Append(@" <PropertyGroup Condition="" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "">").Append(k_WindowsNewline);
777-
headerBuilder.Append(@" <DebugType>pdbonly</DebugType>").Append(k_WindowsNewline);
778-
headerBuilder.Append(@" <Optimize>true</Optimize>").Append(k_WindowsNewline);
779-
headerBuilder.Append($" <OutputPath>{@"Temp\bin\Release\".NormalizePathSeparators()}</OutputPath>").Append(k_WindowsNewline);
780-
headerBuilder.Append(@" <ErrorReport>prompt</ErrorReport>").Append(k_WindowsNewline);
781-
headerBuilder.Append(@" <WarningLevel>4</WarningLevel>").Append(k_WindowsNewline);
765+
headerBuilder.Append(@" <PropertyGroup>").Append(k_WindowsNewline);
782766
headerBuilder.Append(@" <NoWarn>").Append(NoWarn).Append("</NoWarn>").Append(k_WindowsNewline);
767+
headerBuilder.Append(@" <DefineConstants>").Append(string.Join(";", properties.Defines)).Append(@"</DefineConstants>").Append(k_WindowsNewline);
783768
headerBuilder.Append(@" <AllowUnsafeBlocks>").Append(properties.Unsafe).Append(@"</AllowUnsafeBlocks>").Append(k_WindowsNewline);
784769
headerBuilder.Append(@" </PropertyGroup>").Append(k_WindowsNewline);
785770
}

Packages/com.unity.ide.visualstudio/Editor/ProjectGeneration/SdkStyleProjectGeneration.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,16 @@ internal override void GetProjectHeader(ProjectProperties properties, out String
5252
{
5353
headerBuilder = new StringBuilder();
5454

55-
headerBuilder.Append(@"<Project ToolsVersion=""Current"">").Append(k_WindowsNewline);
55+
headerBuilder.Append(@"<Project>").Append(k_WindowsNewline);
5656
headerBuilder.Append(@" <!-- Generated file, do not modify, your changes will be overwritten (use AssetPostprocessor.OnGeneratedCSProject) -->").Append(k_WindowsNewline);
5757

5858
// Prevent circular dependency issues see https://github.com/microsoft/vscode-dotnettools/issues/401
59-
// We need a dedicated subfolder for each project in obj, else depending on the build order, nuget cache files could be overwritten
60-
// We need to do this before common.props, else we'll have a MSB3539 The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild
59+
// We need a dedicated subfolder for each project in obj, otherwise depending on the build order, nuget cache files could be overwritten
60+
// We need to do this before common.props, otherwise we'll have a MSB3539 The value of the property "BaseIntermediateOutputPath" was modified after it was used by MSBuild
6161
headerBuilder.Append(@" <PropertyGroup>").Append(k_WindowsNewline);
62-
headerBuilder.Append($" <BaseIntermediateOutputPath>{@"Temp\obj\$(Configuration)\$(MSBuildProjectName)".NormalizePathSeparators()}</BaseIntermediateOutputPath>").Append(k_WindowsNewline);
62+
headerBuilder.Append($" <BaseIntermediateOutputPath>{@"Temp\obj\$(MSBuildProjectName)".NormalizePathSeparators()}</BaseIntermediateOutputPath>").Append(k_WindowsNewline);
6363
headerBuilder.Append(@" <IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>").Append(k_WindowsNewline);
64+
headerBuilder.Append(@" <OutputPath>").Append(properties.OutputPath).Append(@"</OutputPath>").Append(k_WindowsNewline);
6465
headerBuilder.Append(@" </PropertyGroup>").Append(k_WindowsNewline);
6566

6667
// Supported capabilities
@@ -69,14 +70,9 @@ internal override void GetProjectHeader(ProjectProperties properties, out String
6970
headerBuilder.Append(@" <PropertyGroup>").Append(k_WindowsNewline);
7071
headerBuilder.Append(@" <GenerateAssemblyInfo>false</GenerateAssemblyInfo>").Append(k_WindowsNewline);
7172
headerBuilder.Append(@" <EnableDefaultItems>false</EnableDefaultItems>").Append(k_WindowsNewline);
72-
headerBuilder.Append(@" <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>").Append(k_WindowsNewline);
7373
headerBuilder.Append(@" <LangVersion>").Append(properties.LangVersion).Append(@"</LangVersion>").Append(k_WindowsNewline);
74-
headerBuilder.Append(@" <Configurations>Debug;Release</Configurations>").Append(k_WindowsNewline);
75-
headerBuilder.Append(@" <Configuration Condition="" '$(Configuration)' == '' "">Debug</Configuration>").Append(k_WindowsNewline);
76-
headerBuilder.Append(@" <Platform Condition="" '$(Platform)' == '' "">AnyCPU</Platform>").Append(k_WindowsNewline);
7774
headerBuilder.Append(@" <RootNamespace>").Append(properties.RootNamespace).Append(@"</RootNamespace>").Append(k_WindowsNewline);
7875
headerBuilder.Append(@" <OutputType>Library</OutputType>").Append(k_WindowsNewline);
79-
headerBuilder.Append(@" <AppDesignerFolder>Properties</AppDesignerFolder>").Append(k_WindowsNewline);
8076
headerBuilder.Append(@" <AssemblyName>").Append(properties.AssemblyName).Append(@"</AssemblyName>").Append(k_WindowsNewline);
8177
// In the end, given we use NoConfig/NoStdLib (see below), hardcoding the target framework version will have no impact, even when targeting netstandard/net48 from Unity.
8278
// But with SDK style we use netstandard2.1 (net471 for legacy), so 3rd party tools will not fail to work when .NETFW reference assemblies are not installed.
@@ -85,7 +81,7 @@ internal override void GetProjectHeader(ProjectProperties properties, out String
8581
headerBuilder.Append(@" <BaseDirectory>.</BaseDirectory>").Append(k_WindowsNewline);
8682
headerBuilder.Append(@" </PropertyGroup>").Append(k_WindowsNewline);
8783

88-
GetProjectHeaderConfigurations(properties, headerBuilder);
84+
GetProjectHeaderProperties(properties, headerBuilder);
8985

9086
// Explicit references
9187
headerBuilder.Append(@" <PropertyGroup>").Append(k_WindowsNewline);

0 commit comments

Comments
 (0)