Skip to content

Commit 3308ce3

Browse files
committed
Make AssemblyInfo a set
1 parent b3b3c1f commit 3308ce3

File tree

6 files changed

+54
-52
lines changed

6 files changed

+54
-52
lines changed

test/Microsoft.NET.Build.Tests/GivenThatWeWantToControlGeneratedAssemblyInfo.cs

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#nullable disable
55

6+
using Microsoft.VisualBasic;
7+
68
namespace Microsoft.NET.Build.Tests
79
{
810
public class GivenThatWeWantToControlGeneratedAssemblyInfo : SdkTest
@@ -50,19 +52,19 @@ public void It_respects_opt_outs(string attributeToOptOut)
5052
.Should()
5153
.Pass();
5254

53-
var expectedInfo = new SortedDictionary<string, string>
54-
{
55-
{ "AssemblyInformationalVersionAttribute", "1.2.3-beta" },
56-
{ "AssemblyFileVersionAttribute", "4.5.6.7" },
57-
{ "AssemblyVersionAttribute", "8.9.10.11" },
58-
{ "AssemblyCompanyAttribute", "TestCompany" },
59-
{ "AssemblyConfigurationAttribute", "Release" },
60-
{ "AssemblyCopyrightAttribute", "TestCopyright" },
61-
{ "AssemblyDescriptionAttribute", "TestDescription" },
62-
{ "AssemblyProductAttribute", "TestProduct" },
63-
{ "AssemblyTitleAttribute", "TestTitle" },
64-
{ "AssemblyTrademarkAttribute", "TestTrademark" },
65-
{ "NeutralResourcesLanguageAttribute", "fr" },
55+
var expectedInfo = new HashSet<(string Key, string Value)>
56+
{
57+
("AssemblyInformationalVersionAttribute", "1.2.3-beta"),
58+
("AssemblyFileVersionAttribute", "4.5.6.7"),
59+
("AssemblyVersionAttribute", "8.9.10.11"),
60+
("AssemblyCompanyAttribute", "TestCompany"),
61+
("AssemblyConfigurationAttribute", "Release"),
62+
("AssemblyCopyrightAttribute", "TestCopyright"),
63+
("AssemblyDescriptionAttribute", "TestDescription"),
64+
("AssemblyProductAttribute", "TestProduct"),
65+
("AssemblyTitleAttribute", "TestTitle"),
66+
("AssemblyTrademarkAttribute", "TestTrademark"),
67+
("NeutralResourcesLanguageAttribute", "fr"),
6668
};
6769

6870
if (attributeToOptOut == "All")
@@ -71,10 +73,10 @@ public void It_respects_opt_outs(string attributeToOptOut)
7173
}
7274
else
7375
{
74-
expectedInfo.Remove(attributeToOptOut);
76+
expectedInfo.RemoveWhere(i => i.Key == attributeToOptOut);
7577
}
7678

77-
expectedInfo.Add("TargetFrameworkAttribute", $".NETCoreApp,Version=v{ToolsetInfo.CurrentTargetFrameworkVersion}");
79+
expectedInfo.Add(("TargetFrameworkAttribute", $".NETCoreApp,Version=v{ToolsetInfo.CurrentTargetFrameworkVersion}"));
7880

7981
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory(ToolsetInfo.CurrentTargetFramework, "Release").FullName, "HelloWorld.dll");
8082
var actualInfo = AssemblyInfo.Get(assemblyPath);
@@ -258,9 +260,9 @@ public void It_respects_version_prefix(string targetFramework)
258260
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory(targetFramework).FullName, "HelloWorld.dll");
259261
var info = AssemblyInfo.Get(assemblyPath);
260262

261-
info["AssemblyVersionAttribute"].Should().Be("1.2.3.0");
262-
info["AssemblyFileVersionAttribute"].Should().Be("1.2.3.0");
263-
info["AssemblyInformationalVersionAttribute"].Should().Be("1.2.3");
263+
info.Should().Contain(("AssemblyVersionAttribute", "1.2.3.0"));
264+
info.Should().Contain(("AssemblyFileVersionAttribute", "1.2.3.0"));
265+
info.Should().Contain(("AssemblyInformationalVersionAttribute", "1.2.3"));
264266
}
265267

266268
[WindowsOnlyTheory]
@@ -285,7 +287,7 @@ public void It_respects_version_changes_on_incremental_build(string targetFramew
285287
// Then the version of the built assembly shall match the provided VersionPrefix
286288
var assemblyPath = Path.Combine(incrementalBuildCommand.GetOutputDirectory(targetFramework).FullName, "HelloWorld.dll");
287289
var info = AssemblyInfo.Get(assemblyPath);
288-
info["AssemblyVersionAttribute"].Should().Be("1.2.4.0");
290+
info.Should().Contain(("AssemblyVersionAttribute", "1.2.4.0"));
289291

290292
BuildCommand BuildProject(string versionPrefix)
291293
{
@@ -307,7 +309,7 @@ public void It_respects_custom_assembly_attribute_items_on_incremental_build()
307309

308310
var firstBuildCommand = BuildProject(buildNumber: "1");
309311
var assemblyPath = Path.Combine(firstBuildCommand.GetOutputDirectory(targetFramework).FullName, "TestLibrary.dll");
310-
AssemblyInfo.Get(assemblyPath)["AssemblyMetadataAttribute"].Should().Be("BuildNumber:1");
312+
AssemblyInfo.Get(assemblyPath).Should().Contain(("AssemblyMetadataAttribute", "BuildNumber:1"));
311313

312314
var firstWriteTime = File.GetLastWriteTimeUtc(assemblyPath);
313315

@@ -324,7 +326,7 @@ public void It_respects_custom_assembly_attribute_items_on_incremental_build()
324326
File.GetLastWriteTimeUtc(assemblyPath).Should().NotBe(firstWriteTime);
325327

326328
// and the custom assembly should be generated with the updated value.
327-
AssemblyInfo.Get(assemblyPath)["AssemblyMetadataAttribute"].Should().Be("BuildNumber:2");
329+
AssemblyInfo.Get(assemblyPath).Should().Contain(("AssemblyMetadataAttribute", "BuildNumber:2"));
328330

329331
BuildCommand BuildProject(string buildNumber)
330332
{
@@ -358,7 +360,7 @@ public void It_includes_internals_visible_to()
358360

359361
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory("netstandard2.0").FullName, "HelloWorld.dll");
360362

361-
AssemblyInfo.Get(assemblyPath)["InternalsVisibleToAttribute"].Should().Be("Tests");
363+
AssemblyInfo.Get(assemblyPath).Should().Contain(("InternalsVisibleToAttribute", "Tests"));
362364
}
363365

364366
[RequiresMSBuildVersionTheory("17.0.0.32901")]
@@ -552,7 +554,7 @@ public void It_respects_out_out_of_internals_visible_to()
552554

553555
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory("netstandard2.0").FullName, "HelloWorld.dll");
554556

555-
Assert.False(AssemblyInfo.Get(assemblyPath).ContainsKey("InternalsVisibleToAttribute"));
557+
AssemblyInfo.Get(assemblyPath).Should().NotContain(i => i.Key == "InternalsVisibleToAttribute");
556558
}
557559

558560
[Fact]
@@ -578,7 +580,7 @@ public void It_includes_internals_visible_to_with_key()
578580

579581
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory("netstandard2.0").FullName, "HelloWorld.dll");
580582

581-
AssemblyInfo.Get(assemblyPath)["InternalsVisibleToAttribute"].Should().Be("Tests, PublicKey=00240000048000009400000006020000002400005253413100040000010001001d3e6bbb36e11ea61ceff6e1022b23dd779fc6230838db2d25a2c7c8433b3fcf86b16c25b281fc3db1027c0675395e7d0548e6add88b6a811962bf958101fa9e243b1618313bee11f5e3b3fefda7b1d1226311b6cc2d07e87ff893ba6890b20082df34a0aac14b605b8be055e81081a626f8c69e9ed4bbaa4eae9f94a35accd2");
583+
AssemblyInfo.Get(assemblyPath).Should().Contain(("InternalsVisibleToAttribute", "Tests, PublicKey=00240000048000009400000006020000002400005253413100040000010001001d3e6bbb36e11ea61ceff6e1022b23dd779fc6230838db2d25a2c7c8433b3fcf86b16c25b281fc3db1027c0675395e7d0548e6add88b6a811962bf958101fa9e243b1618313bee11f5e3b3fefda7b1d1226311b6cc2d07e87ff893ba6890b20082df34a0aac14b605b8be055e81081a626f8c69e9ed4bbaa4eae9f94a35accd2"));
582584
}
583585

584586
[Fact]
@@ -605,7 +607,7 @@ public void It_includes_internals_visible_to_with_project_publickey()
605607

606608
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory("netstandard2.0").FullName, "HelloWorld.dll");
607609

608-
AssemblyInfo.Get(assemblyPath)["InternalsVisibleToAttribute"].Should().Be("Tests, PublicKey=00240000048000009400000006020000002400005253413100040000010001001d3e6bbb36e11ea61ceff6e1022b23dd779fc6230838db2d25a2c7c8433b3fcf86b16c25b281fc3db1027c0675395e7d0548e6add88b6a811962bf958101fa9e243b1618313bee11f5e3b3fefda7b1d1226311b6cc2d07e87ff893ba6890b20082df34a0aac14b605b8be055e81081a626f8c69e9ed4bbaa4eae9f94a35accd2");
610+
AssemblyInfo.Get(assemblyPath).Should().Contain(("InternalsVisibleToAttribute", "Tests, PublicKey=00240000048000009400000006020000002400005253413100040000010001001d3e6bbb36e11ea61ceff6e1022b23dd779fc6230838db2d25a2c7c8433b3fcf86b16c25b281fc3db1027c0675395e7d0548e6add88b6a811962bf958101fa9e243b1618313bee11f5e3b3fefda7b1d1226311b6cc2d07e87ff893ba6890b20082df34a0aac14b605b8be055e81081a626f8c69e9ed4bbaa4eae9f94a35accd2"));
609611
}
610612

611613
[Fact]
@@ -631,11 +633,11 @@ public void It_includes_assembly_metadata()
631633

632634
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory("netstandard2.0").FullName, "HelloWorld.dll");
633635

634-
AssemblyInfo.Get(assemblyPath)["AssemblyMetadataAttribute"].Should().Be("MetadataKey:MetadataValue");
636+
AssemblyInfo.Get(assemblyPath).Should().Contain(("AssemblyMetadataAttribute", "MetadataKey:MetadataValue"));
635637
}
636638

637639
[Fact]
638-
public void It_respects_out_out_of_assembly_metadata()
640+
public void It_respects_opt_out_of_assembly_metadata()
639641
{
640642
var testAsset = _testAssetsManager
641643
.CopyTestAsset("HelloWorld")
@@ -659,7 +661,7 @@ public void It_respects_out_out_of_assembly_metadata()
659661

660662
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory("netstandard2.0").FullName, "HelloWorld.dll");
661663

662-
Assert.False(AssemblyInfo.Get(assemblyPath).ContainsKey("AssemblyMetadataAttribute"));
664+
AssemblyInfo.Get(assemblyPath).Should().NotContain(i => i.Key == "AssemblyMetadataAttribute");
663665
}
664666

665667
[Theory]
@@ -699,11 +701,11 @@ public void GenerateUserSecrets(bool referenceAspNetCore, bool referenceExtensio
699701

700702
if (shouldHaveAttribute)
701703
{
702-
AssemblyInfo.Get(assemblyPath)["UserSecretsIdAttribute"].Should().Be("SecretsIdValue");
704+
AssemblyInfo.Get(assemblyPath).Should().Contain(("UserSecretsIdAttribute", "SecretsIdValue"));
703705
}
704706
else
705707
{
706-
AssemblyInfo.Get(assemblyPath).Should().NotContainKey("SecretsIdValue");
708+
AssemblyInfo.Get(assemblyPath).Should().NotContain(i => i.Key == "SecretsIdValue");
707709
}
708710
}
709711

@@ -743,7 +745,7 @@ public void GenerateUserSecretsForTestProject()
743745

744746
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory(testTestProject.TargetFrameworks).FullName, testTestProject.Name + ".dll");
745747

746-
AssemblyInfo.Get(assemblyPath)["UserSecretsIdAttribute"].Should().Be("SecretsIdValue");
748+
AssemblyInfo.Get(assemblyPath).Should().Contain(("UserSecretsIdAttribute", "SecretsIdValue"));
747749
}
748750

749751
[Theory]
@@ -775,7 +777,7 @@ public void It_includes_repository_url(bool privateRepo)
775777

776778
var assemblyPath = Path.Combine(buildCommand.GetOutputDirectory(testProject.TargetFrameworks).FullName, testProject.Name + ".dll");
777779

778-
AssemblyInfo.Get(assemblyPath)["AssemblyMetadataAttribute"].Should().Be("RepositoryUrl:" + fakeUrl);
780+
AssemblyInfo.Get(assemblyPath).Should().Contain(("AssemblyMetadataAttribute", "RepositoryUrl:" + fakeUrl));
779781
}
780782

781783
[Theory]
@@ -804,11 +806,11 @@ public void It_does_not_write_to_undefined_assembly_metadata_attribute(string ta
804806

805807
if (containsAttribute)
806808
{
807-
AssemblyInfo.Get(assemblyPath)["AssemblyMetadataAttribute"].Should().Be("RepositoryUrl:" + fakeUrl);
809+
AssemblyInfo.Get(assemblyPath).Should().Contain(("AssemblyMetadataAttribute", "RepositoryUrl:" + fakeUrl));
808810
}
809811
else
810812
{
811-
AssemblyInfo.Get(assemblyPath).ContainsKey("AssemblyMetadataAttribute").Should().Be(false);
813+
AssemblyInfo.Get(assemblyPath).Should().NotContain(i => i.Key == "AssemblyMetadataAttribute");
812814
}
813815
}
814816

test/Microsoft.NET.Build.Tests/GivenThatWeWantToVerifyNuGetReferenceCompat.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@ public void Nuget_reference_compat(string referencerTarget, string testDescripti
4141

4242
// Process all dependencies in parallel
4343
Parallel.ForEach(
44-
rawDependencyTargets.Split(',', ';', ' ').Where(s => !string.IsNullOrWhiteSpace(s)),
44+
rawDependencyTargets.Split(',', ';', ' ').Where(s => !string.IsNullOrWhiteSpace(s)),
4545
new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount },
46-
dependencyTarget =>
46+
dependencyTarget =>
4747
{
4848
// Create the dependency project and package
4949
TestProject dependencyProject = GetTestProject(
50-
ConstantStringValues.DependencyDirectoryNamePrefix + dependencyTarget.Replace('.', '_'),
51-
dependencyTarget,
50+
ConstantStringValues.DependencyDirectoryNamePrefix + dependencyTarget.Replace('.', '_'),
51+
dependencyTarget,
5252
true);
53-
53+
5454
TestPackageReference dependencyPackageReference = new(
5555
dependencyProject.Name,
5656
"1.0.0",
@@ -208,7 +208,7 @@ public void It_chooses_lowest_netfx_in_default_atf()
208208
buildCommand.Execute().Should().Pass();
209209

210210
var referencedDll = buildCommand.GetOutputDirectory().File("net462_net472_pkg.dll").FullName;
211-
var referencedTargetFramework = AssemblyInfo.Get(referencedDll)["TargetFrameworkAttribute"];
211+
var referencedTargetFramework = AssemblyInfo.Get(referencedDll).Where(i => i.Key == "TargetFrameworkAttribute").Single().Value;
212212
referencedTargetFramework.Should().Be(".NETFramework,Version=v4.6.2");
213213
}
214214

test/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ public void IsAotCompatible_implies_enable_analyzers(string targetFramework)
593593
var assemblyPath = Path.Combine(outputDirectory, $"{projectName}.dll");
594594

595595
// injects the IsTrimmable attribute
596-
AssemblyInfo.Get(assemblyPath)["AssemblyMetadataAttribute"].Should().Be("IsTrimmable:True");
596+
AssemblyInfo.Get(assemblyPath).Should().Contain(("AssemblyMetadataAttribute", "IsTrimmable:True"));
597597

598598
var publishCommand = new PublishCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name));
599599
publishCommand

test/Microsoft.NET.Publish.Tests/GivenThatWeWantToRunILLink.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public void ILLink_runs_and_creates_linked_app(string targetFramework, bool refe
108108
}
109109

110110
// https://github.com/dotnet/sdk/issues/49665
111-
// ILLINK : Failed to load /private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/10.0.0-preview.6.25315.102/libhostpolicy.dylib, error : dlopen(/private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/10.0.0-preview.6.25315.102/libhostpolicy.dylib, 0x0001): tried: '/private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/10.0.0-preview.6.25315.102/libhostpolicy.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')),
111+
// ILLINK : Failed to load /private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/10.0.0-preview.6.25315.102/libhostpolicy.dylib, error : dlopen(/private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/10.0.0-preview.6.25315.102/libhostpolicy.dylib, 0x0001): tried: '/private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/10.0.0-preview.6.25315.102/libhostpolicy.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')),
112112
[PlatformSpecificTheory(TestPlatforms.Any & ~TestPlatforms.OSX)]
113113
[MemberData(nameof(SupportedTfms), MemberType = typeof(PublishTestUtils))]
114114
public void ILLink_links_simple_app_without_analysis_warnings_and_it_runs(string targetFramework)
@@ -599,7 +599,7 @@ public void ILLink_analysis_warnings_are_disabled_by_default(string targetFramew
599599
}
600600

601601
// https://github.com/dotnet/sdk/issues/49665
602-
// ILLINK : Failed to load /private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/7.0.0/libhostpolicy.dylib, error : dlopen(/private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/7.0.0/libhostpolicy.dylib, 0x0001): tried: '/private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/7.0.0/libhostpolicy.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')),
602+
// ILLINK : Failed to load /private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/7.0.0/libhostpolicy.dylib, error : dlopen(/private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/7.0.0/libhostpolicy.dylib, 0x0001): tried: '/private/tmp/helix/working/A452091E/p/d/shared/Microsoft.NETCore.App/7.0.0/libhostpolicy.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')),
603603
[PlatformSpecificTheory(TestPlatforms.Any & ~TestPlatforms.OSX)]
604604
[MemberData(nameof(Net6Plus), MemberType = typeof(PublishTestUtils))]
605605
public void ILLink_analysis_warnings_are_enabled_by_default(string targetFramework)
@@ -1780,7 +1780,7 @@ public void Build_respects_IsTrimmable_property(string targetFramework, bool isE
17801780
var runtimeConfigPath = Path.Combine(outputDirectory, $"{projectName}.runtimeconfig.json");
17811781

17821782
// injects the IsTrimmable attribute
1783-
AssemblyInfo.Get(assemblyPath)["AssemblyMetadataAttribute"].Should().Be("IsTrimmable:True");
1783+
AssemblyInfo.Get(assemblyPath).Should().Contain(("AssemblyMetadataAttribute", "IsTrimmable:True"));
17841784

17851785
// just setting IsTrimmable doesn't enable feature settings
17861786
// (these only affect apps, and wouldn't make sense for libraries either)
@@ -1823,7 +1823,7 @@ public void Build_respects_PublishTrimmed_property(string targetFramework)
18231823
configProperties["System.Text.Json.JsonSerializer.IsReflectionEnabledByDefault"].Value<bool>().Should().BeFalse();
18241824

18251825
// just setting PublishTrimmed doesn't inject the IsTrimmable attribute
1826-
AssemblyInfo.Get(assemblyPath).ContainsKey("AssemblyMetadataAttribute").Should().BeFalse();
1826+
AssemblyInfo.Get(assemblyPath).Should().NotContain(i => i.Key == "AssemblyMetadataAttribute");
18271827
}
18281828
}
18291829

test/Microsoft.NET.Sdk.Razor.Tests/BuildIntegrationTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ public void Build_AddsApplicationPartAttributes()
162162

163163
var assemblyPath = Path.Combine(intermediateOutputPath, "SimpleMvc.dll");
164164

165-
AssemblyInfo.Get(assemblyPath)["AssemblyTitleAttribute"].Should().Be("SimpleMvc");
166-
AssemblyInfo.Get(assemblyPath)["ProvideApplicationPartFactoryAttribute"].Should().Contain("ConsolidatedAssemblyApplicationPartFactory");
165+
AssemblyInfo.Get(assemblyPath).Should().Contain(("AssemblyTitleAttribute", "SimpleMvc"));
166+
AssemblyInfo.Get(assemblyPath).Should().Contain(("ProvideApplicationPartFactoryAttribute", "ConsolidatedAssemblyApplicationPartFactory"));
167167

168168
}
169169

test/Microsoft.NET.TestFramework/AssemblyInfo.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ public static List<string> GetParameterlessAttributes(string assemblyPath)
4646
return parameterlessAttributes;
4747
}
4848

49-
public static IDictionary<string, string> Get(string assemblyPath)
49+
public static ISet<(string Key, string Value)> Get(string assemblyPath)
5050
{
51-
var dictionary = new SortedDictionary<string, string>();
51+
var assemblyInfo = new HashSet<(string, string)>();
5252

5353
using (var stream = File.OpenRead(assemblyPath))
5454
using (var peReader = new PEReader(stream))
@@ -59,7 +59,7 @@ public static IDictionary<string, string> Get(string assemblyPath)
5959
// AssemblyVersion is not actually a custom attribute
6060
if (assemblyDefinition.Version != new Version(0, 0, 0, 0))
6161
{
62-
dictionary.Add("AssemblyVersionAttribute", assemblyDefinition.Version.ToString());
62+
assemblyInfo.Add(("AssemblyVersionAttribute", assemblyDefinition.Version.ToString()));
6363
}
6464

6565
foreach (var handle in assemblyDefinition.GetCustomAttributes())
@@ -108,12 +108,12 @@ public static IDictionary<string, string> Get(string assemblyPath)
108108

109109
if (sb != null)
110110
{
111-
dictionary.Add(name, sb.ToString());
111+
assemblyInfo.Add((name, sb.ToString()));
112112
}
113113
}
114114
}
115115

116-
return dictionary;
116+
return assemblyInfo;
117117
}
118118
}
119119
}

0 commit comments

Comments
 (0)