Skip to content

Commit 2b78673

Browse files
committed
More tries to support .dSYM
Treat .dSYM bundle as set of files. There are places where this doesn't work very well, such as in src/installer/pkg/projects/Directory.Build.targets, where the `GetSymbolPackageFiles` target is trying to construct a set of debug files to package, while also giving them a TargetPath property. I haven't been able to figure out how to get MSBuild to do my bidding in creating the right paths.
1 parent b4471be commit 2b78673

11 files changed

+68
-47
lines changed

eng/liveBuilds.targets

+10-16
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424

2525
<!-- Set up artifact subpaths. -->
2626
<PropertyGroup>
27+
<CoreCLRArtifactsPdbDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'PDB'))</CoreCLRArtifactsPdbDir>
2728
<CoreCLRSharedFrameworkDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'sharedFramework'))</CoreCLRSharedFrameworkDir>
29+
<CoreCLRSharedFrameworkPdbDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRSharedFrameworkDir)', 'PDB'))</CoreCLRSharedFrameworkPdbDir>
2830
<CoreCLRILCompilerDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'ilc-published'))</CoreCLRILCompilerDir>
2931
<CoreCLRCrossILCompilerDir Condition="'$(CrossBuild)' == 'true' or '$(BuildArchitecture)' != '$(TargetArchitecture)' or '$(HostOS)' != '$(TargetOS)' or '$(EnableNativeSanitizers)' != ''">$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', '$(BuildArchitecture)', 'ilc'))</CoreCLRCrossILCompilerDir>
3032
<CoreCLRAotSdkDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)', 'aotsdk'))</CoreCLRAotSdkDir>
@@ -67,22 +69,10 @@
6769
Text="The Mono artifacts path does not exist '$(MonoArtifactsPath)'. The 'mono' subset must be built before building this project. Configuration: '$(MonoConfiguration)'. To use a different configuration, specify the 'RuntimeConfiguration' property." />
6870

6971
<PropertyGroup Condition="'$(RuntimeFlavor)' == 'CoreCLR'">
70-
<CoreCLRArtifactsPath>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)'))</CoreCLRArtifactsPath>
71-
<CoreCLRArtifactsPdbDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)','PDB'))</CoreCLRArtifactsPdbDir>
72-
<!--
73-
Even though CoreCLRSharedFrameworkDir is statically initialized, set it again in case the
74-
value is different after CoreCLRArtifactsPath is normalized.
75-
-->
76-
<CoreCLRSharedFrameworkDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)','sharedFramework'))</CoreCLRSharedFrameworkDir>
77-
<CoreCLRSharedFrameworkPdbDir>$([MSBuild]::NormalizeDirectory('$(CoreCLRSharedFrameworkDir)','PDB'))</CoreCLRSharedFrameworkPdbDir>
7872
<CoreCLRCrossTargetComponentDir
7973
Condition="'$(CoreCLRCrossTargetComponentDirName)' != ''">$([MSBuild]::NormalizeDirectory('$(CoreCLRArtifactsPath)','$(CoreCLRCrossTargetComponentDirName)','sharedFramework'))</CoreCLRCrossTargetComponentDir>
8074
</PropertyGroup>
8175

82-
<PropertyGroup Condition="'$(RuntimeFlavor)' == 'Mono'">
83-
<MonoArtifactsPath>$([MSBuild]::NormalizeDirectory('$(MonoArtifactsPath)'))</MonoArtifactsPath>
84-
</PropertyGroup>
85-
8676
<ItemGroup Condition="'$(BuildNativeAOTRuntimePack)' == 'true'">
8777
<_nativeAotRuntimeFiles Include="$(CoreCLRAotSdkDir)*" />
8878
<RuntimeFiles Include="@(_nativeAotRuntimeFiles)" Condition="'%(Extension)' != '.xml'">
@@ -97,18 +87,22 @@
9787
<RuntimeFiles>
9888
<IsNative>true</IsNative>
9989
</RuntimeFiles>
90+
91+
<!-- Include System.Private.CoreLib.dll if it exists; get the one in the 'IL' subdirectory if the one in the root directory is missing. -->
10092
<_systemPrivateCoreLib Include="$(CoreCLRArtifactsPath)System.Private.CoreLib.dll"
10193
Condition="Exists('$(CoreCLRArtifactsPath)System.Private.CoreLib.dll')" />
10294
<_systemPrivateCoreLib Include="$(CoreCLRArtifactsPath)IL/System.Private.CoreLib.dll"
10395
Condition="Exists('$(CoreCLRArtifactsPath)IL/System.Private.CoreLib.dll') and '@(_systemPrivateCoreLib)' == ''" />
10496
<RuntimeFiles Include="@(_systemPrivateCoreLib)" />
97+
98+
<!-- Include debugging symbols -->
10599
<RuntimeFiles
106100
Include="
107101
$(CoreCLRSharedFrameworkPdbDir)*.pdb;
108102
$(CoreCLRSharedFrameworkPdbDir)*.dbg;
109103
$(CoreCLRSharedFrameworkPdbDir)*.dwarf;
110-
$(CoreCLRSharedFrameworkPdbDir)*.dSYM"
111-
IsNative="true" />
104+
$(CoreCLRSharedFrameworkPdbDir)*.dSYM/**"
105+
IsNative="true" />
112106
<RuntimeFiles Condition="Exists('$(CoreCLRArtifactsPdbDir)System.Private.CoreLib.pdb')"
113107
Include="$(CoreCLRArtifactsPdbDir)System.Private.CoreLib.pdb" />
114108
<RuntimeFiles Condition="Exists('$(CoreCLRArtifactsPdbDir)System.Private.CoreLib.ni.pdb')"
@@ -119,7 +113,7 @@
119113
$(CoreCLRSharedFrameworkPdbDir)*.pdb;
120114
$(CoreCLRSharedFrameworkPdbDir)*.dbg;
121115
$(CoreCLRSharedFrameworkPdbDir)*.dwarf;
122-
$(CoreCLRSharedFrameworkPdbDir)*.dSYM" />
116+
$(CoreCLRSharedFrameworkPdbDir)*.dSYM/**" />
123117

124118
<CoreCLRCrossTargetFiles>
125119
<TargetPath>runtime/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)/native</TargetPath>
@@ -195,7 +189,7 @@
195189
$(LibrariesNativeArtifactsPath)*.so;
196190
$(LibrariesNativeArtifactsPath)*.dbg;
197191
$(LibrariesNativeArtifactsPath)*.dwarf;
198-
$(LibrariesNativeArtifactsPath)*.dSYM;
192+
$(LibrariesNativeArtifactsPath)*.dSYM/**;
199193
$(LibrariesNativeArtifactsPath)*.pdb"
200194
IsNative="true"
201195
Exclude="@(ExcludeNativeLibrariesRuntimeFiles)" />

eng/native/functions.cmake

-2
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,6 @@ endfunction()
369369
function (get_symbol_file_name targetName outputSymbolFilename)
370370
if (CLR_CMAKE_HOST_UNIX)
371371
if (CLR_CMAKE_TARGET_APPLE)
372-
# set(strip_destination_file $<TARGET_FILE:${targetName}>.dwarf)
373372
set(strip_destination_file $<TARGET_FILE:${targetName}>.dSYM)
374373
else ()
375374
set(strip_destination_file $<TARGET_FILE:${targetName}>.dbg)
@@ -417,7 +416,6 @@ function(strip_symbols targetName outputFilename)
417416
OUTPUT_VARIABLE DSYMUTIL_HELP_OUTPUT
418417
)
419418

420-
# set(DSYMUTIL_OPTS "--flat")
421419
set(DSYMUTIL_OPTS "")
422420
if ("${DSYMUTIL_HELP_OUTPUT}" MATCHES "--minimize")
423421
list(APPEND DSYMUTIL_OPTS "--minimize")

eng/native/naming.props

+8-2
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,18 @@
1111
<LibSuffix>.dll</LibSuffix>
1212
<StaticLibSuffix>.lib</StaticLibSuffix>
1313
<SymbolsSuffix>.pdb</SymbolsSuffix>
14+
<SymbolsSuffixPath>.pdb</SymbolsSuffixPath>
15+
<SymbolsIsDirectory>false</SymbolsIsDirectory>
1416
</PropertyGroup>
1517
</When>
1618
<When Condition="$(PackageRID.StartsWith('osx')) or $(PackageRID.StartsWith('maccatalyst')) or $(PackageRID.StartsWith('ios')) or $(PackageRID.StartsWith('tvos'))">
1719
<PropertyGroup>
1820
<LibPrefix>lib</LibPrefix>
1921
<LibSuffix>.dylib</LibSuffix>
2022
<StaticLibSuffix>.a</StaticLibSuffix>
21-
<!-- <SymbolsSuffix>.dwarf</SymbolsSuffix> -->
2223
<SymbolsSuffix>.dSYM</SymbolsSuffix>
24+
<SymbolsSuffixPath>.dSYM/**</SymbolsSuffixPath>
25+
<SymbolsIsDirectory>true</SymbolsIsDirectory>
2326
</PropertyGroup>
2427
</When>
2528
<Otherwise>
@@ -28,12 +31,15 @@
2831
<LibSuffix>.so</LibSuffix>
2932
<StaticLibSuffix>.a</StaticLibSuffix>
3033
<SymbolsSuffix>.dbg</SymbolsSuffix>
34+
<SymbolsSuffixPath>.dbg</SymbolsSuffixPath>
35+
<SymbolsIsDirectory>false</SymbolsIsDirectory>
3136
</PropertyGroup>
3237
</Otherwise>
3338
</Choose>
3439

3540
<ItemGroup>
36-
<AdditionalLibPackageExcludes Condition="'$(SymbolsSuffix)' != ''" Include="%2A%2A\%2A$(SymbolsSuffix)" />
41+
<!-- %2A is * so below is "**\*.pdb" for example -->
42+
<AdditionalLibPackageExcludes Condition="'$(SymbolsSuffixPath)' != ''" Include="%2A%2A\%2A$(SymbolsSuffixPath)" />
3743
<AdditionalSymbolPackageExcludes Condition="'$(LibSuffix)' != ''" Include="%2A%2A\%2A.a;%2A%2A\%2A$(LibSuffix)" />
3844
</ItemGroup>
3945

src/coreclr/tools/aot/crossgen2/crossgen2_publish.csproj

-3
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,6 @@
5151
<IlcFrameworkPath>$(MicrosoftNetCoreAppRuntimePackRidLibTfmDir)</IlcFrameworkPath>
5252
<IlcFrameworkNativePath>$(MicrosoftNetCoreAppRuntimePackNativeDir)</IlcFrameworkNativePath>
5353
<TrimmerSingleWarn>false</TrimmerSingleWarn>
54-
<!-- Use .dwarf files instead of .dsym files since our symbol exporting may not safely handle folders. -->
55-
<!-- <NativeSymbolExt Condition="'$(_IsApplePlatform)' == 'true'">.dwarf</NativeSymbolExt> -->
56-
<!-- <DsymUtilOptions Condition="'$(_IsApplePlatform)' == 'true'">--flat</DsymUtilOptions> -->
5754
</PropertyGroup>
5855

5956
<ItemGroup Condition="'$(NativeAotSupported)' == 'true'">

src/installer/pkg/archives/dotnet-nethost.proj

+9-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,15 @@
3434
Condition="'$(TargetsWindows)' == 'true'"
3535
DestinationFolder="$(SymbolsOutputPath)" />
3636
<Copy SourceFiles="$(DotNetHostBinDir)\$(LibPrefix)nethost$(LibSuffix)$(SymbolsSuffix)"
37-
Condition="'$(TargetsWindows)' != 'true'"
37+
Condition="('$(TargetsWindows)' != 'true') and ('$(SymbolsIsDirectory)' != 'true')"
3838
DestinationFolder="$(SymbolsOutputPath)" />
39+
40+
<!-- Do some magic to tree copy the symbols if they represent a directory instead of a file (e.g., .dSYM) -->
41+
<ItemGroup Condition="('$(TargetsWindows)' != 'true') and ('$(SymbolsIsDirectory)' == 'true')">
42+
<RecursiveSourceFiles Include="$(DotNetHostBinDir)\$(LibPrefix)nethost$(LibSuffix)$(SymbolsSuffix)/**/*"/>
43+
</ItemGroup>
44+
<Copy SourceFiles="@(RecursiveSourceFiles)"
45+
Condition="('$(TargetsWindows)' != 'true') and ('$(SymbolsIsDirectory)' == 'true')"
46+
DestinationFolder="$(SymbolsOutputPath)/%(RecursiveDir)" />
3947
</Target>
4048
</Project>

src/installer/pkg/projects/Directory.Build.targets

+3-4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
<!--
1111
Explicitly re-set the symbol package output path. The pkgproj files here end up importing the targets from
12-
Microsoft.DotNet.Build.Tasks.Packaging (based on a PackageReference) before importing the Arcade targets hat
13-
set defaults for project output paths. This means the value set by the packaging targets does not accountfor
12+
Microsoft.DotNet.Build.Tasks.Packaging (based on a PackageReference) before importing the Arcade targets that
13+
set defaults for project output paths. This means the value set by the packaging targets does not account for
1414
the updated defaults from the Arcade targets.
1515
-->
1616
<SymbolPackageOutputPath>$(PackageOutputPath)</SymbolPackageOutputPath>
@@ -95,8 +95,7 @@
9595
-->
9696
<NonWindowsNativeFile Include="@(NativeWithSymbolFile)"
9797
Exclude="@(WindowsNativeFile)" />
98-
99-
<NonWindowsSymbolFile Include="@(NonWindowsNativeFile -> '%(Identity)$(SymbolsSuffix)')" />
98+
<NonWindowsSymbolFile Include="@(NonWindowsNativeFile -> '%(Identity)$(SymbolsSuffix)')</NonWindowsSymbolFile>
10099
101100
<ExistingWindowsSymbolFile Include="@(WindowsSymbolFile)" Condition="Exists('%(Identity)')" />
102101
<ExistingNonWindowsSymbolFile Include="@(NonWindowsSymbolFile)" Condition="Exists('%(Identity)') AND '$(SkipPackagingXplatSymbols)'!='true'" />

src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Crossgen2.sfxproj

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
<_Crossgen2SymbolFilesToPackage Include="@(_CrossgenPublishFiles)" Condition="'%(Extension)' == '.pdb'" />
7474
<!-- Symbol files for JIT libraries are placed in a different location for Windows builds -->
7575
<_Crossgen2SymbolFilesToPackage Include="@(NativeRuntimeAsset->'$(CoreCLRArtifactsPdbDir)%(FileName).pdb')" Condition="'$(TargetOS)' == 'windows' and '%(FileName)' != 'crossgen2'" />
76+
<!-- TODO: handle .dSYM -->
7677
<_Crossgen2SymbolFilesToPackage Include="@(NativeRuntimeAsset->'$(CoreCLRArtifactsPath)%(FileName)%(Extension)$(SymbolsSuffix)')" Condition="'$(TargetOS)' != 'windows' and '%(FileName)' != 'crossgen2'" />
7778
<_Crossgen2SymbolFilesToPackage Remove="@(_Crossgen2SymbolFilesToPackage)" Condition="!Exists('%(Identity)')" />
7879

src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Host.sfxproj

+16-18
Original file line numberDiff line numberDiff line change
@@ -47,25 +47,23 @@
4747
<NativeRuntimeAsset Include="@(_SymbolsToIncludeAlways)" IncludeAlways="true" />
4848
</ItemGroup>
4949

50-
<ItemGroup>
51-
<_SymbolFiles Condition="'$(TargetOS)' == 'windows'"
52-
Include="@(NativeRuntimeAsset->'%(RootDir)%(Directory)PDB/%(Filename).pdb')"
53-
IsSymbolFile="true"
54-
IsNative="true" />
55-
<_SymbolFiles Condition="'$(TargetOS)' != 'windows'"
56-
Include="@(NativeRuntimeAsset->'%(RootDir)%(Directory)%(Filename)%(Extension)$(SymbolsSuffix)')"
57-
IsSymbolFile="true"
58-
IsNative="true" />
59-
50+
<ItemGroup Condition="'$(TargetOS)' == 'windows'">
51+
<_SymbolFilesBase Condition="'$(TargetOS)' == 'windows'"
52+
Include="@(NativeRuntimeAsset->'%(RootDir)%(Directory)PDB/%(Filename).pdb')" />
53+
<_SymbolFilesBase Condition="'$(TargetOS)' != 'windows'"
54+
Include="@(NativeRuntimeAsset->'%(RootDir)%(Directory)%(Filename)%(Extension)$(SymbolsSuffixPath)')" />
55+
6056
<!-- dotnet doesn't have its own package, so it uses this one as a means to publish to symbol servers -->
61-
<_SymbolFiles Condition="'$(TargetOS)' == 'windows'"
62-
Include="$(DotNetHostBinDir)PDB/dotnet.pdb"
63-
IsSymbolFile="true"
64-
IsNative="true" />
65-
<_SymbolFiles Condition="'$(TargetOS)' != 'windows'"
66-
Include="$(DotNetHostBinDir)dotnet$(ExeSuffix)$(SymbolsSuffix)"
67-
IsSymbolFile="true"
68-
IsNative="true" />
57+
<_SymbolFilesBase Condition="'$(TargetOS)' == 'windows'"
58+
Include="$(DotNetHostBinDir)PDB/dotnet.pdb" />
59+
<_SymbolFilesBase Condition="'$(TargetOS)' != 'windows'"
60+
Include="$(DotNetHostBinDir)dotnet$(ExeSuffix)$(SymbolsSuffixPath)" />
61+
</ItemGroup>
62+
63+
<ItemGroup>
64+
<_SymbolFiles Include="@(_SymbolFilesBase)"
65+
IsSymbolFile="true"
66+
IsNative="true" />
6967

7068
<!-- Remove symbols that are explicitly shipped with implementation package -->
7169
<_SymbolFiles Remove="@(_SymbolsToIncludeAlways)" />

src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.props

+19-1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
<_HostFiles Include="$(DotNetHostBinDir)/$(LibPrefix)hostfxr$(LibSuffix)" PackOnly="true" />
7373
<NativeRuntimeAsset Include="@(_HostFiles)" />
7474

75+
<!-- TODO: handle .dSYM -->
7576
<_HostSymbolFiles Include="@(_HostFiles->'%(RootDir)%(Directory)PDB/%(Filename)$(SymbolsSuffix)')" Condition="'$(TargetOS)' == 'windows'" />
7677
<_HostSymbolFiles Include="@(_HostFiles->'%(RootDir)%(Directory)%(Filename)%(Extension)$(SymbolsSuffix)')" Condition="'$(TargetOS)' != 'windows'" />
7778
<_SymbolFilesToPackage Include="@(_HostSymbolFiles->Exists())" IsNative="true" />
@@ -80,9 +81,12 @@
8081
<Target Name="AddRuntimeFilesToPackage" DependsOnTargets="ResolveRuntimeFilesFromLocalBuild">
8182
<ItemGroup>
8283
<RuntimeFiles Condition="'%(RuntimeFiles.IsNative)' == 'true'">
83-
<TargetPath>runtimes/$(RuntimeIdentifier)/native</TargetPath>
84+
<TargetPath>runtimes/$(RuntimeIdentifier)/native/%(RecursiveDir)</TargetPath>
8485
</RuntimeFiles>
8586
</ItemGroup>
87+
<Message Text="RuntimeFiles START =====================================================================================" Importance="High"/>
88+
<Message Text="RuntimeFiles %(Identity) RecursiveDir: %(RuntimeFiles.RecursiveDir) TargetPath: %(RuntimeFiles.TargetPath)" Importance="High"/>
89+
<Message Text="RuntimeFiles END =====================================================================================" Importance="High"/>
8690
<ItemGroup Condition="'$(BuildNativeAOTRuntimePack)' != 'true'">
8791
<RuntimeFiles Condition="'%(FileName)' == 'crossgen'">
8892
<TargetPath>tools</TargetPath>
@@ -121,11 +125,25 @@
121125
<CoreCLRCrossTargetFiles Condition="'%(FileName)%(Extension)' == 'mscordbi.dll' and '$(TargetsWindows)' == 'true'">
122126
<TargetPath>tools/$(CoreCLRCrossTargetComponentDirName)_$(TargetArchitecture)</TargetPath>
123127
</CoreCLRCrossTargetFiles>
128+
124129
<CoreCLROptimizationFiles Include="$(CoreCLRArtifactsPath)StandardOptimizationData.mibc"
125130
Condition="Exists('$(CoreCLRArtifactsPath)StandardOptimizationData.mibc')">
126131
<TargetPath>tools</TargetPath>
127132
</CoreCLROptimizationFiles>
128133
</ItemGroup>
134+
135+
<Message Text="RuntimeFiles START =====================================================================================" Importance="High"/>
136+
<Message Text="RuntimeFiles %(Identity) RecursiveDir: %(RuntimeFiles.RecursiveDir) TargetPath: %(RuntimeFiles.TargetPath)" Importance="High"/>
137+
<Message Text="RuntimeFiles END =====================================================================================" Importance="High"/>
138+
139+
<Message Text="CoreCLRCrossTargetFiles START =====================================================================================" Importance="High"/>
140+
<Message Text="CoreCLRCrossTargetFiles %(Identity) RecursiveDir: %(CoreCLRCrossTargetFiles.RecursiveDir) TargetPath: %(CoreCLRCrossTargetFiles.TargetPath)" Importance="High"/>
141+
<Message Text="CoreCLRCrossTargetFiles END =====================================================================================" Importance="High"/>
142+
143+
<Message Text="CoreCLROptimizationFiles START =====================================================================================" Importance="High"/>
144+
<Message Text="CoreCLROptimizationFiles %(Identity) RecursiveDir: %(CoreCLROptimizationFiles.RecursiveDir) TargetPath: %(CoreCLROptimizationFiles.TargetPath)" Importance="High"/>
145+
<Message Text="CoreCLROptimizationFiles END =====================================================================================" Importance="High"/>
146+
129147
<ItemGroup>
130148
<ReferenceCopyLocalPaths Include="@(RuntimeFiles);@(CoreCLRCrossTargetFiles);@(CoreCLROptimizationFiles)" />
131149
</ItemGroup>

src/installer/pkg/sfx/installers/dotnet-host.proj

+1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
Condition="'$(TargetOS)' == 'windows'"
7676
DestinationFolder="$(SymbolsOutputPath)" />
7777

78+
<!-- TODO: handle .dSYM -->
7879
<Copy SourceFiles="$(DotNetHostBinDir)\dotnet$(SymbolsSuffix)"
7980
Condition="'$(TargetOS)' != 'windows'"
8081
DestinationFolder="$(SymbolsOutputPath)" />

src/installer/pkg/sfx/installers/dotnet-hostfxr.proj

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
Condition="'$(TargetOS)' == 'windows'"
3535
DestinationFolder="$(SymbolsOutputPath)" />
3636

37+
<!-- TODO: handle .dSYM -->
3738
<Copy SourceFiles="$(DotNetHostBinDir)\$(LibPrefix)hostfxr$(LibSuffix)$(SymbolsSuffix)"
3839
Condition="'$(TargetOS)' != 'windows'"
3940
DestinationFolder="$(SymbolsOutputPath)" />

0 commit comments

Comments
 (0)