Browse Source

Add write asssembly flags support

pull/624/head
olegbevz 12 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
if (assemblyInfo.JitTracking) if (assemblyInfo.JitTracking)
assemblyFlags = assemblyFlags | AssemblyNameFlags.EnableJITcompileTracking; 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(); return syntaxTree.ToString();
} }
@ -288,13 +290,24 @@ namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
return AssemblyNameFlags.PublicKey; return AssemblyNameFlags.PublicKey;
} }
//private Expression GetAssemblyFlagsExpression(AssemblyNameFlags assemblyFlags) private Expression GetAssemblyFlagsExpression(AssemblyNameFlags assemblyFlags)
//{ {
// var flagNames = new List<string>(); var flagNames = new List<string>();
// var flagValues = Enum. var flagValues = Enum.GetValues(typeof(AssemblyNameFlags));
// assemblyFlags.h 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( private void SetAttributeValueOrAddAttributeIfNotDefault(
SyntaxTree syntaxTree, SyntaxTree syntaxTree,

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

@ -301,7 +301,7 @@ using System.Runtime.InteropServices;
} }
[TestCase] [TestCase]
public void ReadAssemblyInfoFlagsTests() public void ReadAssemblyFlagsTests()
{ {
var assemblyInfo = ReadAssemblyInfo("[assembly: AssemblyFlags (32769)]"); var assemblyInfo = ReadAssemblyInfo("[assembly: AssemblyFlags (32769)]");
Assert.IsTrue(assemblyInfo.JitOptimization); Assert.IsTrue(assemblyInfo.JitOptimization);
@ -340,6 +340,27 @@ using System.Runtime.InteropServices;
Assert.IsTrue(assemblyInfo.JitTracking); 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] [TestCase]
public void WriteDefaultAssemblyInfoToEmptyAssemblyInfoFileTest() public void WriteDefaultAssemblyInfoToEmptyAssemblyInfoFileTest()
{ {

Loading…
Cancel
Save