Files
sbox-public/engine/Sandbox.SolutionGenerator/Templates/Project.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00: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.7.2\" /> " );
sb.AppendLine( $" <PackageReference Include=\"MSTest.TestAdapter\" Version=\"3.1.1\" /> " );
sb.AppendLine( $" <PackageReference Include=\"MSTest.TestFramework\" Version=\"3.1.1\" /> " );
sb.AppendLine( $" <PackageReference Include=\"coverlet.collector\" Version=\"6.0.0\" /> " );
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();
}
}