[net8.0] Merge main into net8.0. (#18179)
This commit is contained in:
Коммит
07370b72eb
|
@ -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)]
|
||||
|
|
23
src/avkit.cs
23
src/avkit.cs
|
@ -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>
|
||||
|
|
Загрузка…
Ссылка в новой задаче