Skip to content

Commit 08b9671

Browse files
committed
update to Roslyn 4.4.0
1 parent d8c31dd commit 08b9671

9 files changed

+68
-15
lines changed

.github/dependabot.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ updates:
1515
time: "02:00"
1616
timezone: "America/Chicago"
1717
open-pull-requests-limit: 10
18+
ignore:
19+
- dependency-name: "Microsoft.CodeAnalysis.CSharp"
1820
groups:
1921
Azure:
2022
patterns:

AssemblyMetadata.Generators.sln

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 17
3+
# 17
44
VisualStudioVersion = 17.0.31903.59
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyMetadata.Generators", "src\AssemblyMetadata.Generators\AssemblyMetadata.Generators.csproj", "{57C67863-03B3-4E43-8881-7B19A5657FE0}"
77
EndProject
88
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{1BA030F4-6549-4F95-ACEA-80E992C519BD}"
99
ProjectSection(SolutionItems) = preProject
1010
coverlet.runsettings = coverlet.runsettings
11+
.github\dependabot.yml = .github\dependabot.yml
1112
src\Directory.Build.props = src\Directory.Build.props
1213
.github\workflows\dotnet.yml = .github\workflows\dotnet.yml
1314
README.md = README.md

src/AssemblyMetadata.Generators/AssemblyMetadata.Generators.csproj

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,24 @@
22

33
<PropertyGroup>
44
<TargetFramework>netstandard2.0</TargetFramework>
5-
6-
<IsPackable>true</IsPackable>
5+
6+
<IsPackable>true</IsPackable>
77
<IsRoslynComponent>true</IsRoslynComponent>
8-
8+
99
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1010
<IncludeBuildOutput>false</IncludeBuildOutput>
1111
<NoPackageAnalysis>true</NoPackageAnalysis>
1212
<DevelopmentDependency>true</DevelopmentDependency>
1313
</PropertyGroup>
1414

1515
<ItemGroup>
16-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.3.1" PrivateAssets="all" />
16+
<!-- https://learn.microsoft.com/en-us/visualstudio/extensibility/roslyn-version-support -->
17+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="[4.4.0]" PrivateAssets="all" />
1718
</ItemGroup>
18-
19+
1920
<ItemGroup>
20-
<None Include="$(OutputPath)\AssemblyMetadata.Generators.dll" PackagePath="analyzers/dotnet/roslyn4.3/cs" Pack="true" Visible="false" />
21+
<None Include="$(OutputPath)\$(AssemblyName).dll" PackagePath="analyzers/dotnet/roslyn4.4/cs" Pack="true" Visible="false" />
22+
<None Include="$(AssemblyName).targets" PackagePath="build" Pack="true" Visible="false" />
2123
</ItemGroup>
22-
24+
2325
</Project>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<Project>
2+
<ItemGroup>
3+
<CompilerVisibleProperty Include="ThisAssemblyNamespace" />
4+
</ItemGroup>
5+
</Project>

src/AssemblyMetadata.Generators/AssemblyMetadataGenerator.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.Collections.Immutable;
12
using System.Reflection;
23
using System.Resources;
34
using System.Runtime.Versioning;
@@ -36,6 +37,7 @@ public class AssemblyMetadataGenerator : IIncrementalGenerator
3637

3738
public void Initialize(IncrementalGeneratorInitializationContext context)
3839
{
40+
3941
var provider = context.SyntaxProvider
4042
.ForAttributeWithMetadataName(
4143
fullyQualifiedMetadataName: "System.Reflection.AssemblyVersionAttribute",
@@ -50,11 +52,23 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
5052

5153
context.RegisterSourceOutput(diagnostics, ReportDiagnostic);
5254

53-
IncrementalValuesProvider<EquatableArray<AssemblyConstant>> constants = provider
55+
var constants = provider
5456
.Select(static (item, _) => item.Constants)
5557
.Where(static item => item.Count > 0);
5658

57-
context.RegisterSourceOutput(constants, GenerateOutput);
59+
var assemblyName = context.CompilationProvider
60+
.Select(static (c, _) => c.AssemblyName);
61+
62+
var thisNamespace = context.AnalyzerConfigOptionsProvider
63+
.Select(static (c, _) =>
64+
{
65+
c.GlobalOptions.TryGetValue("build_property.ThisAssemblyNamespace", out var methodName);
66+
return methodName;
67+
});
68+
69+
var options = assemblyName.Combine(thisNamespace);
70+
71+
context.RegisterSourceOutput(constants.Combine(options), GenerateOutput);
5872
}
5973

6074
private static bool SyntacticPredicate(SyntaxNode syntaxNode, CancellationToken cancellationToken)
@@ -122,9 +136,9 @@ private static void ReportDiagnostic(SourceProductionContext context, EquatableA
122136
context.ReportDiagnostic(diagnostic);
123137
}
124138

125-
private void GenerateOutput(SourceProductionContext context, EquatableArray<AssemblyConstant> constants)
139+
private void GenerateOutput(SourceProductionContext context, (EquatableArray<AssemblyConstant> constants, (string? assemblyName, string? thisNamespace) options) parameters)
126140
{
127-
var source = AssemblyMetadataWriter.Generate(constants);
141+
var source = AssemblyMetadataWriter.Generate(parameters.constants, parameters.options.assemblyName, parameters.options.thisNamespace);
128142

129143
context.AddSource("AssemblyMetadata.g.cs", source);
130144
}

src/AssemblyMetadata.Generators/AssemblyMetadataWriter.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public static class AssemblyMetadataWriter
1111
return attribute?.InformationalVersion ?? "1.0.0.0";
1212
});
1313

14-
public static string Generate(EquatableArray<AssemblyConstant> constants)
14+
public static string Generate(EquatableArray<AssemblyConstant> constants, string? assemblyName = null, string? thisNamespace = null)
1515
{
1616
if (constants == null)
1717
throw new ArgumentNullException(nameof(constants));
@@ -21,6 +21,15 @@ public static string Generate(EquatableArray<AssemblyConstant> constants)
2121
.AppendLine("// <auto-generated />")
2222
.AppendLine();
2323

24+
if (!string.IsNullOrEmpty(thisNamespace))
25+
{
26+
codeBuilder
27+
.Append("namespace ")
28+
.AppendLine(thisNamespace!)
29+
.AppendLine("{")
30+
.IncrementIndent();
31+
}
32+
2433
codeBuilder
2534
.AppendLine("/// <summary>")
2635
.AppendLine("/// Assembly attributes exposed as public constants")
@@ -41,6 +50,15 @@ public static string Generate(EquatableArray<AssemblyConstant> constants)
4150
.IncrementIndent()
4251
.AppendLine();
4352

53+
if (!string.IsNullOrEmpty(assemblyName))
54+
{
55+
codeBuilder
56+
.Append("public const string AssemblyName = \"")
57+
.Append(assemblyName)
58+
.AppendLine("\";")
59+
.AppendLine();
60+
}
61+
4462
foreach (var constant in constants)
4563
{
4664
var name = SafeName(constant.Name);
@@ -58,6 +76,13 @@ public static string Generate(EquatableArray<AssemblyConstant> constants)
5876
.DecrementIndent()
5977
.AppendLine("}"); // class
6078

79+
if (!string.IsNullOrEmpty(thisNamespace))
80+
{
81+
codeBuilder
82+
.DecrementIndent()
83+
.AppendLine("}"); // namespace
84+
}
85+
6186
return codeBuilder.ToString();
6287
}
6388

test/AssemblyMetadata.Generators.Tests/AssemblyMetadata.Generators.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<PropertyGroup>
3333
<MinVerTagPrefix>v</MinVerTagPrefix>
3434
</PropertyGroup>
35-
35+
3636
<ItemGroup>
3737
<PackageReference Include="coverlet.collector" Version="6.0.2">
3838
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -43,7 +43,7 @@
4343
<PrivateAssets>all</PrivateAssets>
4444
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
4545
</PackageReference>
46-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.9.2" />
46+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="[4.4.0]" />
4747
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
4848
<PackageReference Include="MinVer" Version="5.0.0" PrivateAssets="All" />
4949
<PackageReference Include="Verify.Xunit" Version="25.3.0" />

test/AssemblyMetadata.Generators.Tests/Snapshots/GeneratorTests.GenerateAssemblyMetadataGeneratorsTests.verified.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
internal static partial class ThisAssembly
99
{
1010

11+
public const string AssemblyName = "Test.Generator";
12+
1113
public const string HardKey = "HardValue";
1214

1315
public const string VerifyTargetFrameworks = "";

test/AssemblyMetadata.Generators.Tests/Snapshots/GeneratorTests.GenerateMicrosoftCSharp.verified.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
internal static partial class ThisAssembly
99
{
1010

11+
public const string AssemblyName = "Test.Generator";
12+
1113
public const string TargetFramework = ".NETCoreApp,Version=v8.0";
1214

1315
public const string Serviceable = "True";

0 commit comments

Comments
 (0)