Skip to content

Commit 42afb53

Browse files
sailroGitHub Enterprise
authored andcommitted
Merge pull request #200 from unity/sdk-style-generation
Improve SDK style project generation
2 parents 204d139 + 9211f62 commit 42afb53

File tree

5 files changed

+37
-35
lines changed

5 files changed

+37
-35
lines changed

.yamato/CI.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ editors:
55
- version: 2020.3
66
- version: 2021.3
77
- version: 2022.3
8-
- version: 2023.1
8+
- version: 6000.0
99
- version: trunk
1010
platforms:
1111
- name: win

Packages/com.unity.ide.visualstudio.tests/Tests/Editor/CSProjectTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,25 +142,25 @@ public void DefaultSyncSettings_WhenSynced_CreatesProjectFileFromDefaultTemplate
142142
" <FileAlignment>512</FileAlignment>",
143143
" <BaseDirectory>.</BaseDirectory>",
144144
" </PropertyGroup>",
145+
" <PropertyGroup>",
146+
" <NoWarn>0169;USG0001</NoWarn>",
147+
" <DefineConstants></DefineConstants>",
148+
" <AllowUnsafeBlocks>False</AllowUnsafeBlocks>",
149+
" </PropertyGroup>",
145150
" <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">",
146151
" <DebugSymbols>true</DebugSymbols>",
147152
" <DebugType>full</DebugType>",
148153
" <Optimize>false</Optimize>",
149154
$" <OutputPath>{m_Builder.Assembly.outputPath}</OutputPath>",
150-
$" <DefineConstants></DefineConstants>",
151155
" <ErrorReport>prompt</ErrorReport>",
152156
" <WarningLevel>4</WarningLevel>",
153-
" <NoWarn>0169;USG0001</NoWarn>",
154-
" <AllowUnsafeBlocks>False</AllowUnsafeBlocks>",
155157
" </PropertyGroup>",
156158
" <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">",
157159
" <DebugType>pdbonly</DebugType>",
158160
" <Optimize>true</Optimize>",
159161
$" <OutputPath>{@"Temp\bin\Release\".NormalizePathSeparators()}</OutputPath>",
160162
" <ErrorReport>prompt</ErrorReport>",
161163
" <WarningLevel>4</WarningLevel>",
162-
" <NoWarn>0169;USG0001</NoWarn>",
163-
" <AllowUnsafeBlocks>False</AllowUnsafeBlocks>",
164164
" </PropertyGroup>",
165165
" <PropertyGroup>",
166166
" <NoConfig>true</NoConfig>",

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
@@ -756,28 +756,13 @@ internal virtual void GetProjectHeader(ProjectProperties properties, out StringB
756756
headerBuilder = default;
757757
}
758758

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

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

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

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ public SdkStyleProjectGeneration() : base(
4040
"LaunchProfiles",
4141
"SharedProjectReferences",
4242
"ReferenceManagerSharedProjects",
43-
"ProjectReferences",
4443
"ReferenceManagerProjects",
4544
"COMReferences",
4645
"ReferenceManagerCOM",
@@ -52,15 +51,18 @@ internal override void GetProjectHeader(ProjectProperties properties, out String
5251
{
5352
headerBuilder = new StringBuilder();
5453

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

5857
// 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
58+
// We need a dedicated subfolder for each project in obj, otherwise depending on the build order, nuget cache files could be overwritten
59+
// 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
6160
headerBuilder.Append(@" <PropertyGroup>").Append(k_WindowsNewline);
62-
headerBuilder.Append($" <BaseIntermediateOutputPath>{@"Temp\obj\$(Configuration)\$(MSBuildProjectName)".NormalizePathSeparators()}</BaseIntermediateOutputPath>").Append(k_WindowsNewline);
61+
headerBuilder.Append($" <BaseIntermediateOutputPath>{@"Temp\obj\$(MSBuildProjectName)".NormalizePathSeparators()}</BaseIntermediateOutputPath>").Append(k_WindowsNewline);
6362
headerBuilder.Append(@" <IntermediateOutputPath>$(BaseIntermediateOutputPath)</IntermediateOutputPath>").Append(k_WindowsNewline);
63+
headerBuilder.Append(@" <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>").Append(k_WindowsNewline);
64+
headerBuilder.Append(@" <UseCommonOutputDirectory>true</UseCommonOutputDirectory>").Append(k_WindowsNewline);
65+
headerBuilder.Append($" <OutputPath>").Append(properties.OutputPath.NormalizePathSeparators()).Append(@"</OutputPath>").Append(k_WindowsNewline);
6466
headerBuilder.Append(@" </PropertyGroup>").Append(k_WindowsNewline);
6567

6668
// Supported capabilities
@@ -69,14 +71,9 @@ internal override void GetProjectHeader(ProjectProperties properties, out String
6971
headerBuilder.Append(@" <PropertyGroup>").Append(k_WindowsNewline);
7072
headerBuilder.Append(@" <GenerateAssemblyInfo>false</GenerateAssemblyInfo>").Append(k_WindowsNewline);
7173
headerBuilder.Append(@" <EnableDefaultItems>false</EnableDefaultItems>").Append(k_WindowsNewline);
72-
headerBuilder.Append(@" <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>").Append(k_WindowsNewline);
7374
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);
7775
headerBuilder.Append(@" <RootNamespace>").Append(properties.RootNamespace).Append(@"</RootNamespace>").Append(k_WindowsNewline);
7876
headerBuilder.Append(@" <OutputType>Library</OutputType>").Append(k_WindowsNewline);
79-
headerBuilder.Append(@" <AppDesignerFolder>Properties</AppDesignerFolder>").Append(k_WindowsNewline);
8077
headerBuilder.Append(@" <AssemblyName>").Append(properties.AssemblyName).Append(@"</AssemblyName>").Append(k_WindowsNewline);
8178
// 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.
8279
// 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 +82,7 @@ internal override void GetProjectHeader(ProjectProperties properties, out String
8582
headerBuilder.Append(@" <BaseDirectory>.</BaseDirectory>").Append(k_WindowsNewline);
8683
headerBuilder.Append(@" </PropertyGroup>").Append(k_WindowsNewline);
8784

88-
GetProjectHeaderConfigurations(properties, headerBuilder);
85+
GetProjectHeaderProperties(properties, headerBuilder);
8986

9087
// Explicit references
9188
headerBuilder.Append(@" <PropertyGroup>").Append(k_WindowsNewline);

0 commit comments

Comments
 (0)