Skip to content

Commit d35c2c8

Browse files
committed
replace Mono.Cecil with Roslyn for VersionWriterTests
1 parent abb196f commit d35c2c8

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed

src/Directory.Packages.props

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<PackageVersion Include="JetBrains.Annotations" Version="2022.3.1" />
1010
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="17.5.0" />
1111
<PackageVersion Include="Microsoft.Build" Version="17.5.0" />
12+
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.5.0" />
13+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" />
1214
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="3.3.4" />
1315
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="7.0.0" />
1416
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
@@ -18,7 +20,6 @@
1820
<PackageVersion Include="Microsoft.Extensions.Options" Version="7.0.1" />
1921
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
2022
<PackageVersion Include="Microsoft.Win32.Registry" Version="6.0.0-preview.5.21301.5" />
21-
<PackageVersion Include="Mono.Cecil" Version="0.11.5" />
2223
<PackageVersion Include="Buildalyzer" Version="5.0.0" />
2324
<PackageVersion Include="coverlet.msbuild" Version="3.2.0" />
2425
<PackageVersion Include="MSBuild.ProjectCreation" Version="10.0.0" />
@@ -36,4 +37,4 @@
3637
<PackageVersion Include="System.Text.Encodings.Web" Version="7.0.0" />
3738
<PackageVersion Include="YamlDotNet" Version="13.1.0" />
3839
</ItemGroup>
39-
</Project>
40+
</Project>

src/GitVersion.App.Tests/GitVersion.App.Tests.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<ItemGroup>
4-
<PackageReference Include="Mono.Cecil" />
4+
<PackageReference Include="Microsoft.CodeAnalysis.Common" />
5+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" />
56
</ItemGroup>
67
<ItemGroup>
78
<ProjectReference Include="..\GitVersion.Core\GitVersion.Core.csproj" />

src/GitVersion.App.Tests/VersionWriterTests.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
using GitVersion.Core.Tests.Helpers;
22
using GitVersion.Extensions;
3+
using Microsoft.CodeAnalysis;
4+
using Microsoft.CodeAnalysis.CSharp;
35
using Microsoft.Extensions.DependencyInjection;
4-
using Mono.Cecil;
56

67
namespace GitVersion.App.Tests;
78

@@ -46,17 +47,17 @@ public void WriteVersionShouldWriteFileVersionWithPrereleaseTag()
4647

4748
private static Assembly GenerateAssembly(Version fileVersion, string prereleaseInfo)
4849
{
49-
var definition = new AssemblyNameDefinition("test-asm", fileVersion);
50-
51-
var asmDef = AssemblyDefinition.CreateAssembly(definition, "test-asm", ModuleKind.Dll);
52-
var constructor = typeof(AssemblyInformationalVersionAttribute).GetConstructor(new[] { typeof(string) });
53-
var methodReference = asmDef.MainModule.ImportReference(constructor);
54-
var customAttribute = new CustomAttribute(methodReference);
55-
customAttribute.ConstructorArguments.Add(new CustomAttributeArgument(asmDef.MainModule.TypeSystem.String, fileVersion + prereleaseInfo));
56-
asmDef.CustomAttributes.Add(customAttribute);
50+
var csharpCode = $@"
51+
[assembly: System.Reflection.AssemblyInformationalVersionAttribute(""{fileVersion + prereleaseInfo}"")]
52+
";
53+
var compilation = CSharpCompilation.Create("test-asm")
54+
.WithOptions(new(OutputKind.DynamicallyLinkedLibrary))
55+
.AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location))
56+
.AddReferences(MetadataReference.CreateFromFile(typeof(AssemblyInformationalVersionAttribute).Assembly.Location))
57+
.AddSyntaxTrees(CSharpSyntaxTree.ParseText(csharpCode));
5758

5859
using var memoryStream = new MemoryStream();
59-
asmDef.Write(memoryStream);
60+
compilation.Emit(memoryStream);
6061

6162
return Assembly.Load(memoryStream.ToArray());
6263
}

0 commit comments

Comments
 (0)