[net8.0] Merge main into net8.0. (#18179)

This commit is contained in:
Rolf Bjarne Kvinge 2023-04-28 16:27:08 +02:00 коммит произвёл GitHub
Родитель 6ee3a0e44a f3b7673124
Коммит 07370b72eb
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
39 изменённых файлов: 207 добавлений и 632 удалений

Просмотреть файл

@ -2560,39 +2560,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7106" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Expected a file named '{1}' in the zip file {0}.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7107" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The zip file '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7108" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The file '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Soubor {0} neexistuje.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7109" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to process the item '{0}' as a native reference: unknown type.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7111" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The directory '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
</Item>
</Item>
</LCX>

Просмотреть файл

@ -2560,42 +2560,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7106" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Expected a file named '{1}' in the zip file {0}.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7107" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The zip file '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7108" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The file '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Die Datei "{0}" ist nicht vorhanden.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7109" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to process the item '{0}' as a native reference: unknown type.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7111" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The directory '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Das Verzeichnis "{0}" ist nicht vorhanden.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
</Item>
</Item>
</LCX>

Просмотреть файл

@ -2560,42 +2560,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7106" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Expected a file named '{1}' in the zip file {0}.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7107" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The zip file '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7108" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The file '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El archivo '{0}' no existe.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7109" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to process the item '{0}' as a native reference: unknown type.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7111" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The directory '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[El directorio '{0}' no existe.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
</Item>
</Item>
</LCX>

Просмотреть файл

@ -2560,42 +2560,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7106" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Expected a file named '{1}' in the zip file {0}.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7107" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The zip file '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7108" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The file '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Il file '{0}' non esiste.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7109" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to process the item '{0}' as a native reference: unknown type.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7111" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The directory '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La directory '{0}' non esiste.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
</Item>
</Item>
</LCX>

Просмотреть файл

@ -2560,39 +2560,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7106" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Expected a file named '{1}' in the zip file {0}.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7107" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The zip file '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7108" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The file '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Plik '{0}' nie istnieje.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7109" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to process the item '{0}' as a native reference: unknown type.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7111" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The directory '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
</Item>
</Item>
</LCX>

Просмотреть файл

@ -2560,42 +2560,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7106" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Expected a file named '{1}' in the zip file {0}.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7107" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The zip file '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7108" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The file '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[O arquivo '{0}' não existe.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7109" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to process the item '{0}' as a native reference: unknown type.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7111" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The directory '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[O diretório '{0}' não existe.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
</Item>
</Item>
</LCX>

Просмотреть файл

@ -2560,39 +2560,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7106" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Expected a file named '{1}' in the zip file {0}.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7107" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The zip file '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7108" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The file '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA['{0}' dosyası yok.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7109" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to process the item '{0}' as a native reference: unknown type.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7111" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The directory '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
</Item>
</Item>
</LCX>

Просмотреть файл

@ -2560,42 +2560,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7106" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Expected a file named '{1}' in the zip file {0}.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7107" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The zip file '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7108" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The file '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[文件“{0}”不存在。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7109" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to process the item '{0}' as a native reference: unknown type.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7111" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The directory '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[目录“{0}”不存在。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
</Item>
</Item>
</LCX>

Просмотреть файл

@ -2560,42 +2560,6 @@
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7106" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Expected a file named '{1}' in the zip file {0}.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7107" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The zip file '{0}' does not exist.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7108" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The file '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[檔案 '{0}' 不存在。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7109" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to process the item '{0}' as a native reference: unknown type.]]></Val>
</Str>
<Disp Icon="Str" />
</Item>
<Item ItemId=";W7111" ItemType="0;.resx" PsrId="211" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[The directory '{0}' does not exist.]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[目錄 '{0}' 不存在。]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
</Item>
</Item>
</Item>
</LCX>

Просмотреть файл

@ -636,7 +636,12 @@
</ItemGroup>
<!-- Create the file with our custom linker options -->
<WriteLinesToFile SessionId="$(BuildSessionId)" File="$(_CustomLinkerOptionsFile)" Lines="$(_CustomLinkerOptions)" Overwrite="true" />
<WriteLinesToFile
SessionId="$(BuildSessionId)"
Condition="'$(IsMacEnabled)' == 'true'"
File="$(_CustomLinkerOptionsFile)"
Lines="$(_CustomLinkerOptions)"
Overwrite="true" />
</Target>
<PropertyGroup>

Просмотреть файл

@ -45,6 +45,7 @@ namespace CoreMidi {
[SupportedOSPlatform ("maccatalyst")]
[SupportedOSPlatform ("macos")]
#endif
[NativeName ("MIDITransform")]
[StructLayout (LayoutKind.Sequential)]
public struct MidiTransform {
public MidiTransformType Transform;
@ -62,6 +63,7 @@ namespace CoreMidi {
[SupportedOSPlatform ("maccatalyst")]
[SupportedOSPlatform ("macos")]
#endif
[NativeName ("MIDIValueMap")]
[StructLayout (LayoutKind.Sequential)]
public unsafe struct MidiValueMap {
byte [] map_value;
@ -84,6 +86,7 @@ namespace CoreMidi {
[SupportedOSPlatform ("maccatalyst")]
[SupportedOSPlatform ("macos")]
#endif
[NativeName ("MIDIControlTransform")]
[StructLayout (LayoutKind.Sequential)]
public struct MidiControlTransform {
public MidiTransformControlType ControlType;
@ -110,6 +113,7 @@ namespace CoreMidi {
[SupportedOSPlatform ("maccatalyst")]
[SupportedOSPlatform ("macos")]
#endif
[NativeName ("MIDIThruConnectionEndpoint")]
[StructLayout (LayoutKind.Sequential)]
public struct MidiThruConnectionEndpoint {
public MidiEndpointRef EndpointRef;

Просмотреть файл

@ -9361,7 +9361,7 @@ namespace AVFoundation {
[Field ("AVCaptureSessionPreset3840x2160")]
NSString Preset3840x2160 { get; }
[Unavailable (PlatformName.MacCatalyst)]
[MacCatalyst (14, 0)]
[Field ("AVCaptureSessionPresetiFrame960x540")]
NSString PresetiFrame960x540 { get; }
@ -9472,6 +9472,21 @@ namespace AVFoundation {
[MacCatalyst (14, 0)]
[Export ("connections")]
AVCaptureConnection [] Connections { get; }
[NoWatch, NoTV, NoMac, NoMacCatalyst]
[iOS (16, 0)]
[Export ("multitaskingCameraAccessEnabled")]
bool MultitaskingCameraAccessEnabled { [Bind ("isMultitaskingCameraAccessEnabled")] get; set; }
[NoWatch, NoTV, NoMac, NoMacCatalyst]
[iOS (16, 0)]
[Export ("multitaskingCameraAccessSupported")]
bool MultitaskingCameraAccessSupported { [Bind ("isMultitaskingCameraAccessSupported")] get; }
[NoWatch, NoTV, NoMac]
[iOS (16, 0), MacCatalyst (16, 0)]
[Export ("hardwareCost")]
float HardwareCost { get; }
}
[Introduced (PlatformName.MacCatalyst, 14, 0)]

Просмотреть файл

@ -1097,27 +1097,4 @@ namespace AVKit {
[Export ("localizedNumericName")]
string LocalizedNumericName { get; }
}
delegate void AVCustomRoutingControllerDelegateCompletionHandler (bool success);
interface IAVCustomRoutingControllerDelegate { }
[NoWatch, NoTV, NoMac, iOS (16, 0), MacCatalyst (16, 0)]
#if NET
[Protocol, Model]
#else
[Protocol, Model (AutoGeneratedName = true)]
#endif
[BaseType (typeof (NSObject))]
interface AVCustomRoutingControllerDelegate {
[Abstract]
[Export ("customRoutingController:handleEvent:completionHandler:")]
void HandleEvent (AVCustomRoutingController controller, AVCustomRoutingEvent @event, AVCustomRoutingControllerDelegateCompletionHandler completionHandler);
[Export ("customRoutingController:eventDidTimeOut:")]
void EventDidTimeOut (AVCustomRoutingController controller, AVCustomRoutingEvent @event);
[Export ("customRoutingController:didSelectItem:")]
void DidSelectItem (AVCustomRoutingController controller, AVCustomRoutingActionItem customActionItem);
}
}

Просмотреть файл

@ -99,6 +99,42 @@ namespace AVRouting {
NSString AuthorizedRoutesDidChangeNotification { get; }
}
// The AVCustomRoutingControllerDelegate type was incorrectly placed in the AVKit framework.
#if !XAMCORE_5_0
}
namespace AVKit {
using AVRouting;
#endif
delegate void AVCustomRoutingControllerDelegateCompletionHandler (bool success);
interface IAVCustomRoutingControllerDelegate { }
[NoWatch, NoTV, NoMac, iOS (16, 0), MacCatalyst (16, 0)]
#if NET
[Protocol, Model]
#else
[Protocol, Model (AutoGeneratedName = true)]
#endif
[BaseType (typeof (NSObject))]
interface AVCustomRoutingControllerDelegate {
[Abstract]
[Export ("customRoutingController:handleEvent:completionHandler:")]
void HandleEvent (AVCustomRoutingController controller, AVCustomRoutingEvent @event, AVCustomRoutingControllerDelegateCompletionHandler completionHandler);
[Export ("customRoutingController:eventDidTimeOut:")]
void EventDidTimeOut (AVCustomRoutingController controller, AVCustomRoutingEvent @event);
[Export ("customRoutingController:didSelectItem:")]
void DidSelectItem (AVCustomRoutingController controller, AVCustomRoutingActionItem customActionItem);
}
#if !XAMCORE_5_0
}
namespace AVRouting {
#endif
[NoWatch, NoTV, NoMac, iOS (16, 0), MacCatalyst (16, 0)]
[BaseType (typeof (NSObject))]
interface AVCustomRoutingEvent {

Просмотреть файл

@ -216,11 +216,12 @@ test-install-sources:
@[[ -z "$$BUILD_REPOSITORY" ]] || ( xsltproc $(TOP)/tests/HtmlTransform.xslt $(NUNIT_MSBUILD_DIR)/TestResults_InstallSourcesTests.xml > $(TOP)/tests/index.html && echo "@MonkeyWrench: AddFile: $$PWD/index.html" )
@if test -e $(NUNIT_MSBUILD_DIR)/.failed-stamp; then rm $(NUNIT_MSBUILD_DIR)/.failed-stamp; exit 1; fi
ifdef INCLUDE_MAC
mac-test-package.zip:
ifdef INCLUDE_MAC
./package-mac-tests.sh
else ifdef INCLUDE_MACCATALYST
./package-mac-tests.sh
else
mac-test-package.zip:
@echo Not enabled
endif

Просмотреть файл

@ -2,7 +2,7 @@ using System;
using System.Runtime.InteropServices;
namespace ObjCRuntime {
public static class Messaging {
static class Messaging {
internal const string LIBOBJC_DYLIB = "/usr/lib/libobjc.dylib";
public struct objc_super {

Просмотреть файл

@ -353,7 +353,6 @@ namespace Cecil.Tests {
foreach (var instr in body.Instructions) {
switch (instr.OpCode.Code) {
case Code.Call:
case Code.Calli:
case Code.Callvirt:
break;
default:

Просмотреть файл

@ -2,7 +2,10 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using ObjCRuntime;
using Foundation;
#if !__MACOS__
using UIKit;
@ -48,9 +51,31 @@ public partial class AppDelegate : UIApplicationDelegate {
public static class MainClass {
static void Main (string [] args)
{
#if __MACCATALYST__
NativeLibrary.SetDllImportResolver (typeof (NSObject).Assembly, DllImportResolver);
NativeLibrary.SetDllImportResolver (typeof (MainClass).Assembly, DllImportResolver);
#endif
#if !__MACOS__
UIApplication.Main (args, null, typeof (AppDelegate));
#endif
}
#if __MACCATALYST__
// This is a workaround for a temporary issue in the .NET runtime
// See https://github.com/xamarin/maccore/issues/2668
// The issue is present in .NET 7.0.5, and will likely be fixed in .NET 7.0.6.
static IntPtr DllImportResolver (string libraryName, global::System.Reflection.Assembly assembly, DllImportSearchPath? searchPath)
{
switch (libraryName) {
case "/System/Library/Frameworks/SceneKit.framework/SceneKit":
case "/System/Library/Frameworks/SceneKit.framework/Versions/A/SceneKit":
var rv = NativeLibrary.Load (libraryName);
Console.WriteLine ($"DllImportResolver callback loaded library \"{libraryName}\" from a P/Invoke in \"{assembly}\" => 0x{rv.ToString ("x")}");
return rv;
default:
return IntPtr.Zero;
}
}
#endif
}
#endif // !__WATCHOS__

Просмотреть файл

@ -15,7 +15,7 @@
<MacIosRootDirectory>$(RootSourceDirectory)</MacIosRootDirectory>
<PackageOutputPath>$(RootSourceDirectory)..\artifacts\</PackageOutputPath>
<RollbackFile>$(PackageOutputPath)WorkloadRollback\WorkloadRollback.json</RollbackFile>
<RollbackSource>$(PackageOutputPath)dotnet-signed</RollbackSource>
<RollbackSource>$(PackageOutputPath)not-signed-package</RollbackSource>
</PropertyGroup>
<Target Name="GetNuGetSources">

Просмотреть файл

@ -22,7 +22,7 @@ using NativeHandle = System.IntPtr;
#endif
namespace ObjCRuntime {
public static class Messaging {
static class Messaging {
internal const string LIBOBJC_DYLIB = "/usr/lib/libobjc.dylib";
public struct objc_super {

Просмотреть файл

@ -46,9 +46,9 @@ namespace MonoTouchFixtures.SpriteKit {
V3 = new VectorFloat3 (1, 2, 3);
obj.EulerAngles = V3;
// The values bellow match what the same code in Swift returns.
Assert.AreEqual (-2.14159298f, obj.EulerAngles.X, "#x1");
Assert.AreEqual (1.14159274f, obj.EulerAngles.Y, "#y1");
Assert.AreEqual (-0.141592711f, obj.EulerAngles.Z, "#z1");
Assert.AreEqual (-2.14159298f, obj.EulerAngles.X, 0.000001f, "#x1");
Assert.AreEqual (1.14159274f, obj.EulerAngles.Y, 0.000001f, "#y1");
Assert.AreEqual (-0.141592711f, obj.EulerAngles.Z, 0.000001f, "#z1");
}
}

Просмотреть файл

@ -1,6 +1,3 @@
## Unavailable
!missing-field! AVCaptureSessionPresetiFrame960x540 not bound
# not possible with the generator but added INSFastEnumeration for whenever is supported.
!missing-protocol-conformance! AVCaptureSynchronizedDataCollection should conform to NSFastEnumeration

Просмотреть файл

@ -99,7 +99,6 @@
!missing-selector! AVCaptureDevice::isStudioLightActive not bound
!missing-selector! AVCaptureDeviceFormat::isStudioLightSupported not bound
!missing-selector! AVCaptureDeviceFormat::videoFrameRateRangeForStudioLight not bound
!missing-selector! AVCaptureSession::hardwareCost not bound
!missing-selector! AVComposition::chapterMetadataGroupsBestMatchingPreferredLanguages: not bound
!missing-selector! AVComposition::chapterMetadataGroupsWithTitleLocale:containingItemsWithCommonKeys: not bound
!missing-selector! AVComposition::mediaSelectionGroupForMediaCharacteristic: not bound

Просмотреть файл

@ -98,10 +98,6 @@
!missing-selector! AVCaptureDevice::isStudioLightActive not bound
!missing-selector! AVCaptureDeviceFormat::isStudioLightSupported not bound
!missing-selector! AVCaptureDeviceFormat::videoFrameRateRangeForStudioLight not bound
!missing-selector! AVCaptureSession::hardwareCost not bound
!missing-selector! AVCaptureSession::isMultitaskingCameraAccessEnabled not bound
!missing-selector! AVCaptureSession::isMultitaskingCameraAccessSupported not bound
!missing-selector! AVCaptureSession::setMultitaskingCameraAccessEnabled: not bound
!missing-selector! AVComposition::chapterMetadataGroupsBestMatchingPreferredLanguages: not bound
!missing-selector! AVComposition::chapterMetadataGroupsWithTitleLocale:containingItemsWithCommonKeys: not bound
!missing-selector! AVComposition::mediaSelectionGroupForMediaCharacteristic: not bound

Просмотреть файл

@ -98,10 +98,6 @@
!missing-selector! AVCaptureDevice::isStudioLightActive not bound
!missing-selector! AVCaptureDeviceFormat::isStudioLightSupported not bound
!missing-selector! AVCaptureDeviceFormat::videoFrameRateRangeForStudioLight not bound
!missing-selector! AVCaptureSession::hardwareCost not bound
!missing-selector! AVCaptureSession::isMultitaskingCameraAccessEnabled not bound
!missing-selector! AVCaptureSession::isMultitaskingCameraAccessSupported not bound
!missing-selector! AVCaptureSession::setMultitaskingCameraAccessEnabled: not bound
!missing-selector! AVComposition::chapterMetadataGroupsBestMatchingPreferredLanguages: not bound
!missing-selector! AVComposition::chapterMetadataGroupsWithTitleLocale:containingItemsWithCommonKeys: not bound
!missing-selector! AVComposition::mediaSelectionGroupForMediaCharacteristic: not bound

Просмотреть файл

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
#nullable enable

Просмотреть файл

@ -736,9 +736,16 @@ public class Frameworks : Dictionary<string, Framework> {
var namespaces = new HashSet<string> ();
// Collect all the namespaces.
foreach (ModuleDefinition md in product_assembly.Modules)
foreach (TypeDefinition td in md.Types)
foreach (ModuleDefinition md in product_assembly.Modules) {
foreach (TypeDefinition td in md.Types) {
#if !XAMCORE_5_0
// AVCustomRoutingControllerDelegate was incorrectly placed in AVKit
if (td.Namespace == "AVKit" && td.Name == "AVCustomRoutingControllerDelegate")
namespaces.Add ("AVRouting");
#endif
namespaces.Add (td.Namespace);
}
}
// Iterate over all the namespaces and check which frameworks we need to link with.
var all_frameworks = GetFrameworks (app.Platform, app.IsSimulatorBuild);

Просмотреть файл

@ -33,6 +33,7 @@ using ObjCRuntime;
using Mono.Cecil;
using Mono.Linker;
using Mono.Tuner;
using ClassRedirector;
namespace Registrar {
/*
@ -2166,6 +2167,11 @@ namespace Registrar {
var ns = type.Namespace;
#if !XAMCORE_5_0
// AVCustomRoutingControllerDelegate was incorrectly placed in AVKit
if (type.Is ("AVKit", "AVCustomRoutingControllerDelegate"))
ns = "AVRouting";
#endif
Framework framework;
if (Driver.GetFrameworks (App).TryGetValue (ns, out framework)) {
if (framework.Version > App.SdkVersion) {
@ -2803,14 +2809,14 @@ namespace Registrar {
}
}
void Specialize (AutoIndentStringBuilder sb, out string initialization_method)
void Specialize (AutoIndentStringBuilder sb, out string initialization_method, string type_map_path)
{
List<Exception> exceptions = new List<Exception> ();
List<ObjCMember> skip = new List<ObjCMember> ();
var map = new AutoIndentStringBuilder (1);
var map_init = new AutoIndentStringBuilder ();
var map_dict = new Dictionary<ObjCType, int> (); // maps ObjCType to its index in the map
var map_dict = new CSToObjCMap (); // maps CS type to ObjC type name and index
var map_entries = 0;
var protocol_wrapper_map = new Dictionary<uint, Tuple<ObjCType, uint>> ();
var protocols = new List<ProtocolInfo> ();
@ -2893,7 +2899,7 @@ namespace Registrar {
token_ref,
GetAssemblyQualifiedName (@class.Type), map_entries,
(int) flags, flags);
map_dict [@class] = map_entries++;
map_dict [GetAssemblyQualifiedName (@class.Type)] = new ObjCNameIndex (@class.ExportedName, map_entries++);
bool use_dynamic;
@ -2973,35 +2979,34 @@ namespace Registrar {
iface.Write ("@interface {0} : {1}", class_name, EncodeNonAsciiCharacters (@class.SuperType.ExportedName));
declarations.AppendFormat ("@class {0};\n", class_name);
}
bool any_protocols = false;
var implementedProtocols = new HashSet<string> ();
ObjCType tp = @class;
while (tp != null && tp != tp.BaseType) {
if (tp.IsWrapper)
break; // no need to declare protocols for wrapper types, they do it already in their headers.
if (tp.Protocols != null) {
for (int p = 0; p < tp.Protocols.Length; p++) {
if (tp.Protocols [p].ProtocolName == "UIAppearance")
continue;
iface.Append (any_protocols ? ", " : "<");
any_protocols = true;
iface.Append (tp.Protocols [p].ProtocolName);
implementedProtocols.Add (tp.Protocols [p].ProtocolName);
var proto = tp.Protocols [p].Type;
CheckNamespace (proto, exceptions);
}
}
if (App.Optimizations.RegisterProtocols == true && tp.AdoptedProtocols != null) {
for (int p = 0; p < tp.AdoptedProtocols.Length; p++) {
if (tp.AdoptedProtocols [p] == "UIAppearance")
continue; // This is not a real protocol
iface.Append (any_protocols ? ", " : "<");
any_protocols = true;
iface.Append (tp.AdoptedProtocols [p]);
}
}
if (App.Optimizations.RegisterProtocols == true && tp.AdoptedProtocols != null)
implementedProtocols.UnionWith (tp.AdoptedProtocols);
tp = tp.BaseType;
}
if (any_protocols)
implementedProtocols.Remove ("UIAppearance"); // This is not a real protocol
if (implementedProtocols.Count > 0) {
iface.Append ("<");
var firstProtocol = true;
foreach (var ip in implementedProtocols.OrderBy (v => v)) {
if (!firstProtocol)
iface.Append (", ");
firstProtocol = false;
iface.Append (ip);
}
iface.Append (">");
}
AutoIndentStringBuilder implementation_fields = null;
if (is_protocol) {
@ -3257,6 +3262,11 @@ namespace Registrar {
sb.WriteLine (map.ToString ());
sb.WriteLine (map_init.ToString ());
if (!string.IsNullOrEmpty (type_map_path)) {
var doc = CSToObjCMap.ToXDocument (map_dict);
doc.Save (type_map_path);
}
ErrorHelper.ThrowIfErrors (exceptions);
}
@ -5135,18 +5145,18 @@ namespace Registrar {
pinfo.EntryPoint = wrapperName;
}
public void GenerateSingleAssembly (PlatformResolver resolver, IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, string assembly, out string initialization_method)
public void GenerateSingleAssembly (PlatformResolver resolver, IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, string assembly, out string initialization_method, string type_map_path = null)
{
single_assembly = assembly;
Generate (resolver, assemblies, header_path, source_path, out initialization_method);
Generate (resolver, assemblies, header_path, source_path, out initialization_method, type_map_path);
}
public void Generate (IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, out string initialization_method)
public void Generate (IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, out string initialization_method, string type_map_path = null)
{
Generate (null, assemblies, header_path, source_path, out initialization_method);
Generate (null, assemblies, header_path, source_path, out initialization_method, type_map_path);
}
public void Generate (PlatformResolver resolver, IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, out string initialization_method)
public void Generate (PlatformResolver resolver, IEnumerable<AssemblyDefinition> assemblies, string header_path, string source_path, out string initialization_method, string type_map_path = null)
{
this.resolver = resolver;
@ -5160,10 +5170,10 @@ namespace Registrar {
RegisterAssembly (assembly);
}
Generate (header_path, source_path, out initialization_method);
Generate (header_path, source_path, out initialization_method, type_map_path);
}
void Generate (string header_path, string source_path, out string initialization_method)
void Generate (string header_path, string source_path, out string initialization_method, string type_map_path = null)
{
var sb = new AutoIndentStringBuilder ();
header = new AutoIndentStringBuilder ();
@ -5198,7 +5208,7 @@ namespace Registrar {
if (App.Embeddinator)
methods.WriteLine ("void xamarin_embeddinator_initialize ();");
Specialize (sb, out initialization_method);
Specialize (sb, out initialization_method, type_map_path);
methods.WriteLine ();
methods.AppendLine ();

Просмотреть файл

@ -199,6 +199,12 @@ namespace Xamarin.Bundler {
foreach (TypeDefinition td in md.Types) {
// process only once each namespace (as we keep adding logic below)
string nspace = td.Namespace;
#if !XAMCORE_5_0
// AVCustomRoutingControllerDelegate was incorrectly placed in AVKit
if (td.Is ("AVKit", "AVCustomRoutingControllerDelegate"))
nspace = "AVRouting";
#endif
if (processed.Contains (nspace))
continue;
processed.Add (nspace);

Просмотреть файл

@ -4,9 +4,9 @@ function RemoveUtf8Bom
[string]$FilePath
)
$encoding = New-Object -TypeName System.Text.UTF8Encoding
$content = Get-Content -Path $FilePath -Raw
[System.IO.File]::WriteAllLines($FilePath, $content, $encoding)
$encoding = New-Object -TypeName System.Text.UTF8Encoding -ArgumentList $false
$content = Get-Content -Path $FilePath -Encoding UTF8
[System.IO.File]::WriteAllText($FilePath, $content -join "`n", $encoding)
}
foreach ($locFile in (Get-Content -Path $env:XLocFileList))

Просмотреть файл

@ -90,7 +90,6 @@ steps:
packageSourceAuth: patAuth
patVariable: '$(OneLocBuild--PAT)'
isAutoCompletePrSelected: false
isUseLfLineEndingsSelected: true
prSourceBranchPrefix: 'locfiles'
repoType: gitHub
gitHubPatVariable: '$(GitHub.Token)'

Просмотреть файл

@ -40,6 +40,10 @@ parameters:
type: boolean
default: true
- name: enableLegacySigning
type: boolean
default: true
- name: enableAPIDiff
type: boolean
default: true
@ -107,56 +111,20 @@ parameters:
type: stepList
default: []
- name: packages
- name: legacyPackageJobs
type: object
default: [
{
job: prepare_packages,
displayName: 'Prepare packages',
packages: [
{
job: 'microsoft_ios_sign_notarize',
name: 'Microsoft.iOS',
pattern: 'Microsoft.iOS.Bundle*.pkg',
conditionVariable: "INCLUDE_DOTNET_IOS",
},
{
job: 'microsoft_tvos_sign_notarize',
name: 'Microsoft.tvOS',
pattern: 'Microsoft.tvOS.Bundle*.pkg',
conditionVariable: "INCLUDE_DOTNET_TVOS",
},
{
job: 'microsoft_mac_sign_notarize',
name: 'Microsoft.macOS',
pattern: 'Microsoft.macOS.Bundle*.pkg',
conditionVariable: "INCLUDE_DOTNET_MACOS",
},
{
job: 'microsoft_maccatalyst_sign_notarize',
name: 'Microsoft.MacCatalyst',
pattern: 'Microsoft.MacCatalyst.Bundle*.pkg',
conditionVariable: "INCLUDE_DOTNET_MACCATALYST",
},
],
job: 'xamarin_ios_sign_notarize',
name: 'Xamarin.iOS',
pattern: 'xamarin.ios-*',
conditionVariable: "INCLUDE_LEGACY_IOS",
},
{
job: prepare_packages_legacy,
displayName: 'Prepare legacy packages',
packages: [
{
job: 'xamarin_ios_sign_notarize',
name: 'Xamarin.iOS',
pattern: 'xamarin.ios-*',
conditionVariable: "INCLUDE_LEGACY_IOS",
},
{
job: 'xamarin_mac_sing_notarie',
name: 'Xamarin.Mac',
pattern: 'xamarin.mac-*',
conditionVariable: "INCLUDE_LEGACY_MAC",
},
],
job: 'xamarin_mac_sing_notarie',
name: 'Xamarin.Mac',
pattern: 'xamarin.mac-*',
conditionVariable: "INCLUDE_LEGACY_MAC",
}
]
@ -255,34 +223,22 @@ stages:
enableDotnet: ${{ parameters.enableDotnet }}
pool: ${{ parameters.pool }}
- ${{ each pkg_obj in parameters.packages }}:
- stage: ${{ pkg_obj.job }}
displayName: '${{ parameters.stageDisplayNamePrefix }}${{ pkg_obj.displayName }}'
dependsOn:
- build_packages
jobs:
- template: ./sign-and-notarized/prepare-pkg-stage.yml
parameters:
isPR: ${{ parameters.isPR }}
repositoryAlias: ${{ parameters.repositoryAlias }}
commit: ${{ parameters.commit }}
signingSetupSteps: ${{ parameters.signingSetupSteps }}
keyringPass: $(pass--lab--mac--builder--keychain)
enableDotnet: ${{ parameters.enableDotnet }}
skipESRP: ${{ parameters.skipESRP }}
packages: ${{ pkg_obj.packages }}
- ${{ if eq(parameters.enableDotnet, true) }}:
- stage: sign_notarize_dotnet
displayName: '${{ parameters.stageDisplayNamePrefix }}Sign & Notarize Dotnet'
dependsOn:
- build_packages
jobs:
- template: ./sign-and-notarized/dotnet-signing.yml
parameters:
isPR: ${{ parameters.isPR }}
repositoryAlias: ${{ parameters.repositoryAlias }}
commit: ${{ parameters.commit }}
- stage: prepare_packages_legacy
displayName: '${{ parameters.stageDisplayNamePrefix }}Prepare legacy packages'
condition: and(eq(dependencies.build_packages.result, 'Succeeded'), eq('${{ parameters.enableLegacySigning }}', true))
dependsOn:
- build_packages
jobs:
- template: ./sign-and-notarized/prepare-pkg-stage.yml
parameters:
isPR: ${{ parameters.isPR }}
repositoryAlias: ${{ parameters.repositoryAlias }}
commit: ${{ parameters.commit }}
signingSetupSteps: ${{ parameters.signingSetupSteps }}
keyringPass: $(pass--lab--mac--builder--keychain)
enableDotnet: ${{ parameters.enableDotnet }}
skipESRP: ${{ parameters.skipESRP }}
packages: ${{ parameters.legacyPackageJobs }}
# .NET Release Prep and VS Insertion Stages, only execute them when the build comes from an official branch and is not a schedule build from OneLoc
# setting the stage at this level makes the graph of the UI look better, else the lines overlap and is not clear.
@ -291,7 +247,7 @@ stages:
- ${{ if and(ne(variables['Build.Reason'], 'Schedule'), or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release-test/'), eq(variables['Build.SourceBranch'], 'refs/heads/net7.0'), eq(variables['Build.SourceBranch'], 'refs/heads/net8.0'), eq(parameters.forceInsertion, true))) }}:
- template: ./release/vs-insertion-prep.yml
parameters:
dependsOn: sign_notarize_dotnet
dependsOn: build_packages
stageDisplayNamePrefix: ${{ parameters.stageDisplayNamePrefix }}
isPR: ${{ parameters.isPR }}
repositoryAlias: ${{ parameters.repositoryAlias }}
@ -300,12 +256,9 @@ stages:
- stage: funnel
displayName: '${{ parameters.stageDisplayNamePrefix }}Collect signed artifacts'
condition: and(eq(dependencies.prepare_packages_legacy.result, 'Succeeded'), eq('${{ parameters.enableLegacySigning }}', true))
dependsOn:
- build_packages
- ${{ if eq(parameters.enableDotnet, true) }}:
- sign_notarize_dotnet
- ${{ each pkg_obj in parameters.packages }}:
- ${{ pkg_obj.job }}
- prepare_packages_legacy
jobs:
- template: ./sign-and-notarized/funnel.yml
parameters:
@ -315,9 +268,8 @@ stages:
azureStorage: ${{ parameters.azureStorage }}
azureContainer: ${{ parameters.azureContainer }}
packages: # flatten the pkgs for the parameter
- ${{ each pkg_obj in parameters.packages }}:
- ${{ each pkg in pkg_obj.packages }}:
- ${{ pkg }}
- ${{ each pkg in parameters.legacyPackageJobs }}:
- ${{ pkg }}
- ${{ if eq(parameters.enableAPIDiff, true) }}:
- stage: generate_api_diff

Просмотреть файл

@ -54,7 +54,7 @@ stages:
- template: sign-artifacts/jobs/v2.yml@yaml-templates
parameters:
signedArtifactName: '${{ parameters.uploadPrefix }}nuget-signed'
artifactName: '${{ parameters.uploadPrefix }}dotnet-signed'
artifactName: '${{ parameters.uploadPrefix }}not-signed-package'
signType: Real
usePipelineArtifactTasks: true
@ -64,7 +64,7 @@ stages:
yamlResourceName: yaml-templates
dependsOn: signing
artifactName: '${{ parameters.uploadPrefix }}nuget-signed'
propsArtifactName: ${{ parameters.uploadPrefix }}dotnet-signed
propsArtifactName: ${{ parameters.uploadPrefix }}not-signed-package
vsDropArtifactName: ${{ parameters.uploadPrefix }}vsdrop-signed
vsDropMultiTargetArtifactName: ${{ parameters.uploadPrefix }}vsdrop-multitarget-signed
msiNuGetArtifactName: ${{ parameters.uploadPrefix }}vs-msi-nugets

Просмотреть файл

@ -1,145 +0,0 @@
# job that signs all the diff dotnet built artifacts.
parameters:
- name: condition
default: succeeded()
- name: isPR
type: boolean
- name: repositoryAlias
type: string
default: self
- name: commit
type: string
default: HEAD
- name: uploadPrefix
type: string
default: '$(MaciosUploadPrefix)'
jobs:
- job: configure
displayName: 'Configure build'
pool:
vmImage: windows-latest
steps:
- template: ../common/configure.yml
parameters:
repositoryAlias: ${{ parameters.repositoryAlias }}
commit: ${{ parameters.commit }}
- job: sign_notarize_dotnet
dependsOn:
- configure
displayName: 'Sign & Notarize Dotnet'
timeoutInMinutes: 1000
pool:
vmImage: internal-macos-11
workspace:
clean: all
steps:
- template: setup.yml
parameters:
isPR: ${{ parameters.isPR }}
repositoryAlias: ${{ parameters.repositoryAlias }}
commit: ${{ parameters.commit }}
- bash: |
sudo rm -Rf $(Build.SourcesDirectory)/package
displayName: "Remove artifacts"
condition: always()
- task: DownloadPipelineArtifact@2
displayName: Download not notarized build
inputs:
artifact: '${{ parameters.uploadPrefix }}not-signed-package'
patterns: '!*.pkg'
allowFailedBuilds: true
path: $(Build.SourcesDirectory)/package
- ${{ if eq(parameters.isPR, false) }}:
- pwsh: |
# Get the list of files to sign
$msiFiles = Get-ChildItem -Path $(Build.SourcesDirectory)/package/ -Filter "*.msi"
# Add those files to an array
$SignFiles = @()
foreach($msi in $msiFiles) {
Write-Host "$($msi.FullName)"
$SignFiles += @{ "SrcPath"="$($msi.FullName)"}
}
Write-Host "$msiFiles"
# array of dicts
$SignFileRecord = @(
@{
"Certs" = "400";
"SignFileList" = $SignFiles;
}
)
$SignFileList = @{
"SignFileRecordList" = $SignFileRecord
}
# Write the json to a file
ConvertTo-Json -InputObject $SignFileList -Depth 5 | Out-File -FilePath $(Build.ArtifactStagingDirectory)/MsiFiles2Notarize.json -Force
dotnet $Env:MBSIGN_APPFOLDER/ddsignfiles.dll /filelist:$(Build.ArtifactStagingDirectory)/MsiFiles2Notarize.json
displayName: 'Sign .msi'
condition: ${{ parameters.condition }}
- pwsh: |
mv $(Build.SourcesDirectory)/package/bundle.zip $(Build.ArtifactStagingDirectory)/not-signed-bundle.zip
$bundlePath = "$(Build.ArtifactStagingDirectory)/bundle"
unzip $(Build.ArtifactStagingDirectory)/not-signed-bundle.zip -d $bundlePath
$patterns = @(
"*.iOS.dll",
"*.tvOS.dll",
"*.Mac.dll", "*.macOS.dll", "*XamMac.dll",
"*.MacCatalyst.dll",
"*.WatchOS.dll"
)
$files = @()
foreach ($p in $patterns) {
$files += Get-ChildItem -Path $bundlePath -Recurse -Filter $p
}
$SignFiles = @()
foreach($f in $files) {
Write-Host "$($f.FullName)"
$SignFiles += @{ "SrcPath"="$($f.FullName)"}
}
$SignFileRecord = @(
@{
"Certs" = "400";
"SignFileList" = $SignFiles;
}
)
$SignFileList = @{
"SignFileRecordList" = $SignFileRecord
}
# Write the json to a file
ConvertTo-Json -InputObject $SignFileList -Depth 100 | Out-File -FilePath $(Build.ArtifactStagingDirectory)/bundle.json -Force
dotnet $Env:MBSIGN_APPFOLDER/ddsignfiles.dll /filelist:$(Build.ArtifactStagingDirectory)/bundle.json
# rezip and move back
ditto -c -k --sequesterRsrc $bundlePath bundle.zip
mv bundle.zip $(Build.SourcesDirectory)/package/bundle.zip
displayName: 'Sign bundle.zip'
workingDirectory: $(Build.ArtifactStagingDirectory)
# always upload no matter what, since if we are not signing we need the artifact in the pipeline
- task: PublishPipelineArtifact@1
displayName: 'Publish Notarized Dotnet Artifacts'
inputs:
targetPath: $(Build.SourcesDirectory)/package
artifactName: '${{ parameters.uploadPrefix }}dotnet-signed'
continueOnError: true

Просмотреть файл

@ -93,13 +93,6 @@ jobs:
mkdir -p $(Build.SourcesDirectory)/package/notarized
displayName: 'Create target directories.'
- task: DownloadPipelineArtifact@2
displayName: Download notarized build dotnet
inputs:
artifact: '${{ parameters.uploadPrefix}}dotnet-signed'
allowFailedBuilds: true
path: $(Build.SourcesDirectory)/package
- ${{ each pkg in parameters.packages }}:
- task: DownloadPipelineArtifact@2
displayName: Download notarized build ${{ pkg.name }}
@ -159,7 +152,6 @@ jobs:
variables:
Parameters.outputStorageUri: ''
NUGETS_PUBLISHED: $[ stageDependencies.sign_notarize_dotnet.sign_notarize_dotnet.outputs['nugetPublishing.NUGETS_PUBLISHED'] ] # not a typo, stage and job have the same name
SKIP_NUGETS: $[ dependencies.configure.outputs['labels.skip_nugets'] ]
pool:

Просмотреть файл

@ -37,7 +37,6 @@ stages:
displayName: ${{ parameters.displayName }}
dependsOn:
- build_packages
- sign_notarize_dotnet
condition: and(succeeded(), eq(dependencies.build_packages.outputs['configure.decisions.RUN_WINDOWS_TESTS'], 'true'))
jobs:

Просмотреть файл

@ -104,6 +104,12 @@
<Compile Include="..\common\OSPlatformAttributeExtensions.cs">
<Link>external\tools\common\OSPlatformAttributeExtensions.cs</Link>
</Compile>
<Compile Include="..\common\CSToObjCMap.cs">
<Link>tools\common\CSToObjCMap.cs</Link>
</Compile>
<Compile Include="..\common\ObjCNameIndex.cs">
<Link>tools\common\ObjCNameIndex.cs</Link>
</Compile>
<Compile Include="..\common\StaticRegistrar.cs">
<Link>external\tools\common\StaticRegistrar.cs</Link>
</Compile>

Просмотреть файл

@ -43,6 +43,7 @@
<Reference Include="Mono.Cecil.Mdb">
<HintPath>..\..\builds\mono-ios-sdk-destdir\ios-bcl\monotouch_tools\Mono.Cecil.Mdb.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="Application.mmp.cs" />
@ -360,6 +361,12 @@
<Compile Include="..\common\OSPlatformAttributeExtensions.cs">
<Link>tools\common\OSPlatformAttributeExtensions.cs</Link>
</Compile>
<Compile Include="..\common\CSToObjCMap.cs">
<Link>tools\common\CSToObjCMap.cs</Link>
</Compile>
<Compile Include="..\common\ObjCNameIndex.cs">
<Link>tools\common\ObjCNameIndex.cs</Link>
</Compile>
<Compile Include="..\common\StaticRegistrar.cs">
<Link>tools\common\StaticRegistrar.cs</Link>
</Compile>

Просмотреть файл

@ -338,6 +338,12 @@
<Compile Include="..\common\OSPlatformAttributeExtensions.cs">
<Link>tools\common\OSPlatformAttributeExtensions.cs</Link>
</Compile>
<Compile Include="..\common\CSToObjCMap.cs">
<Link>tools\common\CSToObjCMap.cs</Link>
</Compile>
<Compile Include="..\common\ObjCNameIndex.cs">
<Link>tools\common\ObjCNameIndex.cs</Link>
</Compile>
<Compile Include="..\common\StaticRegistrar.cs">
<Link>tools\common\StaticRegistrar.cs</Link>
</Compile>