From 5f756a6ceb390a4fd71b7e0d6b1493881a4796c8 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 3 Jul 2023 22:00:38 +0200 Subject: [PATCH] Add `TargetFrameworkAttribute` to compiled C# assembly --- .../Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs b/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs index 454376c61..13433f92c 100644 --- a/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs +++ b/Source/Tools/Flax.Build/Build/DotNet/Builder.DotNet.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Text; using Flax.Build.Graph; using Flax.Build.NativeCpp; using Flax.Deploy; @@ -12,7 +13,7 @@ namespace Flax.Build { static partial class Builder { - public static event Action> BuildDotNetAssembly; + public static event Action> BuildDotNetAssembly; private static void BuildTargetDotNet(RulesAssembly rules, TaskGraph graph, Target target, Platform platform, TargetConfiguration configuration) { @@ -151,7 +152,7 @@ namespace Flax.Build } } - private static void BuildDotNet(TaskGraph graph, BuildData buildData, NativeCpp.BuildOptions buildOptions, string name, List sourceFiles, HashSet fileReferences = null, IGrouping binaryModule = null) + private static void BuildDotNet(TaskGraph graph, BuildData buildData, BuildOptions buildOptions, string name, List sourceFiles, HashSet fileReferences = null, IGrouping binaryModule = null) { // Setup build options var buildPlatform = Platform.BuildTargetPlatform; @@ -277,6 +278,13 @@ namespace Flax.Build foreach (var sourceFile in sourceFiles) args.Add("\"" + sourceFile + "\""); +#if USE_NETCORE + // Inject some assembly metadata (similar to msbuild in Visual Studio) + var assemblyAttributesPath = Path.Combine(buildOptions.IntermediateFolder, name + ".AssemblyAttributes.cs"); + File.WriteAllText(assemblyAttributesPath, $"[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(\".NETCoreApp,Version=v{runtimeVersionShort}\", FrameworkDisplayName = \".NET {runtimeVersionShort}\")]\n", Encoding.UTF8); + args.Add("\"" + assemblyAttributesPath + "\""); +#endif + // Generate response file with source files paths and compilation arguments string responseFile = Path.Combine(buildOptions.IntermediateFolder, name + ".response"); Utilities.WriteFileIfChanged(responseFile, string.Join(Environment.NewLine, args));