diff --git a/src/Microsoft.DotNet.Compiler.Common/AssemblyInfoFileGenerator.cs b/src/Microsoft.DotNet.Compiler.Common/AssemblyInfoFileGenerator.cs index 7fe9a8e29..59c0ae9a7 100644 --- a/src/Microsoft.DotNet.Compiler.Common/AssemblyInfoFileGenerator.cs +++ b/src/Microsoft.DotNet.Compiler.Common/AssemblyInfoFileGenerator.cs @@ -6,9 +6,9 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Resources; -using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using System.IO; +using System.Runtime.Versioning; using Microsoft.CodeAnalysis.CSharp.Syntax; namespace Microsoft.Dotnet.Cli.Compiler.Common @@ -26,7 +26,8 @@ namespace Microsoft.Dotnet.Cli.Compiler.Common [typeof(AssemblyVersionAttribute)] = EscapeCharacters(metadata.AssemblyVersion?.ToString()), [typeof(AssemblyInformationalVersionAttribute)] = EscapeCharacters(metadata.InformationalVersion), [typeof(AssemblyCultureAttribute)] = EscapeCharacters(metadata.Culture), - [typeof(NeutralResourcesLanguageAttribute)] = EscapeCharacters(metadata.NeutralLanguage) + [typeof(NeutralResourcesLanguageAttribute)] = EscapeCharacters(metadata.NeutralLanguage), + [typeof(TargetFrameworkAttribute)] = EscapeCharacters(metadata.TargetFramework) }; var existingAttributes = new List(); diff --git a/src/Microsoft.DotNet.Compiler.Common/AssemblyInfoOptions.cs b/src/Microsoft.DotNet.Compiler.Common/AssemblyInfoOptions.cs index a3d41ef5a..3f2ddfd0e 100644 --- a/src/Microsoft.DotNet.Compiler.Common/AssemblyInfoOptions.cs +++ b/src/Microsoft.DotNet.Compiler.Common/AssemblyInfoOptions.cs @@ -5,6 +5,8 @@ using Microsoft.DotNet.ProjectModel; using System; using System.Collections.Generic; using System.CommandLine; +using System.Linq; +using NuGet.Frameworks; namespace Microsoft.Dotnet.Cli.Compiler.Common { @@ -26,6 +28,8 @@ namespace Microsoft.Dotnet.Cli.Compiler.Common private const string NeutralCultureOptionName = "neutral-language"; + private const string TargetFrameworkOptionName = "target-framework"; + public string Title { get; set; } public string Description { get; set; } @@ -42,8 +46,22 @@ namespace Microsoft.Dotnet.Cli.Compiler.Common public string NeutralLanguage { get; set; } - public static AssemblyInfoOptions CreateForProject(Project project) + public string TargetFramework { get; set; } + + public static AssemblyInfoOptions CreateForProject(ProjectContext context) { + var project = context.ProjectFile; + NuGetFramework targetFramework = null; + // force .NETFramework instead of DNX + if (context.TargetFramework.IsDesktop()) + { + targetFramework = new NuGetFramework(FrameworkConstants.FrameworkIdentifiers.Net, context.TargetFramework.Version); + } + else + { + targetFramework = context.TargetFramework; + } + return new AssemblyInfoOptions() { AssemblyVersion = project.Version?.Version.ToString(), @@ -52,7 +70,8 @@ namespace Microsoft.Dotnet.Cli.Compiler.Common Copyright = project.Copyright, Description = project.Description, Title = project.Title, - NeutralLanguage = project.Language + NeutralLanguage = project.Language, + TargetFramework = targetFramework.DotNetFrameworkName }; } @@ -66,6 +85,7 @@ namespace Microsoft.Dotnet.Cli.Compiler.Common string copyright = null; string culture = null; string neutralCulture = null; + string targetFramework = null; syntax.DefineOption(AssemblyVersionOptionName, ref version, UnescapeNewlines, "Assembly version"); @@ -83,6 +103,8 @@ namespace Microsoft.Dotnet.Cli.Compiler.Common syntax.DefineOption(AssemblyFileVersionOptionName, ref fileVersion, UnescapeNewlines, "Assembly title"); + syntax.DefineOption(TargetFrameworkOptionName, ref targetFramework, UnescapeNewlines, "Assembly target framework"); + return new AssemblyInfoOptions() { AssemblyFileVersion = fileVersion, @@ -91,7 +113,8 @@ namespace Microsoft.Dotnet.Cli.Compiler.Common NeutralLanguage = neutralCulture, Description = description, InformationalVersion = informationalVersion, - Title = title + Title = title, + TargetFramework = targetFramework }; } @@ -131,6 +154,10 @@ namespace Microsoft.Dotnet.Cli.Compiler.Common { options.Add(FormatOption(NeutralCultureOptionName, assemblyInfoOptions.NeutralLanguage)); } + if (!string.IsNullOrWhiteSpace(assemblyInfoOptions.TargetFramework)) + { + options.Add(FormatOption(TargetFrameworkOptionName, assemblyInfoOptions.TargetFramework)); + } return options; } diff --git a/src/Microsoft.DotNet.Tools.Compiler/Program.cs b/src/Microsoft.DotNet.Tools.Compiler/Program.cs index 5d4b10015..1448ff310 100644 --- a/src/Microsoft.DotNet.Tools.Compiler/Program.cs +++ b/src/Microsoft.DotNet.Tools.Compiler/Program.cs @@ -311,7 +311,7 @@ namespace Microsoft.DotNet.Tools.Compiler compilerArgs.AddRange(compilationOptions.SerializeToArgs()); // Add metadata options - compilerArgs.AddRange(AssemblyInfoOptions.SerializeToArgs(AssemblyInfoOptions.CreateForProject(context.ProjectFile))); + compilerArgs.AddRange(AssemblyInfoOptions.SerializeToArgs(AssemblyInfoOptions.CreateForProject(context))); foreach (var dependency in dependencies) {