Files
sbox-public/engine/Sandbox.SolutionGenerator/Templates/Project.cs
Garry Newman d95169d8fa Unit Test Cleanup (#5064)
* Move all unit tests to Engine/Tests
* Fix Margin.EdgeSubtract
* Fix Capsule.Contains
* EnvironmentVariables.Remove if it's null
* Fixed ray trace never returning startedsolid
* Fix HistoryList.Navigate on empty list
* Fix GameObject.WorldPosition accepting NaNs
* Fix flex: initial expanding to the wrong grow/shrink
* Translation.TryConvert shouldn't throw on invalid enum strings
* Skip sound file tests on machines with no audio device
2026-06-12 13:23:50 +01:00

108 lines
3.7 KiB
C#

using System.Text;
namespace Sandbox.SolutionGenerator;
/// <summary>
/// Class to produce the template output
/// </summary>
internal partial class Project
{
/// <summary>
/// Create the template output
/// </summary>
public virtual string TransformText()
{
var sb = new StringBuilder();
sb.AppendLine( "<Project Sdk=\"Microsoft.NET.Sdk.Razor\">" );
sb.AppendLine( "" );
sb.AppendLine( $" <PropertyGroup>" );
sb.AppendLine( $" <TargetFramework>net10.0</TargetFramework>" );
sb.AppendLine( $" <GenerateDocumentationFile>true</GenerateDocumentationFile>" );
sb.AppendLine( $" <AssemblyName>{ProjectName}</AssemblyName>" );
sb.AppendLine( $" <PackageId>{ProjectName}</PackageId>" );
sb.AppendLine( $" <LangVersion>14</LangVersion>" );
sb.AppendLine( $" <NoWarn>{NoWarn}</NoWarn>" );
sb.AppendLine( $" <WarningsAsErrors></WarningsAsErrors>" );
sb.AppendLine( $" <TreatWarningsAsErrors>{TreatWarningsAsErrors}</TreatWarningsAsErrors>" );
sb.AppendLine( $" <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>" );
sb.AppendLine( $" <DefineConstants>{DefineConstants}</DefineConstants>" );
sb.AppendLine( $" <AllowUnsafeBlocks>{Unsafe}</AllowUnsafeBlocks>" );
sb.AppendLine( $" <OutputPath>{GameRoot}/.vs/output/</OutputPath>" );
sb.AppendLine( $" <DocumentationFile>{GameRoot}/.vs/output/{ProjectName}.xml</DocumentationFile>" );
sb.AppendLine( $" <RootNamespace>{RootNamespace}</RootNamespace>" );
sb.AppendLine( $" <Nullable>{Nullable}</Nullable>" );
foreach ( var entry in PropertyGroupExtras )
{
sb.AppendLine( $" {entry}" );
}
sb.AppendLine( $" </PropertyGroup>" );
sb.AppendLine( $"" );
if ( IsUnitTestProject )
{
sb.AppendLine( $" <ItemGroup>" );
sb.AppendLine( $" <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"17.12.0\" /> " );
sb.AppendLine( $" <PackageReference Include=\"MSTest.TestAdapter\" Version=\"3.6.4\" /> " );
sb.AppendLine( $" <PackageReference Include=\"MSTest.TestFramework\" Version=\"3.6.4\" /> " );
sb.AppendLine( $" <PackageReference Include=\"coverlet.collector\" Version=\"6.0.2\" /> " );
sb.AppendLine( $" </ItemGroup>" );
sb.AppendLine( $"" );
}
if ( ProjectName == "Base Library" )
{
sb.AppendLine( $" <ItemGroup>" );
sb.AppendLine( $" <EmbeddedResource Include=\"../shaders/**/*.shader\" LinkBase=\"Shaders (Embedded)\" /> " );
sb.AppendLine( $" <EmbeddedResource Include=\"../shaders/**/*.hlsl\" LinkBase=\"Shaders (Embedded)\" /> " );
sb.AppendLine( $" </ItemGroup>" );
sb.AppendLine( $"" );
}
if ( GlobalStatic.Count > 0 || GlobalUsing.Count > 0 )
{
sb.AppendLine( $" <ItemGroup>" );
foreach ( var entry in GlobalStatic )
{
sb.AppendLine( $" <Using Include=\"{entry}\" Static=\"true\" />" );
}
foreach ( var entry in GlobalUsing )
{
sb.AppendLine( $" <Using Include=\"{entry}\" />" );
}
sb.AppendLine( $" </ItemGroup>" );
sb.AppendLine( $"" );
}
{
sb.AppendLine( $" <ItemGroup>" );
sb.AppendLine( $" <Analyzer Include=\"{ManagedRoot}/Sandbox.CodeUpgrader.dll\"/> " );
sb.AppendLine( $" <Analyzer Include=\"{ManagedRoot}/Sandbox.Generator.dll\"/> " );
foreach ( var entry in References )
{
sb.AppendLine( $" <Reference Include=\"{ManagedRoot}/{entry}\"/> " );
}
sb.AppendLine( $" </ItemGroup>" );
sb.AppendLine( $"" );
}
if ( !string.IsNullOrWhiteSpace( ProjectReferences ) )
{
sb.AppendLine( $" <ItemGroup>" );
sb.AppendLine( $" {ProjectReferences.Trim()}" );
sb.AppendLine( $" </ItemGroup>" );
sb.AppendLine( $"" );
}
sb.AppendLine( "</Project>" );
return sb.ToString();
}
}