Skip to content
Prev Previous commit
Next Next commit
symbols
  • Loading branch information
rolfbjarne committed Mar 17, 2025
commit e663239bf952c1e204528f224d07893331246d7c
13 changes: 8 additions & 5 deletions msbuild/Xamarin.Shared/Xamarin.Shared.targets
Original file line number Diff line number Diff line change
Expand Up @@ -3256,7 +3256,10 @@ Copyright (C) 2018 Microsoft. All rights reserved.
DependsOnTargets="_ComputeAssembliesToPostprocessOnPublish"
>
<ItemGroup>
<AssembliesToPrepare Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.PostprocessAssembly)' == 'true'" />
<_AssembliesToPrepare Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.PostprocessAssembly)' == 'true'" />
<!-- We implicitly pick up PDBs next to input assemblies. We will filter these out of the publish set. -->
<__PDBToPrepare Include="@(ResolvedFileToPublish)" Exclude="@(_AssembliesToPrepare->'%(RelativeDir)%(Filename).pdb')" />
<_PDBToPrepare Include="@(ResolvedFileToPublish)" Exclude="@(__PDBToLink)" />
</ItemGroup>
<PropertyGroup>
<PreparedAssembliesDirectory>$([MSBuild]::EnsureTrailingSlash('$(DeviceSpecificIntermediateOutputPath)prepared-assemblies'))</PreparedAssembliesDirectory>
Expand All @@ -3267,20 +3270,20 @@ Copyright (C) 2018 Microsoft. All rights reserved.
<Target
Name="_PrepareAssemblies"
Condition="'$(PrepareAssemblies)' == 'true'"
Inputs="@(AssembliesToPrepare)"
Outputs="@(AssembliesToPrepare->'$(PreparedAssembliesDirectory)%(Filename)%(Extension)')"
Inputs="@(_AssembliesToPrepare)"
Outputs="@(_AssembliesToPrepare->'$(PreparedAssembliesDirectory)%(Filename)%(Extension)')"
DependsOnTargets="_PrepareAssembliesForPreparation;_ComputeAssembliesToPostprocessOnPublish"
>
<PrepareAssemblies
InputAssemblies="@(AssembliesToPrepare)"
InputAssemblies="@(_AssembliesToPrepare)"
OutputDirectory="$(PreparedAssembliesDirectory)"
TargetFrameworkMoniker="$(_ComputedTargetFrameworkMoniker)"
>
<Output TaskParameter="OutputAssemblies" ItemName="_PreparedAssemblies" />
</PrepareAssemblies>

<ItemGroup>
<ResolvedFileToPublish Remove="@(AssembliesToPrepare)" />
<ResolvedFileToPublish Remove="@(_AssembliesToPrepare)" />
<ResolvedFileToPublish Include="@(_PreparedAssemblies)" />
</ItemGroup>
</Target>
Expand Down
19 changes: 17 additions & 2 deletions tools/assembly-preparer/AssemblyPreparer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using Mono.Cecil;
using Mono.Cecil.Cil;
using Mono.Linker;
using Xamarin.Bundler;
using Xamarin.Linker.Steps;
Expand Down Expand Up @@ -48,8 +49,17 @@ public bool Prepare (out List<Exception> exceptions)

// load assemblies

var assemblyResolver = new DefaultAssemblyResolver ();
// var metadataResolver = new DefaultMetadataResolver ();

var parameters = new ReaderParameters {
AssemblyResolver = assemblyResolver,
// MetadataResolver = metadataResolver,
ReadSymbols = true,
SymbolReaderProvider = new DefaultSymbolReaderProvider (throwIfNoSymbol: false),
};
foreach (var assembly in Assemblies) {
var assemblyDefinition = AssemblyDefinition.ReadAssembly (assembly.InputPath); // FIXME: symbols
var assemblyDefinition = AssemblyDefinition.ReadAssembly (assembly.InputPath, parameters); // FIXME: symbols
linkContext.Assemblies.Add (assemblyDefinition);
assembly.Assembly = assemblyDefinition;
}
Expand All @@ -66,7 +76,12 @@ public bool Prepare (out List<Exception> exceptions)
foreach (var assembly in Assemblies) {
var assemblyDefinition = assembly.Assembly!;
Directory.CreateDirectory (Path.GetDirectoryName (assembly.OutputPath)!);
assemblyDefinition.Write (assembly.OutputPath);
var writerParameters = new WriterParameters ();
if (assemblyDefinition.MainModule.HasSymbols) {
writerParameters.WriteSymbols = true;
writerParameters.SymbolWriterProvider = new DefaultSymbolWriterProvider ();
}
assemblyDefinition.Write (assembly.OutputPath, writerParameters);
}

return true;
Expand Down