Version Used: VS 16.8 Pre 3
Steps to Reproduce:
- Add Additional items using this format:
<CompilerVisibleItemMetadata Include="AdditionalFiles" MetadataName="MyMetadata" />
<AdditionalFiles Include=".\Resources.resw" SomeMetadata="MyMetadata" />
- Try getting the metadata using:
context.AnalyzerConfigOptions.GetOptions(f)
.TryGetValue("build_metadata.AdditionalFiles.MyMetadata", out var myMetadata)
Expected Behavior:
The metadata is retreived.
Actual Behavior:
The metadata is not retreived.
Workaround
The reason for this is the fact that the GenerateMSBuildEditorConfig generates configuration using a sanitized fullpath, and the path provided in AdditionalFiles is not, causing a mismatch when the .\ is present.
Here's a workaround when adding a large number of files:
<Target Name="_CleanupRoslynAdditionalFiles" BeforeTargets="GenerateMSBuildEditorConfigFileShouldRun">
<ItemGroup>
<_AdditionalFilesCleanup Include="@(AdditionalFiles)" />
<AdditionalFiles Remove="@(_AdditionalFilesCleanup)" />
<AdditionalFiles Include="@(_AdditionalFilesCleanup->'$([System.IO.Path]::GetFullPath('%(_AdditionalFilesCleanup.Identity)'))')" />
</ItemGroup>
</Target>
Version Used: VS 16.8 Pre 3
Steps to Reproduce:
Expected Behavior:
The metadata is retreived.
Actual Behavior:
The metadata is not retreived.
Workaround
The reason for this is the fact that the
GenerateMSBuildEditorConfiggenerates configuration using a sanitized fullpath, and the path provided inAdditionalFilesis not, causing a mismatch when the.\is present.Here's a workaround when adding a large number of files: