Browse Source

Add new options to assembly info editor: AssemblyDefaultAlias, AssemblyInformationalVersion, CLSCompliant, JitOptimization, JitTracking

pull/624/head
olegbevz 11 years ago
parent
commit
c8198ab98a
  1. 15
      data/resources/StringResources.resx
  2. 12
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AssemblyInfo/AssemblyInfo.cs
  3. 52
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AssemblyInfo/AssemblyInfoPanel.xaml
  4. 119
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AssemblyInfo/AssemblyInfoProvider.cs

15
data/resources/StringResources.resx

@ -8416,4 +8416,19 @@ Press Esc to cancel this operation.</value>
<data name="Dialog.ProjectOptions.AssemblyInfo.AssemblyInfoNotFound" xml:space="preserve"> <data name="Dialog.ProjectOptions.AssemblyInfo.AssemblyInfoNotFound" xml:space="preserve">
<value>Assembly info file was not found. Please ensure that the project contains assembly info file.</value> <value>Assembly info file was not found. Please ensure that the project contains assembly info file.</value>
</data> </data>
<data name="Dialog.ProjectOptions.AssemblyInfo.ClsCompliant" xml:space="preserve">
<value>CLS compliant</value>
</data>
<data name="Dialog.ProjectOptions.AssemblyInfo.DefaultAlias" xml:space="preserve">
<value>Default alias:</value>
</data>
<data name="Dialog.ProjectOptions.AssemblyInfo.InformationalVersion" xml:space="preserve">
<value>Informational version:</value>
</data>
<data name="Dialog.ProjectOptions.AssemblyInfo.JitOptimization" xml:space="preserve">
<value>JIT optimization</value>
</data>
<data name="Dialog.ProjectOptions.AssemblyInfo.JitTracking" xml:space="preserve">
<value>JIT tracking</value>
</data>
</root> </root>

12
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AssemblyInfo/AssemblyInfo.cs

@ -34,14 +34,24 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
public string Trademark { get; set; } public string Trademark { get; set; }
public string DefaultAlias { get; set; }
public Version AssemblyVersion { get; set; } public Version AssemblyVersion { get; set; }
public Version FileVersion { get; set; } public Version AssemblyFileVersion { get; set; }
public Version InformationalVersion { get; set; }
public Guid Guid { get; set; } public Guid Guid { get; set; }
public string NeutralLanguage { get; set; } public string NeutralLanguage { get; set; }
public bool ComVisible { get; set; } public bool ComVisible { get; set; }
public bool ClsCompliant { get; set; }
public bool JitOptimization { get; set; }
public bool JitTracking { get; set; }
} }
} }

52
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AssemblyInfo/AssemblyInfoPanel.xaml

@ -6,7 +6,8 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:core="http://icsharpcode.net/sharpdevelop/core" xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:optionPanels="clr-namespace:ICSharpCode.SharpDevelop.Gui.OptionPanels" xmlns:optionPanels="clr-namespace:ICSharpCode.SharpDevelop.Gui.OptionPanels"
mc:Ignorable="d"> mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type={x:Type optionPanels:AssemblyInfo}}">
<ScrollViewer VerticalScrollBarVisibility="Auto"> <ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid> <Grid>
<Grid.Resources> <Grid.Resources>
@ -44,29 +45,60 @@
<RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Title}" Grid.Column="0" Grid.Row="0"/> <Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Title}" Grid.Column="0" Grid.Row="0"/>
<TextBox Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="0"/> <TextBox Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="0"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Description}" Grid.Column="0" Grid.Row="1"/> <Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Description}" Grid.Column="0" Grid.Row="1"/>
<TextBox Text="{Binding Description, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="1"/> <TextBox Text="{Binding Description, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="1"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Company}" Grid.Column="0" Grid.Row="2"/> <Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Company}" Grid.Column="0" Grid.Row="2"/>
<TextBox Text="{Binding Company, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="2"/> <TextBox Text="{Binding Company, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="2"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Product}" Grid.Column="0" Grid.Row="3"/> <Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Product}" Grid.Column="0" Grid.Row="3"/>
<TextBox Text="{Binding Product, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="3"/> <TextBox Text="{Binding Product, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="3"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Copyright}" Grid.Column="0" Grid.Row="4"/> <Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Copyright}" Grid.Column="0" Grid.Row="4"/>
<TextBox Text="{Binding Copyright, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="4"/> <TextBox Text="{Binding Copyright, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="4"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Trademark}" Grid.Column="0" Grid.Row="5"/> <Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.Trademark}" Grid.Column="0" Grid.Row="5"/>
<TextBox Text="{Binding Trademark, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="5"/> <TextBox Text="{Binding Trademark, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="5"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.AssemblyVersion}" Grid.Column="0" Grid.Row="6"/>
<TextBox Text="{Binding AssemblyVersion, Converter={StaticResource VersionToStringConverter}, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="6"/> <Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.DefaultAlias}" Grid.Column="0" Grid.Row="6"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.FileVersion}" Grid.Column="0" Grid.Row="7"/> <TextBox Text="{Binding DefaultAlias, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="6"/>
<TextBox Text="{Binding FileVersion, Converter={StaticResource VersionToStringConverter}, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="7"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.GUID}" Grid.Column="0" Grid.Row="8"/> <Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.AssemblyVersion}" Grid.Column="0" Grid.Row="7"/>
<TextBox Text="{Binding Guid, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="8"/> <TextBox Text="{Binding AssemblyVersion, Converter={StaticResource VersionToStringConverter}, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="7"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.NeutralLanguage}" Grid.Column="0" Grid.Row="9"/>
<TextBox Text="{Binding NeutralLanguage, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="9"/> <Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.FileVersion}" Grid.Column="0" Grid.Row="8"/>
<TextBox Text="{Binding AssemblyFileVersion, Converter={StaticResource VersionToStringConverter}, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="8"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.InformationalVersion}" Grid.Column="0" Grid.Row="9"/>
<TextBox Text="{Binding InformationalVersion, Converter={StaticResource VersionToStringConverter}, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="9"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.GUID}" Grid.Column="0" Grid.Row="10"/>
<TextBox Text="{Binding Guid, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="10"/>
<Label Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.NeutralLanguage}" Grid.Column="0" Grid.Row="11"/>
<TextBox Text="{Binding NeutralLanguage, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Grid.Row="11"/>
<CheckBox Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.MakeAssemblyCOMVisible}" <CheckBox Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.MakeAssemblyCOMVisible}"
IsChecked="{Binding ComVisible}" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="10"/> IsChecked="{Binding ComVisible}" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="12"/>
<CheckBox Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.ClsCompliant}"
IsChecked="{Binding ClsCompliant}" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="13"/>
<CheckBox Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.JitOptimization}"
IsChecked="{Binding JitOptimization}" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="14"/>
<CheckBox Content="{core:Localize Dialog.ProjectOptions.AssemblyInfo.JitTracking}"
IsChecked="{Binding JitTracking}" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="15"/>
</Grid> </Grid>
</ScrollViewer> </ScrollViewer>
</optionPanels:ProjectOptionPanel> </optionPanels:ProjectOptionPanel>

119
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AssemblyInfo/AssemblyInfoProvider.cs

@ -19,6 +19,7 @@
using System; using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection;
using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.CSharp;
using Mono.CSharp; using Mono.CSharp;
using Attribute = ICSharpCode.NRefactory.CSharp.Attribute; using Attribute = ICSharpCode.NRefactory.CSharp.Attribute;
@ -37,6 +38,8 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
var assemblyInfo = new AssemblyInfo(); var assemblyInfo = new AssemblyInfo();
assemblyInfo.JitOptimization = true;
foreach (var attributeSection in syntaxTree.Children.OfType<AttributeSection>()) foreach (var attributeSection in syntaxTree.Children.OfType<AttributeSection>())
{ {
foreach (var attribute in attributeSection.Attributes) foreach (var attribute in attributeSection.Attributes)
@ -48,41 +51,53 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
switch (attributeType.Identifier) switch (attributeType.Identifier)
{ {
case "AssemblyTitle": case "AssemblyTitle":
assemblyInfo.Title = GetAttributeValueAsString(attribute); assemblyInfo.Title = GetAttributeValue<string>(attribute);
break; break;
case "AssemblyDescription": case "AssemblyDescription":
assemblyInfo.Description = GetAttributeValueAsString(attribute); assemblyInfo.Description = GetAttributeValue<string>(attribute);
break; break;
case "AssemblyConfigurtation": case "AssemblyConfigurtation":
break; break;
case "AssemblyCompany": case "AssemblyCompany":
assemblyInfo.Company = GetAttributeValueAsString(attribute); assemblyInfo.Company = GetAttributeValue<string>(attribute);
break; break;
case "AssemblyProduct": case "AssemblyProduct":
assemblyInfo.Product = GetAttributeValueAsString(attribute); assemblyInfo.Product = GetAttributeValue<string>(attribute);
break; break;
case "AssemblyCopyright": case "AssemblyCopyright":
assemblyInfo.Copyright = GetAttributeValueAsString(attribute); assemblyInfo.Copyright = GetAttributeValue<string>(attribute);
break; break;
case "AssemblyTrademark": case "AssemblyTrademark":
assemblyInfo.Trademark = GetAttributeValueAsString(attribute); assemblyInfo.Trademark = GetAttributeValue<string>(attribute);
break; break;
case "AssemblyCulture": case "AssemblyDefaultAlias":
assemblyInfo.DefaultAlias = GetAttributeValue<string>(attribute);
break; break;
case "ComVisible": case "AssemblyVersion":
assemblyInfo.ComVisible = GetAttributeValueAsBool(attribute); assemblyInfo.AssemblyVersion = GetAttributeValueAsVersion(attribute);
break;
case "AssemblyFileVersion":
assemblyInfo.AssemblyFileVersion = GetAttributeValueAsVersion(attribute);
break;
case "AssemblyInformationalVersion":
assemblyInfo.InformationalVersion = GetAttributeValueAsVersion(attribute);
break; break;
case "Guid": case "Guid":
assemblyInfo.Guid = GetAttributeValueAsGuid(attribute); assemblyInfo.Guid = GetAttributeValueAsGuid(attribute);
break; break;
case "AssemblyVersion": case "NeutralResourcesLanguage":
assemblyInfo.AssemblyVersion = GetAttributeValueAsVersion(attribute); assemblyInfo.NeutralLanguage = GetAttributeValue<string>(attribute);
break; break;
case "AssemblyFileVersion": case "ComVisible":
assemblyInfo.FileVersion = GetAttributeValueAsVersion(attribute); assemblyInfo.ComVisible = GetAttributeValue<bool>(attribute);
break; break;
case "NeutralResourcesLanguageAttribute": case "CLSCompliant":
assemblyInfo.NeutralLanguage = GetAttributeValueAsString(attribute); assemblyInfo.ClsCompliant = GetAttributeValue<bool>(attribute);
break;
case "AssemblyFlags":
var assemblyFlags = (AssemblyNameFlags)GetAttributeValue<int>(attribute, (int)AssemblyNameFlags.PublicKey);
assemblyInfo.JitOptimization = !assemblyFlags.HasFlag(AssemblyNameFlags.EnableJITcompileOptimizer);
assemblyInfo.JitTracking = assemblyFlags.HasFlag(AssemblyNameFlags.EnableJITcompileTracking);
break; break;
} }
} }
@ -98,17 +113,28 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
if (syntaxTree == null) if (syntaxTree == null)
throw new Exception("Can't read assembly info syntax tree."); throw new Exception("Can't read assembly info syntax tree.");
SetAttributeValueOrAddAttribute(syntaxTree, "AssemblyTitle", assemblyInfo.Title); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyTitle", assemblyInfo.Title);
SetAttributeValueOrAddAttribute(syntaxTree, "AssemblyDescription", assemblyInfo.Description); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyDescription", assemblyInfo.Description);
SetAttributeValueOrAddAttribute(syntaxTree, "AssemblyCompany", assemblyInfo.Company); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyCompany", assemblyInfo.Company);
SetAttributeValueOrAddAttribute(syntaxTree, "AssemblyProduct", assemblyInfo.Product); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyProduct", assemblyInfo.Product);
SetAttributeValueOrAddAttribute(syntaxTree, "AssemblyCopyright", assemblyInfo.Copyright); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyCopyright", assemblyInfo.Copyright);
SetAttributeValueOrAddAttribute(syntaxTree, "AssemblyTrademark", assemblyInfo.Trademark); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyTrademark", assemblyInfo.Trademark);
SetAttributeValueOrAddAttribute(syntaxTree, "ComVisible", assemblyInfo.ComVisible); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyDefaultAlias", assemblyInfo.DefaultAlias);
SetAttributeValueOrAddAttribute(syntaxTree, "Guid", assemblyInfo.Guid.ToString()); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyVersion", assemblyInfo.AssemblyVersion, new Version(), true);
SetAttributeValueOrAddAttribute(syntaxTree, "AssemblyVersion", assemblyInfo.AssemblyVersion.ToString()); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyFileVersion", assemblyInfo.AssemblyFileVersion, new Version(), true);
SetAttributeValueOrAddAttribute(syntaxTree, "AssemblyFileVersion", assemblyInfo.FileVersion.ToString()); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyInformationalVersion", assemblyInfo.InformationalVersion, new Version(), true);
SetAttributeValueOrAddAttribute(syntaxTree, "NeutralResourcesLanguageAttribute", assemblyInfo.NeutralLanguage); SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "Guid", assemblyInfo.Guid, Guid.Empty, true);
SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "NeutralResourcesLanguage", assemblyInfo.NeutralLanguage);
SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "ComVisible", assemblyInfo.ComVisible, false);
SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "CLSCompliant", assemblyInfo.ClsCompliant, false);
AssemblyNameFlags assemblyFlags = AssemblyNameFlags.PublicKey;
if (!assemblyInfo.JitOptimization)
assemblyFlags = assemblyFlags | AssemblyNameFlags.EnableJITcompileOptimizer;
if (assemblyInfo.JitTracking)
assemblyFlags = assemblyFlags | AssemblyNameFlags.EnableJITcompileTracking;
SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, "AssemblyFlags", (int)assemblyFlags, (int)AssemblyNameFlags.PublicKey);
WriteSyntaxTree(syntaxTree, fileName); WriteSyntaxTree(syntaxTree, fileName);
} }
@ -131,22 +157,13 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
File.WriteAllText(fileName, syntaxTree.ToString()); File.WriteAllText(fileName, syntaxTree.ToString());
} }
private string GetAttributeValueAsString(Attribute attribute) private T GetAttributeValue<T>(Attribute attribute, T defaultValue = default(T))
{
var attributeArguments = attribute.Arguments.OfType<PrimitiveExpression>().ToArray();
if (attributeArguments.Length == 1)
return attributeArguments[0].Value as string;
return string.Empty;
}
private bool GetAttributeValueAsBool(Attribute attribute)
{ {
var attributeArguments = attribute.Arguments.OfType<PrimitiveExpression>().ToArray(); var attributeArguments = attribute.Arguments.OfType<PrimitiveExpression>().ToArray();
if (attributeArguments.Length == 1) if (attributeArguments.Length == 1 && attributeArguments[0].Value is T)
return (bool)attributeArguments[0].Value; return (T)attributeArguments[0].Value;
return false; return defaultValue;
} }
private Guid GetAttributeValueAsGuid(Attribute attribute) private Guid GetAttributeValueAsGuid(Attribute attribute)
@ -164,34 +181,36 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
if (attributeArguments.Length == 1) if (attributeArguments.Length == 1)
{ {
var versionString = attributeArguments[0].Value as string; var versionString = attributeArguments[0].Value as string;
var versionParts = versionString.Split('.'); if (!string.IsNullOrEmpty(versionString))
if (versionParts.Length == 4)
{ {
return new Version( Version version;
int.Parse(versionParts[0]), if (Version.TryParse(versionString, out version))
int.Parse(versionParts[1]), return version;
int.Parse(versionParts[2]),
int.Parse(versionParts[3]));
} }
} }
return null; return null;
} }
private void SetAttributeValueOrAddAttribute(SyntaxTree syntaxTree, string attributeName, object value) private void SetAttributeValueOrAddAttributeIfNotDefault(SyntaxTree syntaxTree, string attributeName, object value, object defaultValue = null, bool transformValueToString = false)
{ {
if (value == null)
return;
var attribute = syntaxTree.Children.OfType<AttributeSection>().SelectMany(x => x.Attributes) var attribute = syntaxTree.Children.OfType<AttributeSection>().SelectMany(x => x.Attributes)
.FirstOrDefault(x => x.Type is SimpleType && ((SimpleType)x.Type).Identifier == attributeName); .FirstOrDefault(x => x.Type is SimpleType && ((SimpleType)x.Type).Identifier == attributeName);
var attributeValue = transformValueToString ? value.ToString() : value;
if (attribute != null) if (attribute != null)
{ {
attribute.Arguments.Clear(); attribute.Arguments.Clear();
attribute.Arguments.Add(new PrimitiveExpression(value)); attribute.Arguments.Add(new PrimitiveExpression(attributeValue));
} }
else else if (value != null && !value.Equals(defaultValue))
{ {
attribute = new Attribute() { Type = new SimpleType(attributeName) }; attribute = new Attribute() { Type = new SimpleType(attributeName) };
attribute.Arguments.Add(new PrimitiveExpression(value)); attribute.Arguments.Add(new PrimitiveExpression(attributeValue));
var attributeSection = new AttributeSection(attribute) { AttributeTarget = "assembly" }; var attributeSection = new AttributeSection(attribute) { AttributeTarget = "assembly" };
syntaxTree.AddChild(attributeSection, new NRefactory.Role<AttributeSection>("Member")); syntaxTree.AddChild(attributeSection, new NRefactory.Role<AttributeSection>("Member"));

Loading…
Cancel
Save