Skip to content

Commit

Permalink
fix" MSB4120: definition within target references itself (#38)
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonCropp authored May 25, 2023
1 parent eaf06c0 commit ab38abe
Show file tree
Hide file tree
Showing 8 changed files with 21 additions and 29 deletions.
9 changes: 5 additions & 4 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,16 @@ Works around [symbols not being copied from references](https://github.com/dotne
AfterTargets="ResolveAssemblyReferences"
Condition="@(ReferenceCopyLocalPaths) != ''">
<ItemGroup>
<ReferenceCopyLocalPaths
<PdbFilesToAdd
Include="%(ReferenceCopyLocalPaths.RelativeDir)%(ReferenceCopyLocalPaths.Filename).pdb"
DestinationSubDirectory="%(ReferenceCopyLocalPaths.DestinationSubDirectory)" />
<ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)"
Condition="!Exists('%(FullPath)')" />
<PdbFilesToAdd Remove="@(PdbFilesToAdd)"
Condition="!Exists('%(FullPath)')" />
<ReferenceCopyLocalPaths Include="@(PdbFilesToAdd)" />
</ItemGroup>
</Target>
```
<sup><a href='/src/Cymbal/build/Cymbal.targets#L19-L31' title='Snippet source file'>snippet source</a> | <a href='#snippet-includesymbolfromreferences' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Cymbal/build/Cymbal.targets#L19-L32' title='Snippet source file'>snippet source</a> | <a href='#snippet-includesymbolfromreferences' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

This is done at Build time.
Expand Down
19 changes: 10 additions & 9 deletions src/Cymbal/build/Cymbal.targets
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,29 @@
</PropertyGroup>

<UsingTask
TaskName="CymbalTask"
AssemblyFile="$(CymbalAssembly)" />
TaskName="CymbalTask"
AssemblyFile="$(CymbalAssembly)" />
<Target
Name="CymbalTarget"
AfterTargets="Publish" >
Name="CymbalTarget"
AfterTargets="Publish" >
<CymbalTask PublishDirectory="$(PublishDir)"
CacheDirectory="$(CymbalCacheDirectory)"
SymbolServers="@(SymbolServer)"/>
<Message Text="@(TargetOutputs,'%0a')"
Importance="high" />
</Target>
<!-- begin-snippet: IncludeSymbolFromReferences-->
<!-- begin-snippet: IncludeSymbolFromReferences-->
<Target Name="IncludeSymbolFromReferences"
AfterTargets="ResolveAssemblyReferences"
Condition="@(ReferenceCopyLocalPaths) != ''">
<ItemGroup>
<ReferenceCopyLocalPaths
<PdbFilesToAdd
Include="%(ReferenceCopyLocalPaths.RelativeDir)%(ReferenceCopyLocalPaths.Filename).pdb"
DestinationSubDirectory="%(ReferenceCopyLocalPaths.DestinationSubDirectory)" />
<ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)"
Condition="!Exists('%(FullPath)')" />
<PdbFilesToAdd Remove="@(PdbFilesToAdd)"
Condition="!Exists('%(FullPath)')" />
<ReferenceCopyLocalPaths Include="@(PdbFilesToAdd)" />
</ItemGroup>
</Target>
<!-- end-snippet -->
<!-- end-snippet -->
</Project>
2 changes: 1 addition & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project>
<PropertyGroup>
<Version>1.2.0</Version>
<Version>1.2.1</Version>
<SolutionDir>$(ProjectDir)..\</SolutionDir>
<SignAssembly>false</SignAssembly>
<ImplicitUsings>enable</ImplicitUsings>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
{
buildOutput:
1>Project "{SolutionDirectory}SampleApp/SampleApp.csproj" on node 1 (Publish target(s)).
1>IncludeSymbolFromReferences:
{SolutionDirectory}Cymbal/build/Cymbal.targets(26,14): message : MSB4120: Item 'ReferenceCopyLocalPaths' definition within target references itself via (qualified or unqualified) metadatum 'DestinationSubDirectory'. This can lead to unintended expansion and cross-applying of pre-existing items. More info: https://aka.ms/msbuild/metadata-self-ref [{SolutionDirectory}SampleApp/SampleApp.csproj]
PrepareForPublish:
1>PrepareForPublish:
_CopyResolvedFilesToPublishPreserveNewest:
_CopyResolvedFilesToPublishAlways:
Publish:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
{
buildOutput:
1>Project "{SolutionDirectory}SampleApp/SampleApp.csproj" on node 1 (Publish target(s)).
1>IncludeSymbolFromReferences:
{SolutionDirectory}Cymbal/build/Cymbal.targets(26,14): message : MSB4120: Item 'ReferenceCopyLocalPaths' definition within target references itself via (qualified or unqualified) metadatum 'DestinationSubDirectory'. This can lead to unintended expansion and cross-applying of pre-existing items. More info: https://aka.ms/msbuild/metadata-self-ref [{SolutionDirectory}SampleApp/SampleApp.csproj]
PrepareForPublish:
1>PrepareForPublish:
_CopyResolvedFilesToPublishPreserveNewest:
_CopyResolvedFilesToPublishAlways:
Publish:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
{
buildOutput:
1>Project "{SolutionDirectory}SampleApp/SampleApp.csproj" on node 1 (Publish target(s)).
1>IncludeSymbolFromReferences:
{SolutionDirectory}Cymbal/build/Cymbal.targets(26,14): message : MSB4120: Item 'ReferenceCopyLocalPaths' definition within target references itself via (qualified or unqualified) metadatum 'DestinationSubDirectory'. This can lead to unintended expansion and cross-applying of pre-existing items. More info: https://aka.ms/msbuild/metadata-self-ref [{SolutionDirectory}SampleApp/SampleApp.csproj]
PrepareForPublish:
1>PrepareForPublish:
_CopyResolvedFilesToPublishPreserveNewest:
_CopyResolvedFilesToPublishAlways:
Publish:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
{
buildOutput:
1>Project "{SolutionDirectory}SampleApp/SampleApp.csproj" on node 1 (Publish target(s)).
1>IncludeSymbolFromReferences:
{SolutionDirectory}Cymbal/build/Cymbal.targets(26,14): message : MSB4120: Item 'ReferenceCopyLocalPaths' definition within target references itself via (qualified or unqualified) metadatum 'DestinationSubDirectory'. This can lead to unintended expansion and cross-applying of pre-existing items. More info: https://aka.ms/msbuild/metadata-self-ref [{SolutionDirectory}SampleApp/SampleApp.csproj]
PrepareForPublish:
1>PrepareForPublish:
_CopyResolvedFilesToPublishPreserveNewest:
_CopyResolvedFilesToPublishAlways:
Publish:
Expand Down
4 changes: 1 addition & 3 deletions src/Tests/Tests.Should_Parse_SymbolServer.verified.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
{
buildOutput:
1>Project "{SolutionDirectory}SampleWithSymbolServer/SampleWithSymbolServer.csproj" on node 1 (Publish target(s)).
1>IncludeSymbolFromReferences:
{SolutionDirectory}Cymbal/build/Cymbal.targets(26,14): message : MSB4120: Item 'ReferenceCopyLocalPaths' definition within target references itself via (qualified or unqualified) metadatum 'DestinationSubDirectory'. This can lead to unintended expansion and cross-applying of pre-existing items. More info: https://aka.ms/msbuild/metadata-self-ref [{SolutionDirectory}SampleWithSymbolServer/SampleWithSymbolServer.csproj]
PrepareForPublish:
1>PrepareForPublish:
_CopyResolvedFilesToPublishPreserveNewest:
_CopyResolvedFilesToPublishAlways:
Publish:
Expand Down

0 comments on commit ab38abe

Please sign in to comment.