Browse Source

Add write asssembly flags support

pull/624/head
olegbevz 11 years ago
parent
commit
66127ce814
  1. 29
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/ProjectOptions/AssemblyInfo/AssemblyInfoProvider.cs
  2. 23
      src/Main/Base/Test/ProjectOptions/AssemblyInfoProviderTests.cs

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

@ -193,7 +193,9 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -193,7 +193,9 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
if (assemblyInfo.JitTracking)
assemblyFlags = assemblyFlags | AssemblyNameFlags.EnableJITcompileTracking;
SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, AssemblyFlags, (int)assemblyFlags, (int)AssemblyNameFlags.PublicKey);
var flagsExpression = GetAssemblyFlagsExpression(assemblyFlags);
SetAttributeValueOrAddAttributeIfNotDefault(syntaxTree, AssemblyFlags, (int)assemblyFlags, (int)AssemblyNameFlags.PublicKey, flagsExpression);
return syntaxTree.ToString();
}
@ -288,13 +290,24 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels @@ -288,13 +290,24 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
return AssemblyNameFlags.PublicKey;
}
//private Expression GetAssemblyFlagsExpression(AssemblyNameFlags assemblyFlags)
//{
// var flagNames = new List<string>();
// var flagValues = Enum.
// assemblyFlags.h
//}
private Expression GetAssemblyFlagsExpression(AssemblyNameFlags assemblyFlags)
{
var flagNames = new List<string>();
var flagValues = Enum.GetValues(typeof(AssemblyNameFlags));
foreach (var flagValue in flagValues)
{
if (assemblyFlags.HasFlag((Enum)flagValue) && (int)flagValue > 0)
flagNames.Add(flagValue.ToString());
}
var codeParser = new CSharpParser();
var expression = codeParser.ParseExpression(
string.Join(" | ", flagNames.Select(x => string.Format("AssemblyNameFlags.{0}", x))));
return expression;
}
private void SetAttributeValueOrAddAttributeIfNotDefault(
SyntaxTree syntaxTree,

23
src/Main/Base/Test/ProjectOptions/AssemblyInfoProviderTests.cs

@ -301,7 +301,7 @@ using System.Runtime.InteropServices; @@ -301,7 +301,7 @@ using System.Runtime.InteropServices;
}
[TestCase]
public void ReadAssemblyInfoFlagsTests()
public void ReadAssemblyFlagsTests()
{
var assemblyInfo = ReadAssemblyInfo("[assembly: AssemblyFlags (32769)]");
Assert.IsTrue(assemblyInfo.JitOptimization);
@ -340,6 +340,27 @@ using System.Runtime.InteropServices; @@ -340,6 +340,27 @@ using System.Runtime.InteropServices;
Assert.IsTrue(assemblyInfo.JitTracking);
}
[TestCase]
public void WriteAssemblyFlagsTests()
{
var assemblyInfo = new AssemblyInfo { JitOptimization = false, JitTracking = true };
Assert.AreEqual(
"[assembly: AssemblyFlags (AssemblyNameFlags.PublicKey | AssemblyNameFlags.EnableJITcompileOptimizer | AssemblyNameFlags.EnableJITcompileTracking)]\r\n",
WriteAssemblyInfoFile(assemblyInfo, string.Empty));
assemblyInfo = new AssemblyInfo { JitOptimization = true, JitTracking = true };
Assert.AreEqual(
"[assembly: AssemblyFlags (AssemblyNameFlags.PublicKey | AssemblyNameFlags.EnableJITcompileTracking)]\r\n",
WriteAssemblyInfoFile(assemblyInfo, string.Empty));
assemblyInfo = new AssemblyInfo { JitOptimization = true, JitTracking = false };
Assert.IsEmpty(WriteAssemblyInfoFile(assemblyInfo, string.Empty));
assemblyInfo = new AssemblyInfo { JitOptimization = false, JitTracking = false };
Assert.AreEqual("[assembly: AssemblyFlags (AssemblyNameFlags.PublicKey | AssemblyNameFlags.EnableJITcompileOptimizer)]\r\n",
WriteAssemblyInfoFile(assemblyInfo, string.Empty));
}
[TestCase]
public void WriteDefaultAssemblyInfoToEmptyAssemblyInfoFileTest()
{

Loading…
Cancel
Save