Skip to content

Commit da44b55

Browse files
committed
Allow using ThisAssembly.Resources and ThisAssembly.Strings SxS
This fixes an issue where the additional file metadata (as persisted by the generated editorconfig for that) is duplicated and overriden between these two packages since both use EmbeddedResource item to drive the source generator. Switch to per-generator item metadata and avoid using AdditionalFiles item metadata, which has this problem.
1 parent 8aafd44 commit da44b55

File tree

4 files changed

+13
-11
lines changed

4 files changed

+13
-11
lines changed

src/ThisAssembly.Resources/ResourcesGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
2222
var files = context.AdditionalTextsProvider
2323
.Combine(context.AnalyzerConfigOptionsProvider)
2424
.Where(x =>
25-
x.Right.GetOptions(x.Left).TryGetValue("build_metadata.AdditionalFiles.SourceItemType", out var itemType)
26-
&& itemType == "EmbeddedResource")
25+
x.Right.GetOptions(x.Left).TryGetValue("build_metadata.EmbeddedResource.ThisAssemblyResource", out var assemblyResource)
26+
&& bool.TryParse(assemblyResource, out var isAssemblyResource) && isAssemblyResource)
2727
.Where(x => x.Right.GetOptions(x.Left).TryGetValue("build_metadata.EmbeddedResource.Value", out var value) && value != null)
2828
.Select((x, ct) =>
2929
{

src/ThisAssembly.Resources/ThisAssembly.Resources.targets

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<ItemGroup>
1010
<CompilerVisibleProperty Include="EmbeddedResourceStringExtensions" />
1111

12-
<CompilerVisibleItemMetadata Include="AdditionalFiles" MetadataName="SourceItemType" />
12+
<CompilerVisibleItemMetadata Include="EmbeddedResource" MetadataName="ThisAssemblyResource" />
1313
<CompilerVisibleItemMetadata Include="EmbeddedResource" MetadataName="Kind" />
1414
<CompilerVisibleItemMetadata Include="EmbeddedResource" MetadataName="Comment" />
1515
<CompilerVisibleItemMetadata Include="EmbeddedResource" MetadataName="Value" />
@@ -38,7 +38,8 @@
3838
<Area>$([MSBuild]::ValueOrDefault('%(AreaPath)', '').Replace('\', '.').Replace('/', '.'))</Area>
3939
<Value>%(AreaPath)%(FileExtension)</Value>
4040
</EmbeddedResource>
41-
<AdditionalFiles Include="@(EmbeddedResource)" SourceItemType="EmbeddedResource" />
41+
<EmbeddedResource ThisAssemblyResource="true" />
42+
<AdditionalFiles Include="@(EmbeddedResource)" />
4243
</ItemGroup>
4344
</Target>
4445

src/ThisAssembly.Strings/StringsGenerator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
3333
var files = context.AdditionalTextsProvider
3434
.Combine(context.AnalyzerConfigOptionsProvider)
3535
.Where(x =>
36-
x.Right.GetOptions(x.Left).TryGetValue("build_metadata.AdditionalFiles.SourceItemType", out var itemType)
37-
&& itemType == "ResourceString")
38-
.Where(x => x.Right.GetOptions(x.Left).TryGetValue("build_metadata.AdditionalFiles.ManifestResourceName", out var value) && value != null)
36+
x.Right.GetOptions(x.Left).TryGetValue("build_metadata.ResxCode.ThisAssemblyStrings", out var resourceString)
37+
&& bool.TryParse(resourceString, out var isResourceString) && isResourceString)
38+
.Where(x => x.Right.GetOptions(x.Left).TryGetValue("build_metadata.ResxCode.ManifestResourceName", out var value) && value != null)
3939
.Select((x, ct) =>
4040
{
41-
x.Right.GetOptions(x.Left).TryGetValue("build_metadata.AdditionalFiles.ManifestResourceName", out var resourceName);
41+
x.Right.GetOptions(x.Left).TryGetValue("build_metadata.ResxCode.ManifestResourceName", out var resourceName);
4242
return (fileName: Path.GetFileName(x.Left.Path), text: x.Left.GetText(ct), resourceName!);
4343
})
4444
.Where(x => x.text != null);

src/ThisAssembly.Strings/ThisAssembly.Strings.targets

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@
1111
DependsOnTargets="PrepareResourceNames">
1212
<ItemGroup>
1313
<ResxCode Include="@(EmbeddedResource)"
14+
ThisAssemblyStrings="true"
1415
Condition="'%(EmbeddedResource.Type)' == 'Resx' And '%(EmbeddedResource.WithCulture)' != 'true' And '%(EmbeddedResource.GenerateResource)' != 'false' And '%(EmbeddedResource.ManifestResourceName)' != ''" />
15-
<AdditionalFiles Include="@(ResxCode -> '%(FullPath)')" SourceItemType="ResourceString" />
16+
<AdditionalFiles Include="@(ResxCode)" />
1617
</ItemGroup>
1718
</Target>
1819

1920
<ItemGroup>
20-
<CompilerVisibleItemMetadata Include="AdditionalFiles" MetadataName="SourceItemType" />
21-
<CompilerVisibleItemMetadata Include="AdditionalFiles" MetadataName="ManifestResourceName" />
21+
<CompilerVisibleItemMetadata Include="ResxCode" MetadataName="ThisAssemblyStrings" />
22+
<CompilerVisibleItemMetadata Include="ResxCode" MetadataName="ManifestResourceName" />
2223
</ItemGroup>
2324

2425
<Import Condition="'$(ThisAssemblyPrerequisitesImported)' != 'true'" Project="ThisAssembly.Prerequisites.targets" />

0 commit comments

Comments
 (0)