Skip to content
This repository has been archived by the owner on Apr 20, 2023. It is now read-only.

Add target framework attribute #509

Merged
merged 1 commit into from
Dec 16, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
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
Expand All @@ -26,7 +26,8 @@ public static string Generate(AssemblyInfoOptions metadata, IEnumerable<string>
[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<Type>();
Expand Down
33 changes: 30 additions & 3 deletions src/Microsoft.DotNet.Compiler.Common/AssemblyInfoOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
using System;
using System.Collections.Generic;
using System.CommandLine;
using System.Linq;
using NuGet.Frameworks;

namespace Microsoft.Dotnet.Cli.Compiler.Common
{
Expand All @@ -26,6 +28,8 @@ public class AssemblyInfoOptions

private const string NeutralCultureOptionName = "neutral-language";

private const string TargetFrameworkOptionName = "target-framework";

public string Title { get; set; }

public string Description { get; set; }
Expand All @@ -42,8 +46,22 @@ public class AssemblyInfoOptions

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(),
Expand All @@ -52,7 +70,8 @@ public static AssemblyInfoOptions CreateForProject(Project project)
Copyright = project.Copyright,
Description = project.Description,
Title = project.Title,
NeutralLanguage = project.Language
NeutralLanguage = project.Language,
TargetFramework = targetFramework.DotNetFrameworkName
};
}

Expand All @@ -66,6 +85,7 @@ public static AssemblyInfoOptions Parse(ArgumentSyntax syntax)
string copyright = null;
string culture = null;
string neutralCulture = null;
string targetFramework = null;

syntax.DefineOption(AssemblyVersionOptionName, ref version, UnescapeNewlines, "Assembly version");

Expand All @@ -83,6 +103,8 @@ public static AssemblyInfoOptions Parse(ArgumentSyntax syntax)

syntax.DefineOption(AssemblyFileVersionOptionName, ref fileVersion, UnescapeNewlines, "Assembly title");

syntax.DefineOption(TargetFrameworkOptionName, ref targetFramework, UnescapeNewlines, "Assembly target framework");

return new AssemblyInfoOptions()
{
AssemblyFileVersion = fileVersion,
Expand All @@ -91,7 +113,8 @@ public static AssemblyInfoOptions Parse(ArgumentSyntax syntax)
NeutralLanguage = neutralCulture,
Description = description,
InformationalVersion = informationalVersion,
Title = title
Title = title,
TargetFramework = targetFramework
};
}

Expand Down Expand Up @@ -131,6 +154,10 @@ public static IEnumerable<string> SerializeToArgs(AssemblyInfoOptions assemblyIn
{
options.Add(FormatOption(NeutralCultureOptionName, assemblyInfoOptions.NeutralLanguage));
}
if (!string.IsNullOrWhiteSpace(assemblyInfoOptions.TargetFramework))
{
options.Add(FormatOption(TargetFrameworkOptionName, assemblyInfoOptions.TargetFramework));
}

return options;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Microsoft.DotNet.Tools.Compiler/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ private static bool CompileProject(ProjectContext context, string configuration,
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)
{
Expand Down