fix: react-native-windows implementation for new architecture (#2527)

# Summary
There are two main things going on with the PR. Both involve a reworking
of the new arch implementation of rn-svg for windows.
The current implementation attempts to implement a svg renderer from
scratch. There are numerous edge cases that it wasn't handling
correctly, and the performance had some serious issues. This
implementation switches to use the svg rendering path built into
Direct2D. This brings significant performance improvements.

The 2nd issue is there have been various breaking changes in
react-native-windows for how new arch native components are implemented.
This brings the rn-svg implementation in line with those latest changes.

## Test Plan

Primary testing right now is loading up the example app in the repo.
New arch on react-native-windows is still in somewhat early days - so
there are not really current users of this code. I am integrating this
code into Microsoft Office, where I have tested some scenarios. But we
will get expanded testing as we roll out the new arch. I expect there to
be some follow-ups as we expand our usage. The version of rn-svg before
this PR doesn't build with the latest new arch react-native-windows
versions. - So its hard to get worse than that.

### What's required for testing (prerequisites)?

### What are the steps to reproduce (after prerequisites)?

## Compatibility

| OS      | Implemented |
| ------- | :---------: |
| iOS     |    N/A  |
| MacOS   |    N/A      |
| Android |    N/A      |
| Web     |          |

## Checklist

- [x] I have tested this on a device and a simulator
- [ ] I added documentation in `README.md`
- [ ] I updated the typed files (typescript)
- [ ] I added a test for the API in the `__tests__` folder
This commit is contained in:
Andrew Coates
2024-11-15 03:17:12 -08:00
committed by GitHub
parent 6aff3094ce
commit d02c997352
101 changed files with 3268 additions and 3436 deletions
@@ -1,8 +1,3 @@
module.exports = {
presets: ['module:@react-native/babel-preset'],
plugins: [
'@babel/plugin-proposal-export-namespace-from',
'module:react-native-dotenv',
'react-native-reanimated/plugin',
],
};
+1 -1
View File
@@ -3,7 +3,7 @@
*/
import { AppRegistry } from 'react-native';
import App from '../common';
import App from '../common/noNavigationApp';
import { name as appName } from './app.json';
AppRegistry.registerComponent(appName, () => App);
+1 -5
View File
@@ -14,14 +14,11 @@
"react": "18.2.0",
"react-dom": "^18.2.0",
"react-native": "0.74.2",
"react-native-reanimated": "3.15.4",
"react-native-svg": "link:../../",
"react-native-view-shot": "4.0.0-alpha.2",
"react-native-windows": "0.74.9"
"react-native-windows": "0.74.24"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
"@react-native/babel-preset": "0.74.84",
@@ -39,7 +36,6 @@
"patch-package": "^8.0.0",
"postinstall-postinstall": "^2.1.0",
"prettier": "2.8.8",
"react-native-dotenv": "^3.4.11",
"react-test-renderer": "18.2.0",
"typescript": "5.0.4"
},
@@ -1,51 +0,0 @@
diff --git a/node_modules/react-native-view-shot/ios/RNViewShot.m b/node_modules/react-native-view-shot/ios/RNViewShot.m
index bd55b92..6a20e9d 100644
--- a/node_modules/react-native-view-shot/ios/RNViewShot.m
+++ b/node_modules/react-native-view-shot/ios/RNViewShot.m
@@ -106,7 +106,7 @@ - (dispatch_queue_t)methodQueue
scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
}
- UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:size];
+ UIGraphicsBeginImageContextWithOptions(size, NO, 0);
if (renderInContext) {
// this comes with some trade-offs such as inability to capture gradients or scrollview's content in full but it works for large views
@@ -117,8 +117,8 @@ - (dispatch_queue_t)methodQueue
// this doesn't work for large views and reports incorrect success even though the image is blank
success = [rendered drawViewHierarchyInRect:(CGRect){CGPointZero, size} afterScreenUpdates:YES];
}
-
- UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {}];
+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
+ UIGraphicsEndImageContext();
if (snapshotContentContainer) {
// Restore scroll & frame
@@ -152,11 +152,11 @@ - (dispatch_queue_t)methodQueue
NSString *res = nil;
if ([result isEqualToString:@"base64"]) {
// Return as a base64 raw string
- res = [data base64EncodedStringWithOptions: 0];
+ res = [data base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
}
else if ([result isEqualToString:@"data-uri"]) {
// Return as a base64 data uri string
- NSString *base64 = [data base64EncodedStringWithOptions: 0];
+ NSString *base64 = [data base64EncodedStringWithOptions: NSDataBase64EncodingEndLineWithLineFeed];
NSString *imageFormat = ([format isEqualToString:@"jpg"]) ? @"jpeg" : format;
res = [NSString stringWithFormat:@"data:image/%@;base64,%@", imageFormat, base64];
}
diff --git a/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts b/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
index a6f4c00..1e9e6ce 100644
--- a/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
+++ b/node_modules/react-native-view-shot/src/specs/NativeRNViewShot.ts
@@ -2,7 +2,7 @@ import type { TurboModule } from 'react-native';
import { TurboModuleRegistry } from 'react-native';
export interface Spec extends TurboModule {
- releaseCapture: () => string;
+ releaseCapture: (uri: string) => void;
captureRef: (tag: number, options: Object) => Promise<string>
captureScreen: (options: Object) => Promise<string>;
}
@@ -1,5 +1,5 @@
diff --git a/node_modules/react-native-windows/Microsoft.ReactNative/Modules/NativeUIManager.cpp b/node_modules/react-native-windows/Microsoft.ReactNative/Modules/NativeUIManager.cpp
index 97c1691..8136008 100644
index fb25176..eb1201a 100644
--- a/node_modules/react-native-windows/Microsoft.ReactNative/Modules/NativeUIManager.cpp
+++ b/node_modules/react-native-windows/Microsoft.ReactNative/Modules/NativeUIManager.cpp
@@ -309,16 +309,10 @@ static YGValue YGValueOrDefault(
@@ -4,9 +4,9 @@
"native,Version=v0.0": {
"Microsoft.JavaScript.Hermes": {
"type": "Direct",
"requested": "[0.1.21, )",
"resolved": "0.1.21",
"contentHash": "5njCh+3eXTLOv7+8nOnp6nJ5C0r6it5ze54c0nuWleeDptuK8t3dEDB79XTU4D5DKNvAPlqJpgXRDOak5nYIug=="
"requested": "[0.1.23, )",
"resolved": "0.1.23",
"contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g=="
},
"Microsoft.UI.Xaml": {
"type": "Direct",
@@ -25,18 +25,130 @@
},
"boost": {
"type": "Transitive",
"resolved": "1.76.0",
"contentHash": "p+w3YvNdXL8Cu9Fzrmexssu0tZbWxuf6ywsQqHjDlKFE5ojXHof1HIyMC3zDLfLnh80dIeFcEUAuR2Asg/XHRA=="
"resolved": "1.83.0",
"contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ=="
},
"Microsoft.Net.Native.Compiler": {
"type": "Transitive",
"resolved": "2.2.9-rel-29512-01",
"contentHash": "xjK9G8qoKaN1kUvOp/PuqYYxk6uGTZFwHUsHLrLXLyFVxnoHq/woqWyVb/n22uNWYtAoioeXlm6hZ0M8/f7eXw==",
"dependencies": {
"runtime.win10-arm.Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"runtime.win10-arm64.Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"runtime.win10-x64.Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"runtime.win10-x86.Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01"
}
},
"Microsoft.Net.UWPCoreRuntimeSdk": {
"type": "Transitive",
"resolved": "2.2.11",
"contentHash": "B1p3txWKwmO+Csf126X9y1gVQej/zOfUUAOE90iOmEHFMieIle/XfKrrAtlHIIo5snylwB8LgDsRn0kWlDsHhg==",
"dependencies": {
"runtime.win10-arm.Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"runtime.win10-x64.Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"runtime.win10-x86.Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11"
}
},
"Microsoft.NETCore.Platforms": {
"type": "Transitive",
"resolved": "2.1.0",
"contentHash": "ok+RPAtESz/9MUXeIEz6Lv5XAGQsaNmEYXMsgVALj4D7kqC8gveKWXWXbufLySR2fWrwZf8smyN5RmHu0e4BHA=="
},
"Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.0",
"Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"NETStandard.Library": "2.0.3"
}
},
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
"NETStandard.Library": {
"type": "Transitive",
"resolved": "2.0.3",
"contentHash": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.0"
}
},
"runtime.win10-arm.Microsoft.Net.Native.Compiler": {
"type": "Transitive",
"resolved": "2.2.9-rel-29512-01",
"contentHash": "p+v2gthEgj5Tgm4Cl05mfV0w6Q7IFMdOQXZQsiZRg4wBkKSdVoW9lgaxF8bVffBJYes2Vm8ovKpxwTrmEXRzFg==",
"dependencies": {
"runtime.win10-arm.Microsoft.Net.Native.SharedLibrary": "2.2.8-rel-29512-01"
}
},
"runtime.win10-arm.Microsoft.Net.Native.SharedLibrary": {
"type": "Transitive",
"resolved": "2.2.8-rel-29512-01",
"contentHash": "GUQ7Ubf9ts1XfNNaDrJUnmpsKfpcyZ+8NeZoDyYlImgT/UukkW1cYaxqbxM8VH+g5iIGXeO7suVv8tkwE862FA=="
},
"runtime.win10-arm.Microsoft.Net.UWPCoreRuntimeSdk": {
"type": "Transitive",
"resolved": "2.2.11",
"contentHash": "R1RaI4RSc+H9E5Pq9pndWzAv4dxztym4+TAII4VrsReePMGRM8eoJByg47BAPM4Y9mBv7esR0KhYc5J1/hpUIw=="
},
"runtime.win10-arm64.Microsoft.Net.Native.Compiler": {
"type": "Transitive",
"resolved": "2.2.9-rel-29512-01",
"contentHash": "8ex2blgQcIw/MoaJH7hqRJdekTWgMUz5Qb+xmVeGvbB/lWl4BPv6/J9+cmcFxEM+Z7OA8xilFH1kwWFMyvak1A==",
"dependencies": {
"runtime.win10-arm64.Microsoft.Net.Native.SharedLibrary": "2.2.8-rel-29512-01"
}
},
"runtime.win10-arm64.Microsoft.Net.Native.SharedLibrary": {
"type": "Transitive",
"resolved": "2.2.8-rel-29512-01",
"contentHash": "iYqXJq6hpg07RqAqq8RAffVU1308cQ2ta4ZZtfWI8tbVXGuKOU6he52AMgz4JfcP/Yb/khy9Gdxl62MVXcctzg=="
},
"runtime.win10-x64.Microsoft.Net.Native.Compiler": {
"type": "Transitive",
"resolved": "2.2.9-rel-29512-01",
"contentHash": "sgiiODHWt4WZ9mDpZd+XkCdWYCBZukjZPNz3XJdeKeeNcRA4y4OTtd2+STWytXDxWAXUNRjImDF5XP48jNXj8A==",
"dependencies": {
"runtime.win10-x64.Microsoft.Net.Native.SharedLibrary": "2.2.8-rel-29512-01"
}
},
"runtime.win10-x64.Microsoft.Net.Native.SharedLibrary": {
"type": "Transitive",
"resolved": "2.2.8-rel-29512-01",
"contentHash": "JoJavADSFAHk8KQo/bIHT+TTM1gn26X7A3DBltr0ocxcR+6FEnrFa1dLev2tFWmUcndeoyTklndZKwBkSFfEDw=="
},
"runtime.win10-x64.Microsoft.Net.UWPCoreRuntimeSdk": {
"type": "Transitive",
"resolved": "2.2.11",
"contentHash": "7e8MH4/tzwVV25dUvq+eYgvH31Tyi7kpGNcsqfzfJDYxA6hpGijhfZFFn2QHjORRoTu/BVxGM/9xc/bP4J0vRg=="
},
"runtime.win10-x86.Microsoft.Net.Native.Compiler": {
"type": "Transitive",
"resolved": "2.2.9-rel-29512-01",
"contentHash": "M586UCPkXEXFbbC7dNznyN9/uNSWNjOeWWHrKNhwztaIl5iCaqr9ITDu55hd7tRdsoi/mPthAH470k4Vml/UrA==",
"dependencies": {
"runtime.win10-x86.Microsoft.Net.Native.SharedLibrary": "2.2.8-rel-29512-01"
}
},
"runtime.win10-x86.Microsoft.Net.Native.SharedLibrary": {
"type": "Transitive",
"resolved": "2.2.8-rel-29512-01",
"contentHash": "s+oRLOdFSD8FS/hG2MBLzcdPzvBOzQqydYGLl/E+jaB7ijqYs8Dd3yeK72HgWLmKvp3rtkPhCHeRqYhA54+1YQ=="
},
"runtime.win10-x86.Microsoft.Net.UWPCoreRuntimeSdk": {
"type": "Transitive",
"resolved": "2.2.11",
"contentHash": "NF8tUTxFfwd8MXiA6ygCVuT7dVgEkaHpuwFnDeP1L2i1SIOxhk5w4HHySjmvbRSYtnjLA9BlOtwjGIJCztOHeg=="
},
"common": {
"type": "Project",
"dependencies": {
"boost": "[1.76.0, )"
"boost": "[1.83.0, )"
}
},
"fmt": {
@@ -46,7 +158,7 @@
"type": "Project",
"dependencies": {
"Fmt": "[1.0.0, )",
"boost": "[1.76.0, )"
"boost": "[1.83.0, )"
}
},
"microsoft.reactnative": {
@@ -54,17 +166,38 @@
"dependencies": {
"Common": "[1.0.0, )",
"Folly": "[1.0.0, )",
"Microsoft.JavaScript.Hermes": "[0.1.21, )",
"Microsoft.JavaScript.Hermes": "[0.1.23, )",
"Microsoft.UI.Xaml": "[2.8.0, )",
"ReactCommon": "[1.0.0, )",
"boost": "[1.76.0, )"
"boost": "[1.83.0, )"
}
},
"microsoft.reactnative.managed": {
"type": "Project",
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "[6.2.9, )",
"Microsoft.ReactNative": "[1.0.0, )"
}
},
"reactcommon": {
"type": "Project",
"dependencies": {
"Folly": "[1.0.0, )",
"boost": "[1.76.0, )"
"boost": "[1.83.0, )"
}
},
"reactnativeasyncstorage": {
"type": "Project",
"dependencies": {
"Microsoft.ReactNative": "[1.0.0, )",
"Microsoft.UI.Xaml": "[2.8.0, )"
}
},
"rnscreens": {
"type": "Project",
"dependencies": {
"Microsoft.ReactNative": "[1.0.0, )",
"Microsoft.UI.Xaml": "[2.8.0, )"
}
},
"rnsvg": {
@@ -73,55 +206,182 @@
"Microsoft.ReactNative": "[1.0.0, )",
"Microsoft.UI.Xaml": "[2.8.0, )"
}
},
"rnviewshot": {
"type": "Project",
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "[6.2.11, )",
"Microsoft.ReactNative": "[1.0.0, )",
"Microsoft.ReactNative.Managed": "[1.0.0, )"
}
}
},
"native,Version=v0.0/win10-arm": {
"Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.0",
"Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"NETStandard.Library": "2.0.3",
"runtime.win10-arm.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
}
},
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
"runtime.win10-arm.Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "TMXtd4TVwVgENc4tFWZ+rfnJXZfwRmeL9vkkwMjyCK6+dknZaFuiRMnZ9ggPDMZ4qtq4eKXDqhp7GIVzLkmTxQ=="
}
},
"native,Version=v0.0/win10-arm-aot": {
"Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.0",
"Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"NETStandard.Library": "2.0.3",
"runtime.win10-arm-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
}
},
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
"runtime.win10-arm-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "Sn/jnBh7ggB1TqoxrsEM2S+JpFM8FOO8lXRfdp9LWbUI1Vgzb+a5wpS1bXki1lJK6cFrVldDjbZv4D4NEfJuyg=="
}
},
"native,Version=v0.0/win10-arm64-aot": {
"Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.0",
"Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"NETStandard.Library": "2.0.3",
"runtime.win10-arm64-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
}
},
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
"runtime.win10-arm64-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "07IvykpRbKdON7JjrBxshOKTqkJ39h7b6xc6AE09h8DaoP8CsUkyn+IBRlMGAzfVNnQwaoCKf+EWoSCueBKaqQ=="
}
},
"native,Version=v0.0/win10-x64": {
"Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.0",
"Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"NETStandard.Library": "2.0.3",
"runtime.win10-x64.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
}
},
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
"runtime.win10-x64.Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "EqfKqHuQsosS4oPFBaKlUFMSV2ZSLh2VoxWnLkPiydVK9jIh31c2Au1csZ5ucQmXOra3vEuZLToOK4XNVLW2wQ=="
}
},
"native,Version=v0.0/win10-x64-aot": {
"Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.0",
"Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"NETStandard.Library": "2.0.3",
"runtime.win10-x64-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
}
},
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
"runtime.win10-x64-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "PfST4gE/8rgl0tPMlGYp7BqzFjrhSGMQd+V68P4IMze9V6cnlkyXof4apD9MDzl7MPMPO0wwlkMj89+4+vXP3A=="
}
},
"native,Version=v0.0/win10-x86": {
"Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.0",
"Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"NETStandard.Library": "2.0.3",
"runtime.win10-x86.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
}
},
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
"runtime.win10-x86.Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "Svwt46NcUEBhH+LNdg+9J+phHiWW3mmfuKrKT1RGI9QCownxaFg0kI5NCT0YhoMcndFT6fLsUA5VLswApg3/HA=="
}
},
"native,Version=v0.0/win10-x86-aot": {
"Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "YeOCD+m2tfqkYzQ2hAKZ52cTrHWU0HRS4/2vf3SeZ+KHWq+unmskH+TrRktaIj/pChwPUMwLdCTU5/+4WeQcWQ==",
"dependencies": {
"Microsoft.NETCore.Platforms": "2.1.0",
"Microsoft.Net.Native.Compiler": "2.2.9-rel-29512-01",
"Microsoft.Net.UWPCoreRuntimeSdk": "2.2.11",
"NETStandard.Library": "2.0.3",
"runtime.win10-x86-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.11"
}
},
"Microsoft.Web.WebView2": {
"type": "Transitive",
"resolved": "1.0.1264.42",
"contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
},
"runtime.win10-x86-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
"type": "Transitive",
"resolved": "6.2.11",
"contentHash": "2Yz+NstJwZlo4+9jfpQ+5fVuowPVIOG/Lp2yABPtfmh4VhbxoKyiAjeRo7bZUMk1RdwZL+LjJ5zg2l2Sh3ZhEA=="
}
}
}
File diff suppressed because it is too large Load Diff