xamarin-macios/tests/dotnet
Peter Collins 448999982c
[msbuild] Add @(XcodeProject) action (#21232)
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>
2024-09-24 23:47:09 +02:00
..
AdditionalAppExtensionConsumer [tests] Bump min OS versions in all tests. 2024-02-28 12:08:24 +01:00
AppWithGenericLibraryReference [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
AppWithNativeDynamicLibrariesInPackageReference [msbuild] Detect any dylibs in NativeReferences. Fixes #19520. (#19560) 2023-12-04 20:11:20 +01:00
AppWithResources [msbuild] Fix computing target device for tvOS. 2024-07-09 10:22:36 +02:00
AppWithWinExeOutputType [msbuild] Validate OutputType property (#16871) 2022-12-22 07:36:04 +01:00
AppWithXCAssets [msbuild] Fix computing target device for tvOS. 2024-07-09 10:22:36 +02:00
AppWithXCFrameworkWithStaticLibraryInPackageReference [msbuild] Fix resolving static libraries inside an XCFramework in a NuGet. (#19502) 2023-11-27 08:54:48 +01:00
AutoDetectEntitlements [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
BindingOldStyle [tests] Convert spaces to tabs in numerous test projects. (#15855) 2022-09-05 10:54:33 +02:00
BindingWithDefaultCompileInclude [tests] Convert spaces to tabs in numerous test projects. (#15855) 2022-09-05 10:54:33 +02:00
BindingWithUncompressedResourceBundle [dotnet/msbuild] Copy binding resource packages to output directories together with CopyLocal assemblies. Fixes #13910. (#17806) 2023-03-22 10:49:26 +01:00
BundleStructure [net9.0] Merge main into net9.0. 2024-06-05 17:23:29 +02:00
CatalystAppOptimizedForMacOS [tests] Bump min OS versions in all tests. 2024-02-28 12:08:24 +01:00
CentralPackageVersionsApp [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
CustomizedCodeSigning [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
Entitlements [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
ExceptionalTestApp [runtime] Call mono_unhandled_exception to raise AppDomain.UnhandledException. (#20656) 2024-05-29 20:14:47 +02:00
ExtensionConsumer NativeAOT: Enable building app extensions with NativeAOT (#20872) 2024-07-19 08:03:49 -04:00
ExtensionConsumerWithFrameworks [dotnet] Point app extensions to any frameworks in the root app bundle. Fixes #17876. (#18913) 2023-09-11 09:52:54 +02:00
ExtensionProject [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
ExtensionProjectWithFrameworks [dotnet] Point app extensions to any frameworks in the root app bundle. Fixes #17876. (#18913) 2023-09-11 09:52:54 +02:00
LibraryReferencingBindingLibrary [tests] Skip framework-test on iOS and tvOS. (#20590) 2024-05-30 10:34:14 +02:00
MultiTargetingLibrary [dotnet] Multi target with Xcode 15.0 (#20155) 2024-02-28 09:03:53 +01:00
MyCatalystApp [tests] Use the default RuntimeIdentifier in MyCatalystApp (#19767) 2024-01-10 11:19:40 +01:00
MyClassLibrary [tests] Convert spaces to tabs in numerous test projects. (#15855) 2022-09-05 10:54:33 +02:00
MyClassRedirectApp [dotnet] Test integration (#18543) 2023-10-17 10:29:12 -04:00
MyCocoaApp [dotnet] Create an MSBuild property for the current min OS version. (#17034) 2023-01-10 21:18:39 +01:00
MyInterpretedApp [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
MyMauiApp [dotnet] Delay computing trimming options until MAUI has had a chance to change the default. (#20970) 2024-08-07 14:43:53 +02:00
MyNativeAotAppWithTrimAnalysisWarning [net9.0] Do not suppress trim analysis warnings when NativeAOT is enabled (#20767) 2024-07-03 18:22:44 +02:00
MyPartialAppManifestApp [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
MyRegistrarApp [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
MySatelliteAssembliesLibrary [tests] Convert spaces to tabs in numerous test projects. (#15855) 2022-09-05 10:54:33 +02:00
MySimpleApp [dotnet] Force 'AppendRuntimeIdentifierToOutputPath=true' for the inner build of universal apps. (#20839) 2024-07-10 13:00:05 +02:00
MySimpleAppWithSatelliteReference [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
MySingleView [dotnet] Create an MSBuild property for the current min OS version. (#17034) 2023-01-10 21:18:39 +01:00
MyTVApp [msbuild] Fix computing target device for tvOS. 2024-07-09 10:22:36 +02:00
NativeDynamicLibraryReferencesApp [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
NativeFileReferencesApp [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
NativeFrameworkReferencesApp [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
NativeXCFrameworkReferencesApp [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
Net6_0SimpleApp [tests] Bump min OS versions in all tests. 2024-02-28 12:08:24 +01:00
Net7_0SimpleApp [tests] Bump min OS versions in all tests. 2024-02-28 12:08:24 +01:00
Net8_0SimpleApp [tests] Bump min OS versions in all tests. 2024-02-28 12:08:24 +01:00
RebuildTestAppWithLibraryReference [msbuild] Re-aot referencing assemblies. Fixes #17708. (#18509) 2023-08-07 20:19:30 +02:00
SimpleAppWithOldReferences [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
UnitTests [msbuild] Add @(XcodeProject) action (#21232) 2024-09-24 23:47:09 +02:00
WidgetConsumer [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
WidgetExtension [autoformat] Add .NET tests. (#16811) 2022-11-21 09:45:49 +01:00
Windows [tests] Fix a couple of minor issues. (#20843) 2024-07-10 12:57:30 +02:00
size-comparison [tests] Bump min OS versions in all tests. 2024-01-29 15:24:30 +01:00
.gitignore Make our local .NET the default .NET for the build. (#15086) 2022-06-07 10:11:02 +02:00
Makefile [tests] Make the 'run-tests' and 'run-unit-tests' targets equivalent. (#20223) 2024-03-01 09:54:33 +01:00
README.md [appcompare] Remove old/local copy of the tool and update comparison documentation (#14190) 2022-02-18 13:04:28 +01:00

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.