Add TargetFrameworkAttribute to compiled C# assembly

This commit is contained in:
Wojtek Figat
2023-07-03 22:00:38 +02:00
parent 5d9e6b7364
commit 5f756a6ceb

View File

@@ -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<TaskGraph, BuildData, NativeCpp.BuildOptions, Task, IGrouping<string, Module>> BuildDotNetAssembly;
public static event Action<TaskGraph, BuildData, BuildOptions, Task, IGrouping<string, Module>> 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<string> sourceFiles, HashSet<string> fileReferences = null, IGrouping<string, Module> binaryModule = null)
private static void BuildDotNet(TaskGraph graph, BuildData buildData, BuildOptions buildOptions, string name, List<string> sourceFiles, HashSet<string> fileReferences = null, IGrouping<string, Module> 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));