| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- using System;
- using System.IO;
- using System.Text;
- using Microsoft.Build.Construction;
- using Microsoft.Build.Evaluation;
- namespace GodotTools.ProjectEditor
- {
- public static class ProjectGenerator
- {
- public const string GodotSdkVersionToUse = "3.3.0";
- public const string GodotSdkNameToUse = "Godot.NET.Sdk";
- public static ProjectRootElement GenGameProject(string name)
- {
- if (name.Length == 0)
- throw new ArgumentException("Project name is empty", nameof(name));
- var root = ProjectRootElement.Create(NewProjectFileOptions.None);
- root.Sdk = $"{GodotSdkNameToUse}/{GodotSdkVersionToUse}";
- var mainGroup = root.AddPropertyGroup();
- mainGroup.AddProperty("TargetFramework", "net472");
- string sanitizedName = IdentifierUtils.SanitizeQualifiedIdentifier(name, allowEmptyIdentifiers: true);
- // If the name is not a valid namespace, manually set RootNamespace to a sanitized one.
- if (sanitizedName != name)
- mainGroup.AddProperty("RootNamespace", sanitizedName);
- return root;
- }
- public static string GenAndSaveGameProject(string dir, string name)
- {
- if (name.Length == 0)
- throw new ArgumentException("Project name is empty", nameof(name));
- string path = Path.Combine(dir, name + ".csproj");
- var root = GenGameProject(name);
- // Save (without BOM)
- root.Save(path, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
- return Guid.NewGuid().ToString().ToUpper();
- }
- }
- }
|