Skip to content

Commit 0e0da79

Browse files
committed
[assembly-preparer] Create a new tool to eventually replace custom linker steps.
🚧 Very early draft, no reviewing necessary 🚧 Create an 'assembly-preparer' tool which will do what the existing custom linker steps will do, and add all the scaffolding around it: * Add a new _PrepareAssembly target and a PrepareAssemblies task that calls the new tool. * Add a unit test project, which is able to run tests directly using the new tool (and not necessarily through the new MSBuild target/task, to speed up execution and make debugging *much* easier). * Add the new unit test project to xharness [PENDING]. * Make the new tool do one thing the custom linker steps currently do: preserve block code handlers. Add corresponding tests as well. * Add an opt-in .NET unit test to check the speed of using (and not using) our new assembly preparing logic. Currently the monotouch-test project is slightly faster (which doesn't make much sense, but 🤷), and the MySimpleApp is ever so slightly slower.
1 parent 8077420 commit 0e0da79

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1232
-96
lines changed

Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<NUnitPackageVersion>4.4.0</NUnitPackageVersion>
1212
<NUnitConsoleRunnerPackageVersion>3.22.0</NUnitConsoleRunnerPackageVersion>
1313
<NUnit3TestAdapterPackageVersion>6.1.0</NUnit3TestAdapterPackageVersion>
14+
<NUnitAnalyzersPackageVersion>4.11.2</NUnitAnalyzersPackageVersion>
1415
<NUnitXmlTestLoggerPackageVersion>3.1.15</NUnitXmlTestLoggerPackageVersion>
1516
<MicrosoftNETTestSdkPackageVersion>18.0.1</MicrosoftNETTestSdkPackageVersion>
1617
<!-- Fix transient dependency issue found by component governance 4.7.0 -> 4.7.2 brought by Microsoft.Build package -->

builds/mono-ios-sdk-destdir/ios-sources/external/linker/src/linker/Linker/MethodDefinitionExtensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using Mono.Cecil;
22

3+
#nullable disable
4+
35
namespace Mono.Linker {
46
public static class MethodDefinitionExtensions {
57
public static bool IsDefaultConstructor (this MethodDefinition method)

builds/mono-ios-sdk-destdir/ios-sources/external/linker/src/tuner/Mono.Tuner/CecilRocks.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
using Mono.Cecil;
3434
using Mono.Cecil.Cil;
3535

36+
#nullable disable
37+
3638
namespace Mono.Tuner {
3739

3840
public static class MethodBodyRocks {

builds/mono-ios-sdk-destdir/ios-sources/external/linker/src/tuner/Mono.Tuner/Extensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
using Mono.Linker;
77

8+
#nullable disable
9+
810
namespace Mono.Tuner {
911

1012
public static partial class Extensions {

dotnet/targets/Xamarin.Shared.Sdk.targets

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@
245245
_ResolveAppExtensionReferences;
246246
_ExtendAppExtensionReferences;
247247
_ComputeLinkerArguments;
248+
_PrepareAssemblies;
248249
_ComputeFrameworkFilesToPublish;
249250
_ComputeDynamicLibrariesToPublish;
250251
ComputeFilesToPublish;
@@ -730,7 +731,7 @@
730731
<!--
731732
IMarkHandlers which run during Mark
732733
-->
733-
<_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true'" Type="Xamarin.Linker.Steps.PreserveBlockCodeHandler" />
734+
<_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true' And '$(PrepareAssemblies)' != 'true'" Type="Xamarin.Linker.Steps.PreserveBlockCodeHandler" />
734735
<_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true'" Type="Xamarin.Linker.OptimizeGeneratedCodeHandler" />
735736
<_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true'" Type="Xamarin.Linker.BackingFieldDelayHandler" />
736737
<_TrimmerCustomSteps Include="$(_AdditionalTaskAssembly)" Condition="'$(_AreAnyAssembliesTrimmed)' == 'true'" Type="Xamarin.Linker.MarkIProtocolHandler" />
@@ -1309,15 +1310,28 @@
13091310
</ItemGroup>
13101311
</Target>
13111312

1312-
<!-- https://github.com/dotnet/macios/issues/19037 -->
1313-
<!-- The trimmer will set the RootMode for the current assembly to 'EntryPoint', but that doesn't work for app extension projects, because those are library projects that don't have entry points.
1314-
So here we set RootMode=Library for these cases. -->
1315-
<Target Name="_FixRootAssemblyForAppExtensions" AfterTargets="PrepareForILLink" Condition="'$(IsAppExtension)' == 'true'">
1316-
<ItemGroup>
1313+
<Target Name="_PostPrepareForILLinkFixups" AfterTargets="PrepareForILLink">
1314+
<ItemGroup Condition="'$(IsAppExtension)' == 'true'">
1315+
<!-- https://github.com/xamarin/xamarin-macios/issues/19037 -->
1316+
<!-- The trimmer will set the RootMode for the current assembly to 'EntryPoint', but that doesn't work for app extension projects, because those are library projects that don't have entry points.
1317+
So here we set RootMode=Library for these cases. -->
13171318
<TrimmerRootAssembly Update="@(TrimmerRootAssembly)" Condition=" '%(TrimmerRootAssembly.RootMode)' == 'EntryPoint' " RootMode="Library" />
13181319
</ItemGroup>
1320+
<!-- If $(IntermediateAssembly) was modified by the AssemblyPreparer task, then we must update the TrimmerRootAssembly item group to point to the updated version of the intermediate assembly. -->
1321+
<!-- It turned out a bit complicated, because we want to preserve any existing metadata on the items in the TrimmerRootAssembly item group. -->
1322+
<ItemGroup>
1323+
<PreparedIntermediateAssembly Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.BeforePrepareAssembliesPath)' == '@(IntermediateAssembly)'" />
1324+
</ItemGroup>
1325+
<PropertyGroup>
1326+
<_IntermediateAssemblyProperty>@(IntermediateAssembly)</_IntermediateAssemblyProperty>
1327+
<_PreparedIntermediateAssemblyProperty>@(PreparedIntermediateAssembly->WithMetadataValue('BeforePrepareAssembliesPath','$(_IntermediateAssemblyProperty)'))</_PreparedIntermediateAssemblyProperty>
1328+
</PropertyGroup>
1329+
<ItemGroup Condition="@(PreparedIntermediateAssembly->Count()) &gt; 0">
1330+
<_PreparedRootedIntermediateAssembly Include="@(TrimmerRootAssembly->'$(_PreparedIntermediateAssemblyProperty)')" Condition="'%(Identity)' == '$(_IntermediateAssemblyProperty)'" />
1331+
<TrimmerRootAssembly Remove="@(IntermediateAssembly)" />
1332+
<TrimmerRootAssembly Include="@(_PreparedRootedIntermediateAssembly)" />
1333+
</ItemGroup>
13191334
</Target>
1320-
13211335
<Target Name="_CreateAOTDedupAssembly"
13221336
Condition="'$(_IsDedupEnabled)' == 'true'"
13231337
DependsOnTargets="_ComputeManagedAssemblyToLink"

msbuild/ILMerge.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<MergedAssemblies Include="@(ReferenceDependencyPaths)" Condition="'%(FileName)' == 'AssemblyStripper'" />
1919
<MergedAssemblies Include="@(ReferencePath)" Condition="'%(FileName)' == 'MonoTargetsTasks'" />
2020
<MergedAssemblies Include="@(ReferencePath)" Condition="'%(FileName)' == 'Xamarin.MacDev'" />
21+
<MergedAssemblies Include="@(ReferencePath)" Condition="'%(FileName)' == 'assembly-preparer'" />
2122
<MergedAssemblies Include="@(ReferencePath)" Condition="'%(FileName)' == 'DotNetZip'" />
2223
<MergedAssemblies Include="@(ReferencePath)" Condition="'%(FileName)' == 'ILLink.Tasks'" />
2324
<MergedAssemblies Include="@(ReferencePath)" Condition="'%(FileName)' == 'ILStrip'" />

msbuild/Xamarin.MacDev.Tasks/ErrorHelper.msbuild.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
#nullable enable
88

99
namespace Xamarin.Bundler {
10-
public static partial class ErrorHelper {
11-
public static ApplePlatform Platform;
10+
static partial class ErrorHelper {
11+
public static ApplePlatform Platform = ApplePlatform.None;
1212

1313
internal static string Prefix {
1414
get {
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Threading;
6+
using System.Threading.Tasks;
7+
8+
using Microsoft.Build.Framework;
9+
using Microsoft.Build.Utilities;
10+
11+
using Xamarin.Build;
12+
using Xamarin.Utils;
13+
14+
#nullable enable
15+
16+
namespace Xamarin.MacDev.Tasks {
17+
public class PrepareAssemblies : XamarinTask {
18+
const string ErrorPrefix = "AP";
19+
20+
#region Inputs
21+
[Required]
22+
public ITaskItem [] InputAssemblies { get; set; } = [];
23+
24+
public string MakeReproPath { get; set; } = "";
25+
26+
public string OutputDirectory { get; set; } = "";
27+
#endregion
28+
29+
#region Outputs
30+
[Output]
31+
public ITaskItem [] OutputAssemblies { get; set; } = [];
32+
#endregion
33+
34+
Dictionary<AssemblyPreparerInfo, ITaskItem> map = new ();
35+
36+
AssemblyPreparerInfo GetAssemblyInfo (ITaskItem item)
37+
{
38+
var inputPath = item.ItemSpec;
39+
var outputPath = Path.Combine (OutputDirectory, Path.GetFileName (inputPath));
40+
var rv = new AssemblyPreparerInfo (inputPath, outputPath);
41+
map [rv] = item;
42+
return rv;
43+
}
44+
45+
public override bool Execute ()
46+
{
47+
try {
48+
var infos = InputAssemblies.Select (GetAssemblyInfo).ToArray ();
49+
using var preparer = new AssemblyPreparer (infos, Platform);
50+
preparer.MakeReproPath = MakeReproPath;
51+
var rv = preparer.Prepare (out var exceptions);
52+
53+
foreach (var pe in exceptions) {
54+
if (pe.Error) {
55+
Log.LogError (null, $"{ErrorPrefix}{pe.Code}", null, pe.FileName ?? "MSBuild", 0, 0, 0, 0, message: pe.Message);
56+
Exception? ie = pe.InnerException;
57+
while (ie is not null) {
58+
Log.LogMessage (MessageImportance.Low, "Inner exception: {0}\n{1}", ie.Message, ie.StackTrace);
59+
ie = ie.InnerException;
60+
}
61+
} else {
62+
Log.LogWarning (null, $"{ErrorPrefix}{pe.Code}", null, pe.FileName ?? "MSBuild", 0, 0, 0, 0, message: pe.Message);
63+
}
64+
}
65+
66+
OutputAssemblies = preparer.Assemblies.Select (v => {
67+
var item = map [v];
68+
item.ItemSpec = v.OutputPath;
69+
item.SetMetadata ("BeforePrepareAssembliesPath", v.InputPath);
70+
return item;
71+
}).ToArray ();
72+
return rv && !Log.HasLoggedErrors;
73+
} catch (Exception e) {
74+
Log.LogError ("Unexpected error while preparing assemblies: {0}", e);
75+
return false;
76+
}
77+
}
78+
}
79+
}

msbuild/Xamarin.MacDev.Tasks/Xamarin.MacDev.Tasks.csproj

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
</ItemGroup>
3939
<ItemGroup>
4040
<ProjectReference Include="..\..\external\Xamarin.MacDev\Xamarin.MacDev\Xamarin.MacDev.csproj" />
41+
<ProjectReference Include="..\..\tools\assembly-preparer\assembly-preparer.csproj" />
4142
<ProjectReference Include="..\Xamarin.Localization.MSBuild\Xamarin.Localization.MSBuild.csproj">
4243
<ReferenceSourceTarget>ProjectReference</ReferenceSourceTarget>
4344
</ProjectReference>
@@ -70,9 +71,6 @@
7071
</Target>
7172

7273
<ItemGroup>
73-
<Compile Include="..\..\tools\common\ApplePlatform.cs">
74-
<Link>ApplePlatform.cs</Link>
75-
</Compile>
7674
<Compile Include="..\..\tools\common\StringUtils.cs">
7775
<Link>StringUtils.cs</Link>
7876
</Compile>
@@ -94,9 +92,6 @@
9492
<Compile Include="..\..\tools\common\MachO.cs">
9593
<Link>MachO.cs</Link>
9694
</Compile>
97-
<Compile Include="..\..\tools\common\error.cs">
98-
<Link>error.cs</Link>
99-
</Compile>
10095
<Compile Include="..\..\src\ObjCRuntime\ErrorHelper.cs">
10196
<Link>ErrorHelper.cs</Link>
10297
</Compile>
@@ -137,66 +132,66 @@
137132
<Type>Resx</Type>
138133
<Generator>ResXFileCodeGenerator</Generator>
139134
<LastGenOutput>Errors.designer.cs</LastGenOutput>
140-
<CustomToolNamespace>Xamarin.Bundler</CustomToolNamespace>
141-
<ManifestResourceName>Xamarin.Bundler.Errors</ManifestResourceName>
135+
<CustomToolNamespace>Xamarin.Localization.MSBuild</CustomToolNamespace>
136+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors</ManifestResourceName>
142137
<StronglyTypedFileName>Errors.designer.cs</StronglyTypedFileName>
143138
<StronglyTypedLanguage>CSharp</StronglyTypedLanguage>
144-
<StronglyTypedNamespace>Xamarin.Bundler</StronglyTypedNamespace>
139+
<StronglyTypedNamespace>Xamarin.Localization.MSBuild</StronglyTypedNamespace>
145140
<StronglyTypedClassName>Errors</StronglyTypedClassName>
146141
<GenerateResource>true</GenerateResource>
147142
<PublicClass>true</PublicClass>
148143
</EmbeddedResource>
149144
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.cs.resx">
150145
<Link>Errors.cs.resx</Link>
151-
<ManifestResourceName>Xamarin.Bundler.Errors.cs</ManifestResourceName>
146+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.cs</ManifestResourceName>
152147
</EmbeddedResource>
153148
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.de.resx">
154149
<Link>Errors.de.resx</Link>
155-
<ManifestResourceName>Xamarin.Bundler.Errors.de</ManifestResourceName>
150+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.de</ManifestResourceName>
156151
</EmbeddedResource>
157152
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.es.resx">
158153
<Link>Errors.es.resx</Link>
159-
<ManifestResourceName>Xamarin.Bundler.Errors.es</ManifestResourceName>
154+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.es</ManifestResourceName>
160155
</EmbeddedResource>
161156
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.fr.resx">
162157
<Link>Errors.fr.resx</Link>
163-
<ManifestResourceName>Xamarin.Bundler.Errors.fr</ManifestResourceName>
158+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.fr</ManifestResourceName>
164159
</EmbeddedResource>
165160
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.it.resx">
166161
<Link>Errors.it.resx</Link>
167-
<ManifestResourceName>Xamarin.Bundler.Errors.it</ManifestResourceName>
162+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.it</ManifestResourceName>
168163
</EmbeddedResource>
169164
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.ja.resx">
170165
<Link>Errors.ja.resx</Link>
171-
<ManifestResourceName>Xamarin.Bundler.Errors.ja</ManifestResourceName>
166+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.ja</ManifestResourceName>
172167
</EmbeddedResource>
173168
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.ko.resx">
174169
<Link>Errors.ko.resx</Link>
175-
<ManifestResourceName>Xamarin.Bundler.Errors.ko</ManifestResourceName>
170+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.ko</ManifestResourceName>
176171
</EmbeddedResource>
177172
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.pl.resx">
178173
<Link>Errors.pl.resx</Link>
179-
<ManifestResourceName>Xamarin.Bundler.Errors.pl</ManifestResourceName>
174+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.pl</ManifestResourceName>
180175
</EmbeddedResource>
181176
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.pt-BR.resx">
182177
<Link>Errors.pt-BR.resx</Link>
183-
<ManifestResourceName>Xamarin.Bundler.Errors.pt-BR</ManifestResourceName>
178+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.pt-BR</ManifestResourceName>
184179
</EmbeddedResource>
185180
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.ru.resx">
186181
<Link>Errors.ru.resx</Link>
187-
<ManifestResourceName>Xamarin.Bundler.Errors.ru</ManifestResourceName>
182+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.ru</ManifestResourceName>
188183
</EmbeddedResource>
189184
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.tr.resx">
190185
<Link>Errors.tr.resx</Link>
191-
<ManifestResourceName>Xamarin.Bundler.Errors.tr</ManifestResourceName>
186+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.tr</ManifestResourceName>
192187
</EmbeddedResource>
193188
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.zh-Hans.resx">
194189
<Link>Errors.zh-Hans.resx</Link>
195-
<ManifestResourceName>Xamarin.Bundler.Errors.zh-Hans</ManifestResourceName>
190+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.zh-Hans</ManifestResourceName>
196191
</EmbeddedResource>
197192
<EmbeddedResource Include="../../tools/mtouch/TranslatedAssemblies\Errors.zh-Hant.resx">
198193
<Link>Errors.zh-Hant.resx</Link>
199-
<ManifestResourceName>Xamarin.Bundler.Errors.zh-Hant</ManifestResourceName>
194+
<ManifestResourceName>Xamarin.Localization.MSBuild.Errors.zh-Hant</ManifestResourceName>
200195
</EmbeddedResource>
201196
</ItemGroup>
202197
</Project>

msbuild/Xamarin.Shared/Xamarin.Shared.targets

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ Copyright (C) 2018 Microsoft. All rights reserved.
8989
<UsingTask TaskName="Xamarin.MacDev.Tasks.PackLibraryResources" AssemblyFile="$(_TaskAssemblyName)" />
9090
<UsingTask TaskName="Xamarin.MacDev.Tasks.ParseBundlerArguments" AssemblyFile="$(_TaskAssemblyName)" />
9191
<UsingTask TaskName="Xamarin.MacDev.Tasks.ParseDeviceSpecificBuildInformation" AssemblyFile="$(_TaskAssemblyName)" />
92+
<UsingTask TaskName="Xamarin.MacDev.Tasks.PrepareAssemblies" AssemblyFile="$(_TaskAssemblyName)" />
9293
<UsingTask TaskName="Xamarin.MacDev.Tasks.PrepareNativeReferences" AssemblyFile="$(_TaskAssemblyName)" />
9394
<UsingTask TaskName="Xamarin.MacDev.Tasks.PrepareResourceRules" AssemblyFile="$(_TaskAssemblyName)" />
9495
<UsingTask TaskName="Xamarin.MacDev.Tasks.PropertyListEditor" AssemblyFile="$(_TaskAssemblyName)" />
@@ -3308,6 +3309,44 @@ Copyright (C) 2018 Microsoft. All rights reserved.
33083309

33093310
<Target Name="_BeforeCreateIpaForDistribution" Condition="'$(IsAppDistribution)' == 'true'" DependsOnTargets="$(_BeforeCreateIpaForDistributionDependsOn)" />
33103311

3312+
<PropertyGroup>
3313+
<PrepareAssemblies Condition="'$(PrepareAssemblies)' == ''">false</PrepareAssemblies>
3314+
</PropertyGroup>
3315+
3316+
<Target
3317+
Name="_PrepareAssembliesForPreparation"
3318+
DependsOnTargets="_ComputeAssembliesToPostprocessOnPublish"
3319+
>
3320+
<ItemGroup>
3321+
<_AssembliesToPrepare Include="@(ResolvedFileToPublish)" Condition="'%(ResolvedFileToPublish.PostprocessAssembly)' == 'true'" />
3322+
</ItemGroup>
3323+
<PropertyGroup>
3324+
<PreparedAssembliesDirectory>$([MSBuild]::EnsureTrailingSlash('$(DeviceSpecificIntermediateOutputPath)prepared-assemblies'))</PreparedAssembliesDirectory>
3325+
</PropertyGroup>
3326+
</Target>
3327+
3328+
<Target
3329+
Name="_PrepareAssemblies"
3330+
Condition="'$(PrepareAssemblies)' == 'true'"
3331+
Inputs="@(_AssembliesToPrepare)"
3332+
Outputs="@(_AssembliesToPrepare->'$(PreparedAssembliesDirectory)%(Filename)%(Extension)')"
3333+
DependsOnTargets="_PrepareAssembliesForPreparation;_ComputeAssembliesToPostprocessOnPublish"
3334+
>
3335+
<PrepareAssemblies
3336+
InputAssemblies="@(_AssembliesToPrepare)"
3337+
MakeReproPath="$(_PrepareAssembliesMakeReproPath)"
3338+
OutputDirectory="$(PreparedAssembliesDirectory)"
3339+
TargetFrameworkMoniker="$(_ComputedTargetFrameworkMoniker)"
3340+
>
3341+
<Output TaskParameter="OutputAssemblies" ItemName="_PreparedAssemblies" />
3342+
</PrepareAssemblies>
3343+
3344+
<ItemGroup>
3345+
<ResolvedFileToPublish Remove="@(_AssembliesToPrepare)" />
3346+
<ResolvedFileToPublish Include="@(_PreparedAssemblies)" />
3347+
</ItemGroup>
3348+
</Target>
3349+
33113350
<Target Name="CreateIpa" Condition="'$(_CanArchive)' == 'true' And '$(_PlatformName)' != 'macOS' And '$(_PlatformName)' != 'MacCatalyst'" DependsOnTargets="$(CreateIpaDependsOn)" />
33123351

33133352
<Import Project="$(MSBuildThisFileDirectory)Xamarin.Shared.ObjCBinding.targets" Condition="'$(IsBindingProject)' == 'true'" />

0 commit comments

Comments
 (0)