448999982c
Context: https://github.com/CommunityToolkit/Maui.NativeLibraryInterop Introduces a `@(XcodeProject)` build action which can be used to build and consume the outputs of Xcode framework projects. The following metadata are supported on this item: ```xml <XcodeProject Include="path/to/myproject.xcodeproj" > <Configuration>Release</Configuration> <CreateNativeReference>true</CreateNativeReference> <ForceLoad></ForceLoad> <Frameworks></Frameworks> <Kind>Framework</Kind> <OutputPath></OutputPath> <SchemeName></SchemeName> <SmartLink></SmartLink> <Visible></Visible> </XcodeProject> ``` * `%(SchemeName)`: The name of the build scheme or target that should be used to build the project. * `%(Configuration)`: The name of the configuration to use to build the project. The default value is `Release`. * `%(CreateNativeReference)`: Output XCFRAMEWORK files will be added as a `@(NativeReference)` to the project. Metadata supported by `@(NativeReference)` like `%(Kind)`, `%(Frameworks)`, or `%(SmartLink)` will be forwarded if set. The default value is `true`. * `%(OutputPath)`: Can be set to override the XCARCHIVE and XCFRAMEWORK output path of the Xcode project. The default value is `$(IntermediateOutputPath)xcode/{SchemeName}-{Hash}`. A new `_BuildXcodeProjects` target will attempt to build XCARCHIVE and XCFRAMEWORK files for each `@(XcodeProject)` item. These outputs will be created for the platform specified in the target framework. If multiple target frameworks are specified, the project will be built for each platform during each inner build. A new `$(MaciOSPrepareForBuildDependsOn)` build extension point has been added to allow customer projects to more easily hook into the beginning of the build process. --------- Co-authored-by: Peter Collins <pecolli@microsoft.com> Co-authored-by: Alex Soto <alex@soto.dev> |
||
---|---|---|
.. | ||
AdditionalAppExtensionConsumer | ||
AppWithGenericLibraryReference | ||
AppWithNativeDynamicLibrariesInPackageReference | ||
AppWithResources | ||
AppWithWinExeOutputType | ||
AppWithXCAssets | ||
AppWithXCFrameworkWithStaticLibraryInPackageReference | ||
AutoDetectEntitlements | ||
BindingOldStyle | ||
BindingWithDefaultCompileInclude | ||
BindingWithUncompressedResourceBundle | ||
BundleStructure | ||
CatalystAppOptimizedForMacOS | ||
CentralPackageVersionsApp | ||
CustomizedCodeSigning | ||
Entitlements | ||
ExceptionalTestApp | ||
ExtensionConsumer | ||
ExtensionConsumerWithFrameworks | ||
ExtensionProject | ||
ExtensionProjectWithFrameworks | ||
LibraryReferencingBindingLibrary | ||
MultiTargetingLibrary | ||
MyCatalystApp | ||
MyClassLibrary | ||
MyClassRedirectApp | ||
MyCocoaApp | ||
MyInterpretedApp | ||
MyMauiApp | ||
MyNativeAotAppWithTrimAnalysisWarning | ||
MyPartialAppManifestApp | ||
MyRegistrarApp | ||
MySatelliteAssembliesLibrary | ||
MySimpleApp | ||
MySimpleAppWithSatelliteReference | ||
MySingleView | ||
MyTVApp | ||
NativeDynamicLibraryReferencesApp | ||
NativeFileReferencesApp | ||
NativeFrameworkReferencesApp | ||
NativeXCFrameworkReferencesApp | ||
Net6_0SimpleApp | ||
Net7_0SimpleApp | ||
Net8_0SimpleApp | ||
RebuildTestAppWithLibraryReference | ||
SimpleAppWithOldReferences | ||
UnitTests | ||
WidgetConsumer | ||
WidgetExtension | ||
Windows | ||
size-comparison | ||
.gitignore | ||
Makefile | ||
README.md |
README.md
.net tests
size-comparison
To install the latest appcompare
tool do:
$ dotnet tool install --global appcompare
You can update it to the latest version by running:
$ dotnet tool update --global appcompare
The current directory might point to a different and incompatible dotnet SDK, resulting in an error. However running the command from a different location (outside the repo) should work.
Easier Analysis
If you want to read/compare the IL inside the assemblies you need to disable IL stripping.
- Legacy (oldnet)
Add this option inside the Release|iPhone
configuration of size-comparison/MySingleView/oldnet/MySingleView.csproj
<MtouchExtraArgs>--nostrip</MtouchExtraArgs>
- net6
Build with /p:EnableAssemblyILStripping=false
set. The MtouchExtraArgs
legacy option is also honored.