diff --git a/.github/templates/build-packages.yml b/.github/templates/build-packages.yml
index c2470842d4..624e396da6 100644
--- a/.github/templates/build-packages.yml
+++ b/.github/templates/build-packages.yml
@@ -1,5 +1,5 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "checkoutCode", "fetchWrapperBinaries", "msBuildMultiple", "readVersionFromPackage", "uploadArtifacts", "actionCache", "nugetPackages", "setupDotnet")
+#@ load("common.lib.yml", "checkoutCode", "fetchWrapperBinaries", "msBuildMultiple", "readVersionFromPackage", "uploadArtifacts", "actionCache", "nugetPackages", "setupDotnet", "setupWorkloads", "setupAndroid")
#@ def buildDocs():
- name: Check Docfx cache
@@ -66,6 +66,8 @@ jobs:
timeout-minutes: 30
steps:
- #@ template.replace(checkoutCode())
+ - #@ template.replace(setupAndroid())
+ - #@ setupWorkloads('tvos ios maccatalyst android')
- name: Set version suffix
id: set-version-suffix
#! Build suffix is pr-1234.5 for pr builds or alpha.123 for branch builds.
diff --git a/.github/templates/build-unity.yml b/.github/templates/build-unity.yml
index 010eb61986..789932c070 100644
--- a/.github/templates/build-unity.yml
+++ b/.github/templates/build-unity.yml
@@ -1,6 +1,5 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "checkoutCode", "uploadArtifacts", "nugetPackages", "actionDownloadArtifact")
-#@ load("test.lib.yml", "fetchPackageArtifacts")
+#@ load("common.lib.yml", "checkoutCode", "uploadArtifacts", "nugetPackages", "actionDownloadArtifact", "fetchPackageArtifacts")
#@ unityPkgName = "io.realm.unity-${{ inputs.version }}.tgz"
diff --git a/.github/templates/codeql.yml b/.github/templates/codeql.yml
index 3d0b03e875..efb8df8004 100644
--- a/.github/templates/codeql.yml
+++ b/.github/templates/codeql.yml
@@ -1,5 +1,5 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "configuration", "nugetPackages", "checkoutCode", "actionCodeQLInit", "actionCodeQLAnalyze", "actionSetupMSBuild")
+#@ load("common.lib.yml", "configuration", "nugetPackages", "checkoutCode", "actionCodeQLInit", "actionCodeQLAnalyze", "actionSetupMSBuild", "setupAndroid", "setupWorkloads")
#@ def runCodeQL(language, buildSteps = []):
- name: Initialize CodeQL
@@ -20,6 +20,8 @@
#@ end
#@ def buildPackages():
+ - #@ template.replace(setupAndroid())
+ - #@ setupWorkloads('tvos ios maccatalyst android')
- name: Add msbuild to PATH
uses: #@ actionSetupMSBuild
#@ for pkgName in nugetPackages:
@@ -45,6 +47,9 @@ name: "CodeQL"
- '.github/workflows/codeql.yml'
env:
REALM_DISABLE_ANALYTICS: true
+concurrency:
+ group: ${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
jobs:
analyze-csharp:
name: Analyze C#
diff --git a/.github/templates/common.lib.yml b/.github/templates/common.lib.yml
index d789125ab4..e44f324fb9 100644
--- a/.github/templates/common.lib.yml
+++ b/.github/templates/common.lib.yml
@@ -1,7 +1,8 @@
#@ load("@ytt:template", "template")
#@ configuration = "Release"
-#@ nugetPackages = [ 'Realm', 'Realm.UnityUtils', 'Realm.UnityWeaver' ]
+#@ publishedPackages = [ 'Realm.PlatformHelpers', 'Realm' ]
+#@ nugetPackages = publishedPackages + [ 'Realm.UnityUtils', 'Realm.UnityWeaver' ]
#@ actionCheckout = "actions/checkout@v3"
#@ actionCache = "nirinchev/cache@29e8e4dd9148ea81f9e188480132072cb6cc92d8"
#@ actionUploadArtifact = "actions/upload-artifact@v3"
@@ -15,6 +16,7 @@
#@ actionAWSConfigureCredentials = "aws-actions/configure-aws-credentials@v1-node16"
#@ actionReleaseToSlack = "realm/ci-actions/release-to-slack@729a80d203351eab7df4eca564daa275e76ec52f"
#@ actionSetupXcode = "maxim-lobanov/setup-xcode@9a697e2b393340c3cacd97468baa318e4c883d98"
+#@ actionSetupAndroid = "android-actions/setup-android@7c5672355aaa8fde5f97a91aa9a99616d1ace6bc"
#@ androidABIs = [ 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' ]
#@ windowsArchs = [ 'Win32', 'x64', 'ARM64' ]
@@ -132,7 +134,7 @@ with:
- name: Install sleet
run: dotnet tool install -g sleet
- #@ template.replace(configureAWSCredentials("NUGET_S3_ACCESS_KEY", "NUGET_S3_SECRET_KEY"))
-#@ for pkg in [ "Realm" ]:
+#@ for pkg in publishedPackages:
#@ pkg = pkg + ".${{ " + versionExpression + " }}"
#@ pkgPath = "" if expectShortPath else pkg + "/"
- name: #@ "NuGet Publish " + pkg
@@ -215,4 +217,32 @@ with:
run: #@ "npm publish ${{ github.workspace }}/Realm/packages/" + pkgPath + package + " --tag " + tag
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
-#@ end
\ No newline at end of file
+#@ end
+---
+#@ def fetchPackageArtifacts(versionExpression = "inputs.version", packages = publishedPackages):
+#@ for pkg in packages:
+ - name: #@ "Fetch " + pkg
+ uses: #@ actionDownloadArtifact
+ with:
+ name: #@ pkg + ".${{ " + versionExpression + " }}"
+ path: ${{ github.workspace }}/Realm/packages/
+#@ end
+#@ end
+---
+#@ def setupWorkloads(workloads = 'maui'):
+name: Setup workloads
+run: #@ "dotnet workload install " + workloads
+#@ end
+---
+#@ def restoreWorkloads(workingDirectory = 'Realm/Realm.PlatformHelpers'):
+name: Restore workloads
+run: dotnet workload restore
+working-directory: #@ "${{ github.workspace }}/" + workingDirectory
+#@ end
+---
+#@ def setupAndroid():
+ - name: Setup Android
+ uses: #@ actionSetupAndroid
+ - name: Install SDK platform 21
+ run: sdkmanager --install "platforms;android-21"
+#@ end
diff --git a/.github/templates/main.yml b/.github/templates/main.yml
index f83aadb20e..485eb3bdae 100644
--- a/.github/templates/main.yml
+++ b/.github/templates/main.yml
@@ -1,17 +1,8 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "checkoutCode", "uploadArtifacts", "uploadPackagesToSleet", "cleanupWorkspace", "dotnetPublish", "actionDownloadArtifact")
+#@ load("common.lib.yml", "checkoutCode", "uploadArtifacts", "uploadPackagesToSleet", "cleanupWorkspace", "dotnetPublish", "actionDownloadArtifact", "fetchPackageArtifacts")
#@ load("test.lib.yml", "dotnetBuildTests")
#@ load("build.lib.yml", "deployBaas", "cleanupBaas", "runTests", "runNetCoreTests", "ignoreSkippedJobsCondition", "buildUnity")
-#@ def fetchPackageArtifacts():
-#@ for pkg in [ "Realm" ]:
- - name: #@ "Fetch " + pkg
- uses: #@ actionDownloadArtifact
- with:
- name: #@ pkg + ".${{ needs.build-packages.outputs.package_version }}"
- path: ${{ github.workspace }}/Realm/packages/
-#@ end
-#@ end
---
name: main
"on":
@@ -49,7 +40,7 @@ jobs:
if: #@ ignoreSkippedJobsCondition + " && (github.event_name == 'push' || github.event.inputs.publish-prerelease)"
steps:
- #@ template.replace(checkoutCode(False, False))
- - #@ template.replace(fetchPackageArtifacts())
+ - #@ template.replace(fetchPackageArtifacts("needs.build-packages.outputs.package_version"))
- #@ template.replace(uploadPackagesToSleet("needs.build-packages.outputs.package_version", True))
_: #@ template.replace(buildUnity())
_: #@ template.replace(runTests(".NET Framework"))
@@ -68,7 +59,7 @@ jobs:
if: #@ ignoreSkippedJobsCondition
steps:
- #@ template.replace(checkoutCode())
- - #@ template.replace(fetchPackageArtifacts())
+ - #@ template.replace(fetchPackageArtifacts("needs.build-packages.outputs.package_version"))
- #@ template.replace(dotnetPublish("Tests/Tests.XUnit", "net6.0", "win-x64", { "RestoreConfigFile": "Tests/Test.NuGet.Config", "UseRealmNupkgsWithVersion": "${{ needs.build-packages.outputs.package_version }}" }))
- name: Run Tests
run: dotnet test ${{ steps.dotnet-publish.outputs.executable-path }}/Tests.XUnit.dll --logger GitHubActions
@@ -85,7 +76,7 @@ jobs:
steps:
- #@ template.replace(cleanupWorkspace())
- #@ template.replace(checkoutCode())
- - #@ template.replace(fetchPackageArtifacts())
+ - #@ template.replace(fetchPackageArtifacts("needs.build-packages.outputs.package_version"))
- #@ template.replace(dotnetBuildTests("Tests/Benchmarks/PerformanceTests", "net6.0", "linux-x64", "needs.build-packages.outputs.package_version"))
- name: Run the tests
run: #@ "${{ steps.dotnet-publish.outputs.executable-path }}/PerformanceTests -f \"*\" --join"
diff --git a/.github/templates/publish-release.yml b/.github/templates/publish-release.yml
index 2b896e0510..73c8551e61 100644
--- a/.github/templates/publish-release.yml
+++ b/.github/templates/publish-release.yml
@@ -94,6 +94,7 @@ jobs:
- #@ template.replace(downloadAllArtifacts())
- #@ template.replace(readVersionFromPackage())
- #@ template.replace(uploadDocsToS3())
+ - #@ template.replace(uploadToNuget("Realm.PlatformHelpers"))
- #@ template.replace(uploadToNuget("Realm"))
- #@ template.replace(uploadToNpm())
- #@ template.replace(mergeReleasePR())
diff --git a/.github/templates/test-android.yml b/.github/templates/test-android.yml
index 2618ad93f9..10d93348b5 100644
--- a/.github/templates/test-android.yml
+++ b/.github/templates/test-android.yml
@@ -1,6 +1,6 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "checkoutCode", "configureAWSCredentials")
-#@ load("test.lib.yml", "fetchPackageArtifacts", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "prepareTest")
+#@ load("common.lib.yml", "checkoutCode", "configureAWSCredentials", "fetchPackageArtifacts", "setupWorkloads")
+#@ load("test.lib.yml", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "prepareTest")
---
name: test-android
@@ -32,9 +32,7 @@ jobs:
steps:
- #@ template.replace(checkoutCode())
- #@ template.replace(fetchPackageArtifacts())
- - name: Setup workloads
- run: |
- dotnet workload install maui
+ - #@ setupWorkloads()
- name: Build the tests
run: #@ "dotnet publish Tests/Tests.Maui -c Release -f net6.0-android -p:RestoreConfigFile=Tests/Test.NuGet.Config -p:UseRealmNupkgsWithVersion=${{ inputs.version }}"
- #@ template.replace(configureAWSCredentials("AWS_DEVICEFARM_ACCESS_KEY_ID", "AWS_DEVICEFARM_SECRET_ACCESS_KEY", "us-west-2"))
diff --git a/.github/templates/test-ios.yml b/.github/templates/test-ios.yml
index 3bd433fc64..b06fedfeb5 100644
--- a/.github/templates/test-ios.yml
+++ b/.github/templates/test-ios.yml
@@ -1,6 +1,6 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "checkoutCode", "configuration", "actionRuniOSSimulator")
-#@ load("test.lib.yml", "fetchPackageArtifacts", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "prepareTest")
+#@ load("common.lib.yml", "checkoutCode", "configuration", "actionRuniOSSimulator", "fetchPackageArtifacts", "setupWorkloads")
+#@ load("test.lib.yml", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "prepareTest")
---
name: test-ios
@@ -34,9 +34,7 @@ jobs:
run: |
sudo xcode-select -s "/Applications/Xcode_14.3.app"
echo "MD_APPLE_SDK_ROOT=/Applications/Xcode_14.3.app" >> $GITHUB_ENV
- - name: Setup workloads
- run: |
- dotnet workload install maui
+ - #@ setupWorkloads()
- name: Build the tests
run: #@ "dotnet build Tests/Tests.Maui -c " + configuration + " -f net6.0-ios -p:RestoreConfigFile=Tests/Test.NuGet.Config -p:UseRealmNupkgsWithVersion=${{ inputs.version }}"
- name: Run the tests
diff --git a/.github/templates/test-macos.yml b/.github/templates/test-macos.yml
index 38c759e333..2b3cda6266 100644
--- a/.github/templates/test-macos.yml
+++ b/.github/templates/test-macos.yml
@@ -1,6 +1,6 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "checkoutCode", "configuration")
-#@ load("test.lib.yml", "fetchPackageArtifacts", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "prepareTest")
+#@ load("common.lib.yml", "checkoutCode", "configuration", "fetchPackageArtifacts", "setupWorkloads")
+#@ load("test.lib.yml", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "prepareTest")
---
name: test-macos
@@ -23,9 +23,7 @@ jobs:
steps:
- #@ template.replace(checkoutCode())
- #@ template.replace(fetchPackageArtifacts())
- - name: Setup workloads
- run: |
- dotnet workload install maui
+ - #@ setupWorkloads()
- name: Build the tests
run: #@ "dotnet build Tests/Tests.Maui -c " + configuration + " -f net6.0-maccatalyst -p:RestoreConfigFile=Tests/Test.NuGet.Config -p:UseRealmNupkgsWithVersion=${{ inputs.version }}"
- name: Run the tests
diff --git a/.github/templates/test-source-generation.yml b/.github/templates/test-source-generation.yml
index b070e9cfc1..5938e8536f 100644
--- a/.github/templates/test-source-generation.yml
+++ b/.github/templates/test-source-generation.yml
@@ -1,5 +1,5 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "checkoutCode", "dotnetPublish")
+#@ load("common.lib.yml", "checkoutCode", "dotnetPublish", "setupWorkloads")
#@ load("test.lib.yml", "publishTestsResults")
---
@@ -13,6 +13,7 @@ jobs:
timeout-minutes: 45
steps:
- #@ template.replace(checkoutCode())
+ - #@ setupWorkloads('tvos ios maccatalyst android')
- #@ template.replace(dotnetPublish("Tests/SourceGenerators/Realm.SourceGenerator.Tests", "net6.0", "win-x64"))
- name: Run the tests
run: #@ "${{ steps.dotnet-publish.outputs.executable-path }}/Realm.SourceGenerator.Tests --result=TestResults.SourceGeneration.xml"
diff --git a/.github/templates/test-tvos.yml b/.github/templates/test-tvos.yml
index 50faa8bff4..6a4aea1502 100644
--- a/.github/templates/test-tvos.yml
+++ b/.github/templates/test-tvos.yml
@@ -1,6 +1,6 @@
#@ load("@ytt:template", "template")
#@ load("common.lib.yml", "checkoutCode", "configuration", "actionRuniOSSimulator")
-#@ load("test.lib.yml", "fetchPackageArtifacts", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "prepareTest")
+#@ load("test.lib.yml", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "prepareTest")
---
name: test-tvos
diff --git a/.github/templates/test-woven-classes.yml b/.github/templates/test-woven-classes.yml
index 0f70b6779f..ab33fb2a12 100644
--- a/.github/templates/test-woven-classes.yml
+++ b/.github/templates/test-woven-classes.yml
@@ -1,6 +1,6 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "checkoutCode")
-#@ load("test.lib.yml", "fetchPackageArtifacts", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "wovenClassesBuildTests")
+#@ load("common.lib.yml", "checkoutCode", "fetchPackageArtifacts")
+#@ load("test.lib.yml", "baasTestArgs", "publishTestsResults", "testDefinition", "buildTests", "wovenClassesBuildTests")
---
name: test-woven-classes
diff --git a/.github/templates/test.lib.yml b/.github/templates/test.lib.yml
index ec9fe86f9d..fde049e7ed 100644
--- a/.github/templates/test.lib.yml
+++ b/.github/templates/test.lib.yml
@@ -1,15 +1,5 @@
#@ load("@ytt:template", "template")
-#@ load("common.lib.yml", "actionDownloadArtifact", "msbuild", "dotnetPublish", "fetchWrapperBinaries", "checkoutCode")
-
-#@ def fetchPackageArtifacts(versionExpression = "inputs.version", packages = [ "Realm" ]):
-#@ for pkg in packages:
- - name: #@ "Fetch " + pkg
- uses: #@ actionDownloadArtifact
- with:
- name: #@ pkg + ".${{ " + versionExpression + " }}"
- path: ${{ github.workspace }}/Realm/packages/
-#@ end
-#@ end
+#@ load("common.lib.yml", "actionDownloadArtifact", "msbuild", "dotnetPublish", "fetchWrapperBinaries", "checkoutCode", "fetchPackageArtifacts")
#@ def baasTestArgs(differentiator):
#@ return " --baasurl=${{ inputs.realmUrl }} --baascluster=${{ inputs.clusterName }} --baasapikey=${{ secrets.AtlasPublicKey}} --baasprivateapikey=${{ secrets.AtlasPrivateKey}} --baasprojectid=${{ secrets.AtlasProjectId }} --baasdifferentiator=" + differentiator
diff --git a/.github/workflows/build-packages.yml b/.github/workflows/build-packages.yml
index fd4b995551..b69cd93f88 100755
--- a/.github/workflows/build-packages.yml
+++ b/.github/workflows/build-packages.yml
@@ -29,6 +29,12 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Setup Android
+ uses: android-actions/setup-android@7c5672355aaa8fde5f97a91aa9a99616d1ace6bc
+ - name: Install SDK platform 21
+ run: sdkmanager --install "platforms;android-21"
+ - name: Setup workloads
+ run: dotnet workload install tvos ios maccatalyst android
- name: Set version suffix
id: set-version-suffix
run: |
@@ -148,6 +154,8 @@ jobs:
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@0b44c6745b7e81956596964100aadb92d667c497
if: ${{ runner.os == 'Windows' }}
+ - name: Build Realm/Realm.PlatformHelpers
+ run: msbuild Realm/Realm.PlatformHelpers -t:Pack -p:Configuration=Release -restore -p:PackageOutputPath=${{ github.workspace }}/Realm/packages -p:VersionSuffix=${{ steps.set-version-suffix.outputs.build_suffix }}
- name: Build Realm/Realm
run: msbuild Realm/Realm -t:Pack -p:Configuration=Release -restore -p:PackageOutputPath=${{ github.workspace }}/Realm/packages -p:VersionSuffix=${{ steps.set-version-suffix.outputs.build_suffix }}
- name: Build Realm/Realm.UnityUtils
@@ -161,6 +169,13 @@ jobs:
pkgVersion=$(find . -type f -regex ".*Realm.[1-9].*.nupkg" -exec basename {} \; | sed -n 's/Realm\.\(.*\)\.nupkg$/\1/p')
echo "version=$pkgVersion" >> $GITHUB_OUTPUT
shell: bash
+ - name: Store artifacts for Realm.PlatformHelpers.${{ steps.get-version.outputs.version }}
+ uses: actions/upload-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ steps.get-version.outputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/Realm.PlatformHelpers.${{ steps.get-version.outputs.version }}.*nupkg
+ retention-days: ${{ github.event_name != 'pull_request' && 30 || 1 }}
+ if-no-files-found: error
- name: Store artifacts for Realm.${{ steps.get-version.outputs.version }}
uses: actions/upload-artifact@v3
with:
diff --git a/.github/workflows/build-unity.yml b/.github/workflows/build-unity.yml
index 62c08ceb2b..178da4b8a0 100755
--- a/.github/workflows/build-unity.yml
+++ b/.github/workflows/build-unity.yml
@@ -23,6 +23,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index ce37ddb2b7..6311cad7ab 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -14,6 +14,9 @@ name: CodeQL
- .github/workflows/codeql.yml
env:
REALM_DISABLE_ANALYTICS: true
+concurrency:
+ group: ${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
jobs:
analyze-csharp:
name: Analyze C#
@@ -38,8 +41,16 @@ jobs:
query-filters:
- exclude: cs/call-to-unmanaged-code
- exclude: cs/unmanaged-code
+ - name: Setup Android
+ uses: android-actions/setup-android@7c5672355aaa8fde5f97a91aa9a99616d1ace6bc
+ - name: Install SDK platform 21
+ run: sdkmanager --install "platforms;android-21"
+ - name: Setup workloads
+ run: dotnet workload install tvos ios maccatalyst android
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@0b44c6745b7e81956596964100aadb92d667c497
+ - name: Build Realm.PlatformHelpers
+ run: msbuild Realm/Realm.PlatformHelpers -p:UseSharedCompilation=false -restore -p:Configuration=Release
- name: Build Realm
run: msbuild Realm/Realm -p:UseSharedCompilation=false -restore -p:Configuration=Release
- name: Build Realm.UnityUtils
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9c6fe31ac3..4f35d9d063 100755
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -47,6 +47,11 @@ jobs:
with:
submodules: false
ref: ${{ github.event.pull_request.head.sha }}
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ needs.build-packages.outputs.package_version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
@@ -64,6 +69,8 @@ jobs:
aws-access-key-id: ${{ secrets.NUGET_S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.NUGET_S3_SECRET_KEY }}
aws-region: us-east-1
+ - name: NuGet Publish Realm.PlatformHelpers.${{ needs.build-packages.outputs.package_version }}
+ run: sleet push ${{ github.workspace }}/Realm/packages/Realm.PlatformHelpers.${{ needs.build-packages.outputs.package_version }}.nupkg --config ${{ github.workspace }}/.github/sleet.json --source NugetSource
- name: NuGet Publish Realm.${{ needs.build-packages.outputs.package_version }}
run: sleet push ${{ github.workspace }}/Realm/packages/Realm.${{ needs.build-packages.outputs.package_version }}.nupkg --config ${{ github.workspace }}/.github/sleet.json --source NugetSource
build-unity:
@@ -195,6 +202,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ needs.build-packages.outputs.package_version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
@@ -245,6 +257,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ needs.build-packages.outputs.package_version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
diff --git a/.github/workflows/publish-prerelease.yml b/.github/workflows/publish-prerelease.yml
index 705855fcb1..98b3abf6f8 100644
--- a/.github/workflows/publish-prerelease.yml
+++ b/.github/workflows/publish-prerelease.yml
@@ -36,6 +36,8 @@ jobs:
aws-access-key-id: ${{ secrets.NUGET_S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.NUGET_S3_SECRET_KEY }}
aws-region: us-east-1
+ - name: NuGet Publish Realm.PlatformHelpers.${{ steps.get-version.outputs.version }}
+ run: sleet push ${{ github.workspace }}/Realm/packages/Realm.PlatformHelpers.${{ steps.get-version.outputs.version }}/Realm.PlatformHelpers.${{ steps.get-version.outputs.version }}.nupkg --config ${{ github.workspace }}/.github/sleet.json --source NugetSource
- name: NuGet Publish Realm.${{ steps.get-version.outputs.version }}
run: sleet push ${{ github.workspace }}/Realm/packages/Realm.${{ steps.get-version.outputs.version }}/Realm.${{ steps.get-version.outputs.version }}.nupkg --config ${{ github.workspace }}/.github/sleet.json --source NugetSource
- uses: actions/setup-node@16352bb09bc672a073e326c2cc1d3d7d2a3e577e
diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
index 8826c99939..4d8c4db09d 100755
--- a/.github/workflows/publish-release.yml
+++ b/.github/workflows/publish-release.yml
@@ -38,6 +38,8 @@ jobs:
{
aws s3 sync --acl public-read "${{ github.workspace }}\Realm\packages\_site" s3://realm-sdks/docs/realm-sdks/dotnet/$ver/
}
+ - name: NuGet Publish Realm.PlatformHelpers.${{ steps.get-version.outputs.version }}
+ run: dotnet nuget push ${{ github.workspace }}/Realm/packages/Realm.PlatformHelpers.${{ steps.get-version.outputs.version }}/Realm.PlatformHelpers.${{ steps.get-version.outputs.version }}.nupkg --skip-duplicate --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
- name: NuGet Publish Realm.${{ steps.get-version.outputs.version }}
run: dotnet nuget push ${{ github.workspace }}/Realm/packages/Realm.${{ steps.get-version.outputs.version }}/Realm.${{ steps.get-version.outputs.version }}.nupkg --skip-duplicate --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
- uses: actions/setup-node@16352bb09bc672a073e326c2cc1d3d7d2a3e577e
diff --git a/.github/workflows/test-android.yml b/.github/workflows/test-android.yml
index 834331289c..8e9353c80f 100755
--- a/.github/workflows/test-android.yml
+++ b/.github/workflows/test-android.yml
@@ -47,6 +47,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
@@ -106,14 +111,18 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
name: Realm.${{ inputs.version }}
path: ${{ github.workspace }}/Realm/packages/
- name: Setup workloads
- run: |
- dotnet workload install maui
+ run: dotnet workload install maui
- name: Build the tests
run: dotnet publish Tests/Tests.Maui -c Release -f net6.0-android -p:RestoreConfigFile=Tests/Test.NuGet.Config -p:UseRealmNupkgsWithVersion=${{ inputs.version }}
- name: Configure AWS Credentials
diff --git a/.github/workflows/test-ios.yml b/.github/workflows/test-ios.yml
index bc55442d54..1f498a3f09 100755
--- a/.github/workflows/test-ios.yml
+++ b/.github/workflows/test-ios.yml
@@ -39,6 +39,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
@@ -90,6 +95,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
@@ -101,8 +111,7 @@ jobs:
sudo xcode-select -s "/Applications/Xcode_14.3.app"
echo "MD_APPLE_SDK_ROOT=/Applications/Xcode_14.3.app" >> $GITHUB_ENV
- name: Setup workloads
- run: |
- dotnet workload install maui
+ run: dotnet workload install maui
- name: Build the tests
run: dotnet build Tests/Tests.Maui -c Release -f net6.0-ios -p:RestoreConfigFile=Tests/Test.NuGet.Config -p:UseRealmNupkgsWithVersion=${{ inputs.version }}
- name: Run the tests
diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml
index a57b467dad..c279d1e753 100755
--- a/.github/workflows/test-macos.yml
+++ b/.github/workflows/test-macos.yml
@@ -39,6 +39,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
@@ -85,14 +90,18 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
name: Realm.${{ inputs.version }}
path: ${{ github.workspace }}/Realm/packages/
- name: Setup workloads
- run: |
- dotnet workload install maui
+ run: dotnet workload install maui
- name: Build the tests
run: dotnet build Tests/Tests.Maui -c Release -f net6.0-maccatalyst -p:RestoreConfigFile=Tests/Test.NuGet.Config -p:UseRealmNupkgsWithVersion=${{ inputs.version }}
- name: Run the tests
diff --git a/.github/workflows/test-net-core.yml b/.github/workflows/test-net-core.yml
index 1f84c8e847..7c8e704b7d 100755
--- a/.github/workflows/test-net-core.yml
+++ b/.github/workflows/test-net-core.yml
@@ -64,6 +64,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
- name: Cleanup Workspace
run: git clean -fdx
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
diff --git a/.github/workflows/test-net-framework.yml b/.github/workflows/test-net-framework.yml
index 7dfe305f7e..dd358438d3 100755
--- a/.github/workflows/test-net-framework.yml
+++ b/.github/workflows/test-net-framework.yml
@@ -39,6 +39,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
diff --git a/.github/workflows/test-source-generation.yml b/.github/workflows/test-source-generation.yml
index 95f33aa68a..32db8b2767 100644
--- a/.github/workflows/test-source-generation.yml
+++ b/.github/workflows/test-source-generation.yml
@@ -16,6 +16,8 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Setup workloads
+ run: dotnet workload install tvos ios maccatalyst android
- name: Publish Tests/SourceGenerators/Realm.SourceGenerator.Tests
run: dotnet publish Tests/SourceGenerators/Realm.SourceGenerator.Tests -c Release -f net6.0 -r win-x64 --no-self-contained
- name: Output executable path
diff --git a/.github/workflows/test-tvos.yml b/.github/workflows/test-tvos.yml
index 3f41f72d37..0702c89d38 100755
--- a/.github/workflows/test-tvos.yml
+++ b/.github/workflows/test-tvos.yml
@@ -39,6 +39,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
diff --git a/.github/workflows/test-uwp-managed.yml b/.github/workflows/test-uwp-managed.yml
index 908e9ae092..0559637d6a 100755
--- a/.github/workflows/test-uwp-managed.yml
+++ b/.github/workflows/test-uwp-managed.yml
@@ -43,6 +43,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
diff --git a/.github/workflows/test-woven-classes.yml b/.github/workflows/test-woven-classes.yml
index 0ed301bdc6..b9670c41c9 100644
--- a/.github/workflows/test-woven-classes.yml
+++ b/.github/workflows/test-woven-classes.yml
@@ -39,6 +39,11 @@ jobs:
run: echo "::add-matcher::.github/problem-matchers/csc.json"
- name: Register msvc problem matcher
run: echo "::add-matcher::.github/problem-matchers/msvc.json"
+ - name: Fetch Realm.PlatformHelpers
+ uses: actions/download-artifact@v3
+ with:
+ name: Realm.PlatformHelpers.${{ inputs.version }}
+ path: ${{ github.workspace }}/Realm/packages/
- name: Fetch Realm
uses: actions/download-artifact@v3
with:
diff --git a/Realm - Windows.sln b/Realm - Windows.sln
index 677f1d0ffc..24110f6aac 100644
--- a/Realm - Windows.sln
+++ b/Realm - Windows.sln
@@ -89,6 +89,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Maui", "Tests\Tests.M
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DeployApps", "Tools\DeployApps\DeployApps.csproj", "{10026D09-FC37-48B3-AAEA-B322AA6D89CE}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Realm.PlatformHelpers", "Realm\Realm.PlatformHelpers\Realm.PlatformHelpers.csproj", "{536C3309-F848-4485-ABF3-56DCD9C9F9E8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.XamarinTVOS", "Tests\Tests.XamarinTVOS\Tests.XamarinTVOS.csproj", "{80B9697D-0C57-40E8-A71A-F5E81C7BF467}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -287,6 +291,7 @@ Global
{CDAB5FEE-CC5D-4EFA-807F-F1B974047BE7}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
{10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|ARM.ActiveCfg = Debug|Any CPU
{10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|ARM.Build.0 = Debug|Any CPU
{10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
@@ -1373,6 +1378,102 @@ Global
{10026D09-FC37-48B3-AAEA-B322AA6D89CE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
{10026D09-FC37-48B3-AAEA-B322AA6D89CE}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
{10026D09-FC37-48B3-AAEA-B322AA6D89CE}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|ARM.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|x64.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Debug|x86.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|ARM.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|ARM.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|iPhone.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|iPhone.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|x64.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.MinSizeRel|x86.Build.0 = Debug|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|ARM.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|ARM.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|iPhone.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|x64.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|x64.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|x86.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.Release|x86.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|iPhone.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|iPhone.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|iPhoneSimulator.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|ARM.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|iPhone.ActiveCfg = Debug|iPhone
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|iPhone.Build.0 = Debug|iPhone
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|x64.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Debug|x86.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|Any CPU.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|Any CPU.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|ARM.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|ARM.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|iPhone.ActiveCfg = Debug|iPhone
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|iPhone.Build.0 = Debug|iPhone
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|x64.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|x64.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|x86.ActiveCfg = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.MinSizeRel|x86.Build.0 = Debug|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|ARM.Build.0 = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|iPhone.ActiveCfg = Release|iPhone
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|iPhone.Build.0 = Release|iPhone
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|x64.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|x64.Build.0 = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|x86.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.Release|x86.Build.0 = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|Any CPU.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|Any CPU.Build.0 = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|ARM.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|ARM.Build.0 = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|iPhone.ActiveCfg = Release|iPhone
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|iPhone.Build.0 = Release|iPhone
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|x64.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|x64.Build.0 = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|x86.ActiveCfg = Release|iPhoneSimulator
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467}.RelWithDebInfo|x86.Build.0 = Release|iPhoneSimulator
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1406,6 +1507,8 @@ Global
{3C3CEB09-94C5-4FE4-BF75-1CEF4EAF6E47} = {EC97E75C-3A79-4B00-95BD-218D71C58746}
{C84EBA8B-5F7F-4519-BB34-EDE93E275D66} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
{10026D09-FC37-48B3-AAEA-B322AA6D89CE} = {073F6C2D-FECB-41E3-BEA3-1685FAA580DB}
+ {536C3309-F848-4485-ABF3-56DCD9C9F9E8} = {50F058DF-2B41-403C-BB73-8B4180D1CF39}
+ {80B9697D-0C57-40E8-A71A-F5E81C7BF467} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BE5E0028-B74D-4BE1-B1DA-5FFCC8469C41}
diff --git a/Realm.sln b/Realm.sln
index 23fa8bdc78..ae84417497 100644
--- a/Realm.sln
+++ b/Realm.sln
@@ -44,44 +44,46 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SourceGenerators", "SourceG
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.XamarinTVOS", "Tests\Tests.XamarinTVOS\Tests.XamarinTVOS.csproj", "{80B9697D-0C57-40E8-A71A-F5E81C7BF467}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeployApps", "Tools\DeployApps\DeployApps.csproj", "{56029D1A-0AF6-4535-9D6A-CD5CD61325C6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DeployApps", "Tools\DeployApps\DeployApps.csproj", "{56029D1A-0AF6-4535-9D6A-CD5CD61325C6}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Realm.Fody", "Realm\Realm.Fody\Realm.Fody.csproj", "{2AC1DA0E-2B6E-4DBA-A73F-6784BA0A7DB4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Realm.Fody", "Realm\Realm.Fody\Realm.Fody.csproj", "{2AC1DA0E-2B6E-4DBA-A73F-6784BA0A7DB4}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Tests.XamarinMac", "Tests\Tests.XamarinMac\Tests.XamarinMac.csproj", "{EEB44902-3249-4945-8ACA-125912E6F2F5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.XamarinMac", "Tests\Tests.XamarinMac\Tests.XamarinMac.csproj", "{3A6CC342-40D0-4487-9964-DDAEBA628199}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Realm.FakeForWeaverTests", "Tests\Weaver\Realm.FakeForWeaverTests\Realm.FakeForWeaverTests.csproj", "{7174D68E-E76D-4A4F-9F9A-601F5FB2DB65}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Realm.FakeForWeaverTests", "Tests\Weaver\Realm.FakeForWeaverTests\Realm.FakeForWeaverTests.csproj", "{7174D68E-E76D-4A4F-9F9A-601F5FB2DB65}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "RealmFreeAssemblyToProcess", "Tests\Weaver\RealmFreeAssemblyToProcess\RealmFreeAssemblyToProcess.csproj", "{C04E5F74-83F0-4A2F-981D-A3442B083F40}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RealmFreeAssemblyToProcess", "Tests\Weaver\RealmFreeAssemblyToProcess\RealmFreeAssemblyToProcess.csproj", "{C04E5F74-83F0-4A2F-981D-A3442B083F40}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "AssemblyToProcess", "Tests\Weaver\AssemblyToProcess\AssemblyToProcess.csproj", "{FAD8E779-25DD-4AF1-BEB0-4B8D9696ACAD}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyToProcess", "Tests\Weaver\AssemblyToProcess\AssemblyToProcess.csproj", "{FAD8E779-25DD-4AF1-BEB0-4B8D9696ACAD}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Realm.Fody.Tests", "Tests\Weaver\Realm.Fody.Tests\Realm.Fody.Tests.csproj", "{218C6795-AA18-4861-8613-D022C0C53628}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Realm.Fody.Tests", "Tests\Weaver\Realm.Fody.Tests\Realm.Fody.Tests.csproj", "{218C6795-AA18-4861-8613-D022C0C53628}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "PerformanceTests", "Tests\Benchmarks\PerformanceTests\PerformanceTests.csproj", "{90616AF5-9024-4054-B40B-9A82F8F4DC83}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PerformanceTests", "Tests\Benchmarks\PerformanceTests\PerformanceTests.csproj", "{90616AF5-9024-4054-B40B-9A82F8F4DC83}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Benchmarks", "Tests\Benchmarks\Benchmarks\Benchmarks.csproj", "{BECF4F60-9741-49A6-BD79-D59664C2682E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Benchmarks", "Tests\Benchmarks\Benchmarks\Benchmarks.csproj", "{BECF4F60-9741-49A6-BD79-D59664C2682E}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Benchmarks.Android", "Tests\Benchmarks\Benchmarks.Android\Benchmarks.Android.csproj", "{197FBF65-C978-4FB4-BB6F-F7D76C320218}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Benchmarks.Android", "Tests\Benchmarks\Benchmarks.Android\Benchmarks.Android.csproj", "{907F4283-1EA9-41FE-B482-9BD2A72F0850}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Benchmarks.iOS", "Tests\Benchmarks\Benchmarks.iOS\Benchmarks.iOS.csproj", "{B7340A22-2989-45EE-B05D-0682B5C43897}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Benchmarks.iOS", "Tests\Benchmarks\Benchmarks.iOS\Benchmarks.iOS.csproj", "{CE887906-33F1-4B47-8E8F-C6A7A60D1372}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Tests.Android", "Tests\Tests.Android\Tests.Android.csproj", "{E14C7032-A542-4A5A-AB5B-62E25F2B105C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.Android", "Tests\Tests.Android\Tests.Android.csproj", "{10725A22-B22F-46AB-B5C4-7BC505A1E74A}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Tests.XUnit", "Tests\Tests.XUnit\Tests.XUnit.csproj", "{12EFED5B-E168-401E-9BCB-4FBB928720AB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.XUnit", "Tests\Tests.XUnit\Tests.XUnit.csproj", "{12EFED5B-E168-401E-9BCB-4FBB928720AB}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Tests.Maui", "Tests\Tests.Maui\Tests.Maui.csproj", "{B4C6AD4A-DA91-4171-90D8-0F46378EAEBE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Maui", "Tests\Tests.Maui\Tests.Maui.csproj", "{B4C6AD4A-DA91-4171-90D8-0F46378EAEBE}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "SourceGeneratorAssemblyToProcess", "Tests\SourceGenerators\SourceGeneratorAssemblyToProcess\SourceGeneratorAssemblyToProcess.csproj", "{5466EA2B-2810-4E79-8DA4-BE580832B568}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SourceGeneratorAssemblyToProcess", "Tests\SourceGenerators\SourceGeneratorAssemblyToProcess\SourceGeneratorAssemblyToProcess.csproj", "{5466EA2B-2810-4E79-8DA4-BE580832B568}"
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Realm.SourceGenerator.Tests", "Tests\SourceGenerators\Realm.SourceGenerator.Tests\Realm.SourceGenerator.Tests.csproj", "{641367F9-5149-4E5D-9459-B19DAFC426A8}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Realm.SourceGenerator.Tests", "Tests\SourceGenerators\Realm.SourceGenerator.Tests\Realm.SourceGenerator.Tests.csproj", "{641367F9-5149-4E5D-9459-B19DAFC426A8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.UWP", "Tests\Tests.UWP\Tests.UWP.csproj", "{7EFF9E5C-5E74-469B-8DB7-C25C9AF0444E}"
ProjectSection(ProjectDependencies) = postProject
{2AC1DA0E-2B6E-4DBA-A73F-6784BA0A7DB4} = {2AC1DA0E-2B6E-4DBA-A73F-6784BA0A7DB4}
EndProjectSection
EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "SetupUnityPackage", "Tools\SetupUnityPackage\SetupUnityPackage.csproj", "{A9B5E8CA-E1B8-47E4-89D4-8A55327F4121}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SetupUnityPackage", "Tools\SetupUnityPackage\SetupUnityPackage.csproj", "{A9B5E8CA-E1B8-47E4-89D4-8A55327F4121}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Realm.PlatformHelpers", "Realm\Realm.PlatformHelpers\Realm.PlatformHelpers.csproj", "{D08C71CE-0F5B-4855-A77C-58062A5ECB78}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -315,30 +317,30 @@ Global
{2AC1DA0E-2B6E-4DBA-A73F-6784BA0A7DB4}.Release|x64.Build.0 = Release|Any CPU
{2AC1DA0E-2B6E-4DBA-A73F-6784BA0A7DB4}.Release|x86.ActiveCfg = Release|Any CPU
{2AC1DA0E-2B6E-4DBA-A73F-6784BA0A7DB4}.Release|x86.Build.0 = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|ARM.Build.0 = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|iPhone.Build.0 = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|x64.ActiveCfg = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|x64.Build.0 = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|x86.ActiveCfg = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Debug|x86.Build.0 = Debug|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|Any CPU.Build.0 = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|ARM.ActiveCfg = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|ARM.Build.0 = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|iPhone.ActiveCfg = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|iPhone.Build.0 = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|x64.ActiveCfg = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|x64.Build.0 = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|x86.ActiveCfg = Release|Any CPU
- {EEB44902-3249-4945-8ACA-125912E6F2F5}.Release|x86.Build.0 = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|ARM.Build.0 = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|x64.Build.0 = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Debug|x86.Build.0 = Debug|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|ARM.ActiveCfg = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|ARM.Build.0 = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|iPhone.Build.0 = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|x64.ActiveCfg = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|x64.Build.0 = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|x86.ActiveCfg = Release|Any CPU
+ {3A6CC342-40D0-4487-9964-DDAEBA628199}.Release|x86.Build.0 = Release|Any CPU
{7174D68E-E76D-4A4F-9F9A-601F5FB2DB65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7174D68E-E76D-4A4F-9F9A-601F5FB2DB65}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7174D68E-E76D-4A4F-9F9A-601F5FB2DB65}.Debug|ARM.ActiveCfg = Debug|Any CPU
@@ -483,78 +485,78 @@ Global
{BECF4F60-9741-49A6-BD79-D59664C2682E}.Release|x64.Build.0 = Release|Any CPU
{BECF4F60-9741-49A6-BD79-D59664C2682E}.Release|x86.ActiveCfg = Release|Any CPU
{BECF4F60-9741-49A6-BD79-D59664C2682E}.Release|x86.Build.0 = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|ARM.Build.0 = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|iPhone.Build.0 = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|x64.ActiveCfg = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|x64.Build.0 = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|x86.ActiveCfg = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Debug|x86.Build.0 = Debug|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|Any CPU.Build.0 = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|ARM.ActiveCfg = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|ARM.Build.0 = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|iPhone.ActiveCfg = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|iPhone.Build.0 = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|x64.ActiveCfg = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|x64.Build.0 = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|x86.ActiveCfg = Release|Any CPU
- {197FBF65-C978-4FB4-BB6F-F7D76C320218}.Release|x86.Build.0 = Release|Any CPU
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|ARM.Build.0 = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|iPhone.ActiveCfg = Debug|iPhone
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|iPhone.Build.0 = Debug|iPhone
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|x64.Build.0 = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Debug|x86.Build.0 = Debug|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|ARM.Build.0 = Release|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|iPhone.ActiveCfg = Release|iPhone
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|iPhone.Build.0 = Release|iPhone
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|x64.ActiveCfg = Release|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|x64.Build.0 = Release|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|x86.ActiveCfg = Release|iPhoneSimulator
- {B7340A22-2989-45EE-B05D-0682B5C43897}.Release|x86.Build.0 = Release|iPhoneSimulator
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|ARM.Build.0 = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|iPhone.Build.0 = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|x64.ActiveCfg = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|x64.Build.0 = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Debug|x86.Build.0 = Debug|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|Any CPU.Build.0 = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|ARM.ActiveCfg = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|ARM.Build.0 = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|iPhone.ActiveCfg = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|iPhone.Build.0 = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|x64.ActiveCfg = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|x64.Build.0 = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|x86.ActiveCfg = Release|Any CPU
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C}.Release|x86.Build.0 = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|ARM.Build.0 = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|x64.Build.0 = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Debug|x86.Build.0 = Debug|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|Any CPU.Build.0 = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|ARM.ActiveCfg = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|ARM.Build.0 = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|iPhone.Build.0 = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|x64.ActiveCfg = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|x64.Build.0 = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|x86.ActiveCfg = Release|Any CPU
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850}.Release|x86.Build.0 = Release|Any CPU
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|ARM.Build.0 = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|iPhone.ActiveCfg = Debug|iPhone
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|iPhone.Build.0 = Debug|iPhone
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|x64.Build.0 = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Debug|x86.Build.0 = Debug|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|Any CPU.Build.0 = Release|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|ARM.ActiveCfg = Release|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|ARM.Build.0 = Release|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|iPhone.ActiveCfg = Release|iPhone
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|iPhone.Build.0 = Release|iPhone
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|x64.ActiveCfg = Release|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|x64.Build.0 = Release|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|x86.ActiveCfg = Release|iPhoneSimulator
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372}.Release|x86.Build.0 = Release|iPhoneSimulator
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|ARM.Build.0 = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|x64.Build.0 = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Debug|x86.Build.0 = Debug|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|ARM.ActiveCfg = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|ARM.Build.0 = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|iPhone.Build.0 = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|x64.ActiveCfg = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|x64.Build.0 = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|x86.ActiveCfg = Release|Any CPU
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A}.Release|x86.Build.0 = Release|Any CPU
{12EFED5B-E168-401E-9BCB-4FBB928720AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{12EFED5B-E168-401E-9BCB-4FBB928720AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{12EFED5B-E168-401E-9BCB-4FBB928720AB}.Debug|ARM.ActiveCfg = Debug|Any CPU
@@ -699,6 +701,30 @@ Global
{A9B5E8CA-E1B8-47E4-89D4-8A55327F4121}.Release|x64.Build.0 = Release|Any CPU
{A9B5E8CA-E1B8-47E4-89D4-8A55327F4121}.Release|x86.ActiveCfg = Release|Any CPU
{A9B5E8CA-E1B8-47E4-89D4-8A55327F4121}.Release|x86.Build.0 = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|ARM.Build.0 = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|x64.Build.0 = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Debug|x86.Build.0 = Debug|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|ARM.ActiveCfg = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|ARM.Build.0 = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|iPhone.Build.0 = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|x64.ActiveCfg = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|x64.Build.0 = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|x86.ActiveCfg = Release|Any CPU
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -717,29 +743,30 @@ Global
{80B9697D-0C57-40E8-A71A-F5E81C7BF467} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
{56029D1A-0AF6-4535-9D6A-CD5CD61325C6} = {A25317DE-BB3A-47CC-8E65-F96C9B6AD984}
{2AC1DA0E-2B6E-4DBA-A73F-6784BA0A7DB4} = {50F058DF-2B41-403C-BB73-8B4180D1CF39}
- {EEB44902-3249-4945-8ACA-125912E6F2F5} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
- {E14C7032-A542-4A5A-AB5B-62E25F2B105C} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
- {12EFED5B-E168-401E-9BCB-4FBB928720AB} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
- {B4C6AD4A-DA91-4171-90D8-0F46378EAEBE} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
- {7EFF9E5C-5E74-469B-8DB7-C25C9AF0444E} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
+ {3A6CC342-40D0-4487-9964-DDAEBA628199} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
{7174D68E-E76D-4A4F-9F9A-601F5FB2DB65} = {4FF9AAE6-210E-41F0-A5E1-8D7C4A864F51}
{C04E5F74-83F0-4A2F-981D-A3442B083F40} = {4FF9AAE6-210E-41F0-A5E1-8D7C4A864F51}
{FAD8E779-25DD-4AF1-BEB0-4B8D9696ACAD} = {4FF9AAE6-210E-41F0-A5E1-8D7C4A864F51}
{218C6795-AA18-4861-8613-D022C0C53628} = {4FF9AAE6-210E-41F0-A5E1-8D7C4A864F51}
{90616AF5-9024-4054-B40B-9A82F8F4DC83} = {9F4D5A18-5A85-4031-A73A-472BEF405A18}
{BECF4F60-9741-49A6-BD79-D59664C2682E} = {9F4D5A18-5A85-4031-A73A-472BEF405A18}
- {197FBF65-C978-4FB4-BB6F-F7D76C320218} = {9F4D5A18-5A85-4031-A73A-472BEF405A18}
- {B7340A22-2989-45EE-B05D-0682B5C43897} = {9F4D5A18-5A85-4031-A73A-472BEF405A18}
+ {907F4283-1EA9-41FE-B482-9BD2A72F0850} = {9F4D5A18-5A85-4031-A73A-472BEF405A18}
+ {CE887906-33F1-4B47-8E8F-C6A7A60D1372} = {9F4D5A18-5A85-4031-A73A-472BEF405A18}
+ {10725A22-B22F-46AB-B5C4-7BC505A1E74A} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
+ {12EFED5B-E168-401E-9BCB-4FBB928720AB} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
+ {B4C6AD4A-DA91-4171-90D8-0F46378EAEBE} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
{5466EA2B-2810-4E79-8DA4-BE580832B568} = {CC933D98-B002-4306-89C4-B1905658D9DE}
{641367F9-5149-4E5D-9459-B19DAFC426A8} = {CC933D98-B002-4306-89C4-B1905658D9DE}
+ {7EFF9E5C-5E74-469B-8DB7-C25C9AF0444E} = {D10BE048-9C20-4B8B-BE5B-48CC55F8BB07}
{A9B5E8CA-E1B8-47E4-89D4-8A55327F4121} = {A25317DE-BB3A-47CC-8E65-F96C9B6AD984}
+ {D08C71CE-0F5B-4855-A77C-58062A5ECB78} = {50F058DF-2B41-403C-BB73-8B4180D1CF39}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BE5E0028-B74D-4BE1-B1DA-5FFCC8469C41}
EndGlobalSection
GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ Realm\Realm.Weaver\Realm.Weaver.projitems*{2ac1da0e-2b6e-4dba-a73f-6784ba0a7db4}*SharedItemsImports = 5
Realm\Realm.Weaver\Realm.Weaver.projitems*{89fdb2a1-6fc0-4604-9aeb-8b8dd8a88dec}*SharedItemsImports = 13
Realm\Realm.Weaver\Realm.Weaver.projitems*{9322b1d0-b3f7-4d6a-9947-2fc11d3161a0}*SharedItemsImports = 5
- Realm\Realm.Weaver\Realm.Weaver.projitems*{cdab5fee-cc5d-4efa-807f-f1b974047be7}*SharedItemsImports = 5
EndGlobalSection
EndGlobal
diff --git a/Realm/AssemblyInfo.props b/Realm/AssemblyInfo.props
index 61f9966f5c..e9033fe7f8 100644
--- a/Realm/AssemblyInfo.props
+++ b/Realm/AssemblyInfo.props
@@ -1,6 +1,6 @@
- Realm .NET
+ Realm .NET
11.0.0
Realm is a mobile database: a replacement for SQLite
Realm Inc.
diff --git a/Realm/Realm.PlatformHelpers/Android/DeviceInfo.android.cs b/Realm/Realm.PlatformHelpers/Android/DeviceInfo.android.cs
new file mode 100644
index 0000000000..4c8749dc69
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/Android/DeviceInfo.android.cs
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License")
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+using Android.OS;
+
+using static Realms.PlatformHelpers.Platform;
+
+namespace Realms.PlatformHelpers
+{
+ internal class DeviceInfo : IDeviceInfo
+ {
+ public string Name => Build.Manufacturer ?? Unknown;
+
+ public string Version => Build.Model ?? Unknown;
+ }
+}
diff --git a/Realm/Realm.PlatformHelpers/Apple/DeviceInfo.ios.cs b/Realm/Realm.PlatformHelpers/Apple/DeviceInfo.ios.cs
new file mode 100644
index 0000000000..e972cdfbdb
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/Apple/DeviceInfo.ios.cs
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License")
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+using static Realms.PlatformHelpers.Platform;
+
+namespace Realms.PlatformHelpers
+{
+ internal class DeviceInfo : IDeviceInfo
+ {
+ public string Name => UIKit.UIDevice.CurrentDevice.Model;
+
+ public string Version => NativeHelpers.GetSysctlProperty("hw.machine") ?? Unknown;
+ }
+}
diff --git a/Realm/Realm.PlatformHelpers/Apple/DeviceInfo.mac.cs b/Realm/Realm.PlatformHelpers/Apple/DeviceInfo.mac.cs
new file mode 100644
index 0000000000..cd61225353
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/Apple/DeviceInfo.mac.cs
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License")
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+using static Realms.PlatformHelpers.Platform;
+
+namespace Realms.PlatformHelpers
+{
+ internal class DeviceInfo : IDeviceInfo
+ {
+ public string Name => "Apple";
+
+ public string Version => NativeHelpers.GetSysctlProperty("hw.model") ?? Unknown;
+ }
+}
diff --git a/Realm/Realm.PlatformHelpers/Apple/NativeHelpers.ios.mac.cs b/Realm/Realm.PlatformHelpers/Apple/NativeHelpers.ios.mac.cs
new file mode 100644
index 0000000000..da44c819c3
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/Apple/NativeHelpers.ios.mac.cs
@@ -0,0 +1,65 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License")
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+using System;
+using System.Runtime.InteropServices;
+using ObjCRuntime;
+
+namespace Realms.PlatformHelpers
+{
+ internal static class NativeHelpers
+ {
+ [DllImport(Constants.SystemLibrary, EntryPoint = "sysctlbyname")]
+ internal static extern int SysctlByName([MarshalAs(UnmanagedType.LPStr)] string property, IntPtr output, IntPtr oldLen, IntPtr newp, uint newlen);
+
+ internal static string? GetSysctlProperty(string property)
+ {
+ var lengthPtr = Marshal.AllocHGlobal(sizeof(int));
+
+ IntPtr? valuePtr = null;
+ try
+ {
+ SysctlByName(property, IntPtr.Zero, lengthPtr, IntPtr.Zero, 0);
+
+ var propertyLength = Marshal.ReadInt32(lengthPtr);
+
+ if (propertyLength > 0)
+ {
+ valuePtr = Marshal.AllocHGlobal(propertyLength);
+ SysctlByName(property, valuePtr.Value, lengthPtr, IntPtr.Zero, 0);
+
+ return Marshal.PtrToStringAnsi(valuePtr.Value);
+ }
+ }
+ catch
+ {
+ }
+ finally
+ {
+ Marshal.FreeHGlobal(lengthPtr);
+
+ if (valuePtr.HasValue)
+ {
+ Marshal.FreeHGlobal(valuePtr.Value);
+ }
+ }
+
+ return null;
+ }
+ }
+}
diff --git a/Realm/Realm.PlatformHelpers/AssemblyInfo.shared.cs b/Realm/Realm.PlatformHelpers/AssemblyInfo.shared.cs
new file mode 100644
index 0000000000..d73a6b33aa
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/AssemblyInfo.shared.cs
@@ -0,0 +1,23 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+using System.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("Realm")]
+[assembly: InternalsVisibleTo("Realm.Tests")]
+[assembly: InternalsVisibleTo("Realm.UnityUtils")]
diff --git a/Realm/Realm.PlatformHelpers/DeviceInfo.shared.cs b/Realm/Realm.PlatformHelpers/DeviceInfo.shared.cs
new file mode 100644
index 0000000000..0080398e05
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/DeviceInfo.shared.cs
@@ -0,0 +1,27 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License")
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+namespace Realms.PlatformHelpers
+{
+ internal interface IDeviceInfo
+ {
+ string Name { get; }
+
+ string Version { get; }
+ }
+}
diff --git a/Realm/Realm.PlatformHelpers/Platform.shared.cs b/Realm/Realm.PlatformHelpers/Platform.shared.cs
new file mode 100644
index 0000000000..5220c6f2ee
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/Platform.shared.cs
@@ -0,0 +1,45 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License")
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+using System;
+
+namespace Realms.PlatformHelpers
+{
+ internal static class Platform
+ {
+ public const string Unknown = "";
+
+ private static IDeviceInfo? _deviceInfo;
+
+ private static Lazy _deviceInfoLazy = new(() => _deviceInfo ?? new DeviceInfo());
+
+ public static IDeviceInfo DeviceInfo
+ {
+ get => _deviceInfoLazy.Value;
+ set
+ {
+ if (_deviceInfoLazy.IsValueCreated)
+ {
+ throw new Exception("DeviceInfo should only be configured once");
+ }
+
+ _deviceInfo = value;
+ }
+ }
+ }
+}
diff --git a/Realm/Realm.PlatformHelpers/Realm.PlatformHelpers.csproj b/Realm/Realm.PlatformHelpers/Realm.PlatformHelpers.csproj
new file mode 100644
index 0000000000..ca5f3f5cce
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/Realm.PlatformHelpers.csproj
@@ -0,0 +1,59 @@
+
+
+
+ Realm Platform Helpers
+
+ A set of platform-specific helpers used in conjunction with Realm. This package is always referenced by the main Realm package
+ and should never be added directly to your project.
+
+
+ netstandard2.0
+
+
+ $(TargetFrameworks);net6.0-ios;net6.0-android;net6.0-maccatalyst;net6.0-tvos
+
+
+
+
+ $(TargetFrameworks);MonoAndroid5;Xamarin.iOS10;Xamarin.TVOS10;Xamarin.Mac20
+
+ $(TargetFrameworks);uap10.0.19041;
+ false
+ 9.0
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+ Windows Desktop Extensions for the UWP
+
+
+ Windows Mobile Extensions for the UWP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Realm/Realm.PlatformHelpers/UWP/DeviceInfo.uwp.cs b/Realm/Realm.PlatformHelpers/UWP/DeviceInfo.uwp.cs
new file mode 100644
index 0000000000..17d78cb480
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/UWP/DeviceInfo.uwp.cs
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License")
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+using Windows.Security.ExchangeActiveSyncProvisioning;
+
+namespace Realms.PlatformHelpers
+{
+ internal class DeviceInfo : IDeviceInfo
+ {
+ private static EasClientDeviceInformation deviceInfo = new();
+
+ public string Name => deviceInfo.SystemManufacturer;
+
+ public string Version => deviceInfo.SystemProductName;
+ }
+}
diff --git a/Realm/Realm.PlatformHelpers/fallback/DeviceInfo.netstandard.cs b/Realm/Realm.PlatformHelpers/fallback/DeviceInfo.netstandard.cs
new file mode 100644
index 0000000000..8b5a2e9b3d
--- /dev/null
+++ b/Realm/Realm.PlatformHelpers/fallback/DeviceInfo.netstandard.cs
@@ -0,0 +1,29 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License")
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+using static Realms.PlatformHelpers.Platform;
+
+namespace Realms.PlatformHelpers
+{
+ internal class DeviceInfo : IDeviceInfo
+ {
+ public string Name => Unknown;
+
+ public string Version => Unknown;
+ }
+}
diff --git a/Realm/Realm.Unity/Runtime/Realm.PlatformHelpers.dll.meta b/Realm/Realm.Unity/Runtime/Realm.PlatformHelpers.dll.meta
new file mode 100644
index 0000000000..bf3930466c
--- /dev/null
+++ b/Realm/Realm.Unity/Runtime/Realm.PlatformHelpers.dll.meta
@@ -0,0 +1,33 @@
+fileFormatVersion: 2
+guid: 0b22610015bc4fa9804e1339dbc21c0e
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Realm/Realm.UnityUtils/DeviceInfo.cs b/Realm/Realm.UnityUtils/DeviceInfo.cs
new file mode 100644
index 0000000000..26bfd93334
--- /dev/null
+++ b/Realm/Realm.UnityUtils/DeviceInfo.cs
@@ -0,0 +1,30 @@
+////////////////////////////////////////////////////////////////////////////
+//
+// Copyright 2023 Realm Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License")
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////
+
+using Realms.PlatformHelpers;
+using UnityEngine;
+
+namespace Realm.UnityUtils
+{
+ internal class UnityDeviceInfo : IDeviceInfo
+ {
+ public string Name => Platform.Unknown;
+
+ public string Version => SystemInfo.deviceModel;
+ }
+}
diff --git a/Realm/Realm.UnityUtils/Initializer.cs b/Realm/Realm.UnityUtils/Initializer.cs
index f22df09a95..d33bfa79f1 100644
--- a/Realm/Realm.UnityUtils/Initializer.cs
+++ b/Realm/Realm.UnityUtils/Initializer.cs
@@ -17,7 +17,9 @@
////////////////////////////////////////////////////////////////////////////
using System.Threading;
+using Realm.UnityUtils;
using Realms;
+using Realms.PlatformHelpers;
using UnityEngine;
namespace UnityUtils
@@ -31,6 +33,7 @@ public static void Initialize()
{
if (Interlocked.CompareExchange(ref _isInitialized, 1, 0) == 0)
{
+ Platform.DeviceInfo = new UnityDeviceInfo();
InteropConfig.AddPotentialStorageFolder(FileHelper.GetStorageFolder());
Realms.Logging.Logger.Console = new UnityLogger();
Application.quitting += () =>
diff --git a/Realm/Realm.UnityUtils/Realm.UnityUtils.csproj b/Realm/Realm.UnityUtils/Realm.UnityUtils.csproj
index 5da87b19bd..23a71edae0 100644
--- a/Realm/Realm.UnityUtils/Realm.UnityUtils.csproj
+++ b/Realm/Realm.UnityUtils/Realm.UnityUtils.csproj
@@ -25,7 +25,7 @@
-
+
diff --git a/Realm/Realm.UnityWeaver/Realm.UnityWeaver.csproj b/Realm/Realm.UnityWeaver/Realm.UnityWeaver.csproj
index 366230d062..68282f29f4 100644
--- a/Realm/Realm.UnityWeaver/Realm.UnityWeaver.csproj
+++ b/Realm/Realm.UnityWeaver/Realm.UnityWeaver.csproj
@@ -22,7 +22,7 @@
-
+
diff --git a/Realm/Realm.Weaver/Realm.Weaver.projitems b/Realm/Realm.Weaver/Realm.Weaver.projitems
index b3ac2cae1b..3d14f8f13f 100644
--- a/Realm/Realm.Weaver/Realm.Weaver.projitems
+++ b/Realm/Realm.Weaver/Realm.Weaver.projitems
@@ -10,6 +10,6 @@
-
+
\ No newline at end of file
diff --git a/Realm/Realm/Handles/AppHandle.cs b/Realm/Realm/Handles/AppHandle.cs
index eb58bd01d8..762d4e2c2a 100644
--- a/Realm/Realm/Handles/AppHandle.cs
+++ b/Realm/Realm/Handles/AppHandle.cs
@@ -1,4 +1,4 @@
-////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////
//
// Copyright 2020 Realm Inc.
//
@@ -23,6 +23,7 @@
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using Realms.Native;
+using Realms.PlatformHelpers;
using Realms.Sync.Exceptions;
using Realms.Sync.Native;
@@ -170,9 +171,23 @@ public static void Initialize()
platformVersion += $" {Environment.OSVersion.ServicePack}";
}
- // TODO: try and infer device information as part of RNET-849
- var deviceName = "unknown";
- var deviceVersion = "unknown";
+ string deviceName;
+ string deviceVersion;
+ try
+ {
+ deviceName = Platform.DeviceInfo.Name;
+ deviceVersion = Platform.DeviceInfo.Version;
+ }
+ catch
+ {
+ // If we can't get the device info, don't crash the app.
+ deviceName = Platform.Unknown;
+ deviceVersion = Platform.Unknown;
+
+#if DEBUG
+ throw;
+#endif
+ }
NativeMethods.initialize(
frameworkName, frameworkName.IntPtrLength(),
diff --git a/Realm/Realm/Handles/SharedRealmHandle.cs b/Realm/Realm/Handles/SharedRealmHandle.cs
index ced3277a28..630ec90413 100644
--- a/Realm/Realm/Handles/SharedRealmHandle.cs
+++ b/Realm/Realm/Handles/SharedRealmHandle.cs
@@ -237,6 +237,9 @@ public static extern void rename_property(SharedRealmHandle sharedRealm,
[DllImport(InteropConfig.DLL_NAME, EntryPoint = "shared_realm_set_log_level", CallingConvention = CallingConvention.Cdecl)]
public static extern bool set_log_level(LogLevel level);
+ [DllImport(InteropConfig.DLL_NAME, EntryPoint = "shared_realm_get_operating_system", CallingConvention = CallingConvention.Cdecl)]
+ public static extern IntPtr get_operating_system(IntPtr buffer, IntPtr buffer_length);
+
#pragma warning restore SA1121 // Use built-in type alias
#pragma warning restore IDE0049 // Use built-in type alias
}
@@ -759,6 +762,16 @@ public async Task RefreshAsync()
}
}
+ public static string GetNativeLibraryOS()
+ {
+ return MarshalHelpers.GetString((IntPtr buffer, IntPtr length, out bool isNull, out NativeException ex) =>
+ {
+ isNull = false;
+ ex = default;
+ return NativeMethods.get_operating_system(buffer, length);
+ })!;
+ }
+
[MonoPInvokeCallback(typeof(NativeMethods.GetNativeSchemaCallback))]
private static void GetNativeSchema(Native.Schema schema, IntPtr managedCallbackPtr)
{
diff --git a/Realm/Realm/Realm.cs b/Realm/Realm/Realm.cs
index 197694aebc..d129f0f9c6 100644
--- a/Realm/Realm/Realm.cs
+++ b/Realm/Realm/Realm.cs
@@ -1093,7 +1093,6 @@ internal IQueryable AllEmbedded()
public T? Find(Guid? primaryKey)
where T : IRealmObject => FindCore(primaryKey);
- [SuppressMessage("Reliability", "CA2000:Dispose objects before losing scope", Justification = "The RealmObjectBase instance will own its handle.")]
internal T? FindCore(RealmValue primaryKey)
where T : IRealmObject
{
@@ -1657,7 +1656,6 @@ public IEmbeddedObject CreateEmbeddedObjectForProperty(IRealmObjectBase parent,
///
///
///
- [SuppressMessage("Design", "CA1062:Validate arguments of public methods", Justification = "Argument is validated in PerformEmbeddedListOperation.")]
public IEmbeddedObject AddEmbeddedObjectToList(object list)
{
return PerformEmbeddedListOperation(list, listHandle => listHandle.AddEmbedded());
@@ -1676,7 +1674,6 @@ public IEmbeddedObject AddEmbeddedObjectToList(object list)
///
///
///
- [SuppressMessage("Design", "CA1062:Validate arguments of public methods", Justification = "Argument is validated in PerformEmbeddedListOperation.")]
public IEmbeddedObject InsertEmbeddedObjectInList(object list, int index)
{
if (index < 0)
@@ -1703,7 +1700,6 @@ public IEmbeddedObject InsertEmbeddedObjectInList(object list, int index)
///
///
///
- [SuppressMessage("Design", "CA1062:Validate arguments of public methods", Justification = "Argument is validated in PerformEmbeddedListOperation.")]
public IEmbeddedObject SetEmbeddedObjectInList(object list, int index)
{
if (index < 0)
@@ -1726,7 +1722,6 @@ public IEmbeddedObject SetEmbeddedObjectInList(object list, int index)
/// and .
///
///
- [SuppressMessage("Design", "CA1062:Validate arguments of public methods", Justification = "Argument is validated in PerformEmbeddedListOperation.")]
public IEmbeddedObject AddEmbeddedObjectToDictionary(object dictionary, string key)
{
Argument.NotNull(key, nameof(key));
@@ -1746,7 +1741,6 @@ public IEmbeddedObject AddEmbeddedObjectToDictionary(object dictionary, string k
/// and .
///
///
- [SuppressMessage("Design", "CA1062:Validate arguments of public methods", Justification = "Argument is validated in PerformEmbeddedListOperation.")]
public IEmbeddedObject SetEmbeddedObjectInDictionary(object dictionary, string key)
{
Argument.NotNull(key, nameof(key));
@@ -1840,7 +1834,6 @@ public void RemoveAll(string className)
///
public IRealmObject? Find(string className, Guid? primaryKey) => FindCore(className, primaryKey);
- [SuppressMessage("Reliability", "CA2000:Dispose objects before losing scope", Justification = "The RealmObjectBase instance will own its handle.")]
internal IRealmObject? FindCore(string className, RealmValue primaryKey)
{
_realm.ThrowIfDisposed();
diff --git a/Realm/Realm/Realm.csproj b/Realm/Realm/Realm.csproj
index 9e0bd1561c..d55e8797b7 100644
--- a/Realm/Realm/Realm.csproj
+++ b/Realm/Realm/Realm.csproj
@@ -37,6 +37,7 @@
false
+
false
@@ -198,8 +199,8 @@
-
-
+
+
@@ -207,7 +208,7 @@
-
/// Mechanism for logging in with API keys generated in the server UI.
///
+ [Obsolete("Use ApiKey instead.")]
ServerApiKey = 9,
///
@@ -208,6 +210,7 @@ public static Credentials ApiKey(string key)
/// The server API key to use for login.
/// A Credentials that can be used to authenticate user with an API key.
/// API Key Authentication Docs
+ [Obsolete("Use Credentials.ApiKey instead.")]
public static Credentials ServerApiKey(string serverApiKey)
{
Argument.NotNull(serverApiKey, nameof(serverApiKey));
diff --git a/Tests/Realm.Tests/Realm.Tests.csproj b/Tests/Realm.Tests/Realm.Tests.csproj
index a4ecdb0ed3..6fc1bb8ebb 100644
--- a/Tests/Realm.Tests/Realm.Tests.csproj
+++ b/Tests/Realm.Tests/Realm.Tests.csproj
@@ -28,7 +28,7 @@
Realm.Tests
true
$(DefineConstants);UNITY
- ..\..\Realm\Realm.Unity\Runtime\Realm.dll
+ ..\..\Realm\Realm.Unity\Runtime
@@ -53,7 +53,11 @@
the same dll here, otherwise when we try to ilrepack the test dependencies, we won't find MongoDB.Bson and friends.
-->
- $(RealmDllPath)
+ $(RealmDllsPath)\Realm.dll
+
+
+
+ $(RealmDllsPath)\Realm.PlatformHelpers.dll