You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-08 12:40:44 +00:00
C#: Support for building with the dotnet CLI
By adding a reference to the 'Microsoft.NETFramework.ReferenceAssemblies' nuget package, we can build projects targeting .NET Framework with the dotnet CLI. By referencing this package we also don't need to install Mono on Linux/macOS or .NET Framework on Windows, as the assemblies are taken from the package.
This commit is contained in:
@@ -173,7 +173,7 @@ namespace GodotTools.ProjectEditor
|
||||
void AddPropertyIfNotPresent(string name, string condition, string value)
|
||||
{
|
||||
if (root.PropertyGroups
|
||||
.Any(g => (g.Condition == string.Empty || g.Condition.Trim() == condition) &&
|
||||
.Any(g => (string.IsNullOrEmpty(g.Condition) || g.Condition.Trim() == condition) &&
|
||||
g.Properties
|
||||
.Any(p => p.Name == name &&
|
||||
p.Value == value &&
|
||||
@@ -264,7 +264,7 @@ namespace GodotTools.ProjectEditor
|
||||
bool hasGodotProjectGeneratorVersion = false;
|
||||
bool foundOldConfiguration = false;
|
||||
|
||||
foreach (var propertyGroup in root.PropertyGroups.Where(g => g.Condition == string.Empty))
|
||||
foreach (var propertyGroup in root.PropertyGroups.Where(g => string.IsNullOrEmpty(g.Condition)))
|
||||
{
|
||||
if (!hasGodotProjectGeneratorVersion && propertyGroup.Properties.Any(p => p.Name == "GodotProjectGeneratorVersion"))
|
||||
hasGodotProjectGeneratorVersion = true;
|
||||
@@ -280,7 +280,7 @@ namespace GodotTools.ProjectEditor
|
||||
|
||||
if (!hasGodotProjectGeneratorVersion)
|
||||
{
|
||||
root.PropertyGroups.First(g => g.Condition == string.Empty)?
|
||||
root.PropertyGroups.First(g => string.IsNullOrEmpty(g.Condition))?
|
||||
.AddProperty("GodotProjectGeneratorVersion", Assembly.GetExecutingAssembly().GetName().Version.ToString());
|
||||
project.HasUnsavedChanges = true;
|
||||
}
|
||||
@@ -348,5 +348,25 @@ namespace GodotTools.ProjectEditor
|
||||
MigrateConfigurationConditions("Tools", "Debug"); // Must be last
|
||||
}
|
||||
}
|
||||
|
||||
public static void EnsureHasNugetNetFrameworkRefAssemblies(MSBuildProject project)
|
||||
{
|
||||
var root = project.Root;
|
||||
|
||||
bool found = root.ItemGroups.Any(g => string.IsNullOrEmpty(g.Condition) && g.Items.Any(
|
||||
item => item.ItemType == "PackageReference" && item.Include == "Microsoft.NETFramework.ReferenceAssemblies"));
|
||||
|
||||
if (found)
|
||||
return;
|
||||
|
||||
var frameworkRefAssembliesItem = root.AddItem("PackageReference", "Microsoft.NETFramework.ReferenceAssemblies");
|
||||
|
||||
// Use metadata (child nodes) instead of attributes for the PackageReference.
|
||||
// This is for compatibility with 3.2, where GodotTools uses an old Microsoft.Build.
|
||||
frameworkRefAssembliesItem.AddMetadata("Version", "1.0.0");
|
||||
frameworkRefAssembliesItem.AddMetadata("PrivateAssets", "All");
|
||||
|
||||
project.HasUnsavedChanges = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user