Initial sources
|
@ -0,0 +1,247 @@
|
|||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# Remove everything beginning with a dot
|
||||
.*/
|
||||
!.github/
|
||||
|
||||
# Umbrella
|
||||
umbrella_installlog.txt
|
||||
Resource.Designer.cs
|
||||
*.g.cs
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug[-\w]*/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease[-\w]*/
|
||||
[Rr]eleases/
|
||||
[Xx]64/
|
||||
[Xx]86/
|
||||
# [Bb]uild/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
logfile=obj/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# DNX
|
||||
project.lock.json
|
||||
artifacts/
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.mdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Xamarin.Android generated resource files
|
||||
Resources/Resource.Designer.cs
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
|
||||
# TODO: Un-comment the next line if you do not want to checkin
|
||||
# your web deploy settings because they may include unencrypted
|
||||
# passwords
|
||||
#*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# NuGet Packages
|
||||
#*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
#!**/packages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/packages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignoreable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Microsoft Azure ApplicationInsights config file
|
||||
ApplicationInsights.config
|
||||
|
||||
# Windows Store app package directory
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
[Ss]tyle[Cc]op.*
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
node_modules/
|
||||
orleans.codegen.cs
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# Ignore generated files from the uno binding helper
|
||||
/Uno/Uno.UI.BindingHelper.Android/**/*.class
|
||||
/Uno/Uno.UI.BindingHelper.Android/**/*.jar
|
||||
|
||||
# Xamarin
|
||||
*/Resources/Resource.Desginer.cs
|
||||
/nuget_version_override.txt
|
||||
/src/crosstargeting_override.props
|
||||
msbuild.binlog
|
||||
/Uno/Uno.UI.TestComparer/Properties/launchSettings.json
|
||||
*.diagsession
|
||||
|
||||
/src/SourceGenerators/System.Xaml/obj-net_4_x-win32
|
|
@ -0,0 +1,49 @@
|
|||
jobs:
|
||||
- job: Windows
|
||||
|
||||
pool:
|
||||
vmImage: 'vs2017-win2016'
|
||||
|
||||
steps:
|
||||
- task: NuGetToolInstaller@0
|
||||
inputs:
|
||||
versionSpec: 4.7.0
|
||||
checkLatest: false
|
||||
|
||||
- task: GitVersion@3
|
||||
# Ignore gitversion for forks, until this is fixed:
|
||||
# https://developercommunity.visualstudio.com/content/problem/284991/public-vsts-previouw-cant-set-build-number-of-pr-b.html
|
||||
condition: eq(variables['System.PullRequest.IsFork'], 'False')
|
||||
inputs:
|
||||
updateAssemblyInfo: false
|
||||
|
||||
- task: MSBuild@1
|
||||
inputs:
|
||||
solution: src/Uno.Wasm.WebSockets.sln
|
||||
msbuildLocationMethod: version
|
||||
msbuildVersion: latest
|
||||
msbuildArchitecture: x86
|
||||
msbuildArguments: /r /p:Configuration=Release "/p:PackageOutputPath=$(build.artifactstagingdirectory)\nuget" "/p:PackageVersion=%GITVERSION_FullSemVer%" "/p:InformationalVersion=%GITVERSION_InformationalVersion%" /detailedsummary
|
||||
clean: false
|
||||
maximumCpuCount: true
|
||||
restoreNugetPackages: false
|
||||
logProjectEvents: false
|
||||
createLogFile: false
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Authenticode Sign Packages
|
||||
inputs:
|
||||
filePath: build/Sign-Package.ps1
|
||||
env:
|
||||
SignClientUser: $(SignClientUser)
|
||||
SignClientSecret: $(SignClientSecret)
|
||||
SignPackageName: "Uno.Wasm.WebSockets"
|
||||
SignPackageDescription: "Uno.Wasm.WebSockets"
|
||||
ArtifactDirectory: $(build.artifactstagingdirectory)
|
||||
condition: and(succeeded(), not(eq(variables['build.reason'], 'PullRequest')), not(eq(variables['SignClientSecret'], '')), not(eq(variables['SignClientUser'], '')))
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
inputs:
|
||||
PathtoPublish: $(build.artifactstagingdirectory)
|
||||
ArtifactName: uno-wasm-websockets-drop
|
||||
ArtifactType: Container
|
|
@ -0,0 +1,209 @@
|
|||
# Uno.Wasm.WebSockets
|
||||
|
||||
Copyright (c) nventive
|
||||
|
||||
All rights reserved.
|
||||
|
||||
# Apache 2.0 License
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
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.
|
|
@ -0,0 +1,32 @@
|
|||
# Uno.Wasm.WebSockets
|
||||
|
||||
Uno.Wasm.WebSockets is a concrete implementation of the [System.Net.WebSocket](https://docs.microsoft.com/en-us/dotnet/api/system.net.websockets)
|
||||
class for WebAssembly, named `Uno.Wasm.WebSockets.WasmWebSocket`.
|
||||
|
||||
This package requires the use of the [Uno.Wasm.Bootstrap](https://www.nuget.org/packages/Uno.Wasm.Bootstrap) package to work properly.
|
||||
|
||||
## How to use the WasmWebSocket class
|
||||
|
||||
Given a project that already references `Uno.Wasm.Bootstrap`, add the [`Uno.Wasm.WebSockets`](https://www.nuget.org/packages/Uno.Wasm.WebSockets) nuget package, and write the following:
|
||||
|
||||
```csharp
|
||||
var ws = new Uno.Wasm.WebSockets.WasmWebSocket();
|
||||
|
||||
// Connect to a simple echo WebSocket server
|
||||
await ws.ConnectAsync(new Uri("wss://echo.websocket.org"), CancellationToken.None);
|
||||
|
||||
Console.WriteLine("Program: Connected!");
|
||||
|
||||
// Send some data
|
||||
var data = new ArraySegment<byte>(Encoding.UTF8.GetBytes("Hello websocket !"));
|
||||
await ws.SendAsync(data, System.Net.WebSockets.WebSocketMessageType.Binary, false, CancellationToken.None);
|
||||
|
||||
Console.WriteLine("Program: Sent!");
|
||||
|
||||
// Read the echo back
|
||||
var buffer = new byte[1024];
|
||||
var received = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
|
||||
|
||||
var receivedString = Encoding.UTF8.GetString(buffer, 0, received.Count);
|
||||
Console.WriteLine($"Received {received.Count} bytes: {receivedString}");
|
||||
```
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"SignClient": {
|
||||
"AzureAd": {
|
||||
"AADInstance": "https://login.microsoftonline.com/",
|
||||
"ClientId": "8138ef14-0570-432c-8aad-9f73f05297d5",
|
||||
"TenantId": "6d53ef61-b6d1-4150-ae0b-43b90e75e0cd"
|
||||
},
|
||||
"Service": {
|
||||
"Url": "https://nv-signservice.azurewebsites.net",
|
||||
"ResourceId": "https://SignService/715027a2-5a78-4271-9a16-f4502f1706fe"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
$currentDirectory = split-path $MyInvocation.MyCommand.Definition
|
||||
|
||||
# See if we have the ClientSecret available
|
||||
if ([string]::IsNullOrEmpty($env:SignClientSecret)) {
|
||||
Write-Host "Client Secret not found, not signing packages"
|
||||
return;
|
||||
}
|
||||
|
||||
dotnet tool install --tool-path . SignClient
|
||||
|
||||
# Setup Variables we need to pass into the sign client tool
|
||||
$appSettings = "$currentDirectory\SignClient.json"
|
||||
|
||||
$filesToSign = Get-ChildItem -Recurse $Env:ArtifactDirectory\* -Include *.nupkg,*.vsix | Select-Object -ExpandProperty FullName
|
||||
|
||||
foreach ($fileToSign in $filesToSign) {
|
||||
Write-Host "Submitting $fileToSign for signing"
|
||||
.\SignClient 'sign' -c $appSettings -i $fileToSign -r $env:SignClientUser -s $env:SignClientSecret -n "$env:SignPackageName" -d "$env:SignPackageDescription" -u "$env:build_repository_uri"
|
||||
Write-Host "Finished signing $fileToSign"
|
||||
}
|
||||
|
||||
Write-Host "Sign-package complete"
|
|
@ -0,0 +1,21 @@
|
|||
assembly-versioning-scheme: MajorMinorPatch
|
||||
mode: ContinuousDeployment
|
||||
next-version: 1.0.0
|
||||
continuous-delivery-fallback-tag: ""
|
||||
branches:
|
||||
master:
|
||||
tag: dev
|
||||
increment: none
|
||||
beta:
|
||||
tag: beta
|
||||
increment: none
|
||||
(stable):
|
||||
tag:
|
||||
increment: none
|
||||
dev/.*?/(.*?):
|
||||
tag: dev.{BranchName}
|
||||
projects/(.*?):
|
||||
tag: proj-{BranchName}
|
||||
increment: none
|
||||
ignore:
|
||||
sha: []
|
|
@ -0,0 +1,37 @@
|
|||
<Project ToolsVersion="15.0">
|
||||
|
||||
<PropertyGroup>
|
||||
<DebugType>portable</DebugType>
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
<RepositoryUrl>$(BUILD_REPOSITORY_URI)</RepositoryUrl>
|
||||
<Copyright>nventive</Copyright>
|
||||
<Author>nventive</Author>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
|
||||
|
||||
<Product>$(AssemblyName) ($(TargetFramework))</Product>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<IsTestProject>$(MSBuildProjectName.Contains('Test'))</IsTestProject>
|
||||
<IsSampleProject>$(MSBuildProjectName.Contains('Sample'))</IsSampleProject>
|
||||
</PropertyGroup>
|
||||
|
||||
<Choose>
|
||||
<When Condition="'$(IsTestProject)' != 'true' and '$(SourceLinkEnabled)' != 'false' and '$(IsSampleProject)' != 'true'">
|
||||
<PropertyGroup>
|
||||
<!-- Optional: Declare that the Repository URL can be published to NuSpec -->
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
<!-- Optional: Embed source files that are not tracked by the source control manager to the PDB -->
|
||||
<EmbedUntrackedSources>true</EmbedUntrackedSources>
|
||||
<!-- Optional: Include PDB in the built .nupkg -->
|
||||
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.SourceLink.Vsts.Git" Version="1.0.0-beta-62925-02" PrivateAssets="All"/>
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta-62925-02" PrivateAssets="All"/>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,2 @@
|
|||
<Project ToolsVersion="15.0">
|
||||
</Project>
|
|
@ -0,0 +1,328 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.28315.86
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Uno.Wasm.WebSockets", "Uno.Wasm.WebSockets\Uno.Wasm.WebSockets.csproj", "{C8EC50B6-0085-42B4-8E14-811E56E02914}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sample", "Sample", "{A45AD22A-1A95-41C9-B10E-33170EAC871E}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "WasmWebSocketsSample.Shared", "WasmWebSocketsSample\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.shproj", "{6279C845-92F8-4333-AB99-3D213163593C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WasmWebSocketsSample.UWP", "WasmWebSocketsSample\WasmWebSocketsSample.UWP\WasmWebSocketsSample.UWP.csproj", "{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WasmWebSocketsSample.Wasm", "WasmWebSocketsSample\WasmWebSocketsSample.Wasm\WasmWebSocketsSample.Wasm.csproj", "{5C85C066-5011-48FD-9E32-EABFE50A4610}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WasmWebSocketsSample.iOS", "WasmWebSocketsSample\WasmWebSocketsSample.iOS\WasmWebSocketsSample.iOS.csproj", "{CE2E2F73-48E6-4771-A28F-374074678CF6}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WasmWebSocketsSample.Droid", "WasmWebSocketsSample\WasmWebSocketsSample.Droid\WasmWebSocketsSample.Droid.csproj", "{74245A11-6799-4E02-82F0-3FE6518D6E74}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||
WasmWebSocketsSample\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems*{6279c845-92f8-4333-ab99-3d213163593c}*SharedItemsImports = 13
|
||||
WasmWebSocketsSample\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems*{74245a11-6799-4e02-82f0-3fe6518d6e74}*SharedItemsImports = 4
|
||||
WasmWebSocketsSample\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems*{bcd67aac-ce3f-4503-aebc-8b8bceabf5c1}*SharedItemsImports = 4
|
||||
WasmWebSocketsSample\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems*{ce2e2f73-48e6-4771-a28f-374074678cf6}*SharedItemsImports = 4
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
Ad-Hoc|ARM = Ad-Hoc|ARM
|
||||
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
||||
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
||||
Ad-Hoc|x64 = Ad-Hoc|x64
|
||||
Ad-Hoc|x86 = Ad-Hoc|x86
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
AppStore|ARM = AppStore|ARM
|
||||
AppStore|iPhone = AppStore|iPhone
|
||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||
AppStore|x64 = AppStore|x64
|
||||
AppStore|x86 = AppStore|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|x64.Build.0 = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C8EC50B6-0085-42B4-8E14-811E56E02914}.Release|x86.Build.0 = Release|Any CPU
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|Any CPU.Build.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|ARM.Build.0 = Release|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|iPhone.ActiveCfg = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|iPhone.Build.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|iPhone.Deploy.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|x64.ActiveCfg = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|x64.Build.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|x64.Deploy.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|x86.ActiveCfg = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|x86.Build.0 = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Ad-Hoc|x86.Deploy.0 = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|Any CPU.ActiveCfg = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|Any CPU.Build.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|Any CPU.Deploy.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|ARM.ActiveCfg = Release|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|ARM.Build.0 = Release|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|ARM.Deploy.0 = Release|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|iPhone.ActiveCfg = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|iPhone.Build.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|iPhone.Deploy.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|iPhoneSimulator.Build.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|x64.ActiveCfg = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|x64.Build.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|x64.Deploy.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|x86.ActiveCfg = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|x86.Build.0 = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.AppStore|x86.Deploy.0 = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|iPhone.ActiveCfg = Debug|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|x64.Build.0 = Debug|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|x64.Deploy.0 = Debug|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|x86.Build.0 = Debug|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Debug|x86.Deploy.0 = Debug|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|ARM.Build.0 = Release|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|ARM.Deploy.0 = Release|ARM
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|iPhone.ActiveCfg = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|iPhoneSimulator.ActiveCfg = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|x64.ActiveCfg = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|x64.Build.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|x64.Deploy.0 = Release|x64
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|x86.ActiveCfg = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|x86.Build.0 = Release|x86
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}.Release|x86.Deploy.0 = Release|x86
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|x64.Build.0 = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610}.Release|x86.Build.0 = Release|Any CPU
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.AppStore|ARM.ActiveCfg = AppStore|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.AppStore|x64.ActiveCfg = AppStore|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.AppStore|x86.ActiveCfg = AppStore|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Debug|Any CPU.ActiveCfg = Debug|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Debug|ARM.ActiveCfg = Debug|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Debug|iPhone.Build.0 = Debug|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Debug|x64.ActiveCfg = Debug|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Debug|x86.ActiveCfg = Debug|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Release|Any CPU.ActiveCfg = Release|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Release|ARM.ActiveCfg = Release|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Release|iPhone.ActiveCfg = Release|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Release|iPhone.Build.0 = Release|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Release|x64.ActiveCfg = Release|iPhone
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6}.Release|x86.ActiveCfg = Release|iPhone
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|ARM.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|iPhone.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|x64.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.AppStore|x86.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|ARM.Deploy.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|iPhone.Deploy.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|x64.Deploy.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Debug|x86.Deploy.0 = Debug|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|ARM.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|iPhone.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|x64.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|x64.Deploy.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|x86.Build.0 = Release|Any CPU
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74}.Release|x86.Deploy.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{6279C845-92F8-4333-AB99-3D213163593C} = {A45AD22A-1A95-41C9-B10E-33170EAC871E}
|
||||
{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1} = {A45AD22A-1A95-41C9-B10E-33170EAC871E}
|
||||
{5C85C066-5011-48FD-9E32-EABFE50A4610} = {A45AD22A-1A95-41C9-B10E-33170EAC871E}
|
||||
{CE2E2F73-48E6-4771-A28F-374074678CF6} = {A45AD22A-1A95-41C9-B10E-33170EAC871E}
|
||||
{74245A11-6799-4E02-82F0-3FE6518D6E74} = {A45AD22A-1A95-41C9-B10E-33170EAC871E}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B86CDD85-2518-43D5-96DD-982D9868C547}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,10 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace WebAssembly
|
||||
{
|
||||
internal sealed class Runtime
|
||||
{
|
||||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
internal static extern string InvokeJS(string str, out int exceptional_result);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="WasmScripts\WasmWebSockets.js" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,140 @@
|
|||
define([""], () => {
|
||||
});
|
||||
|
||||
class ActiveSocket {
|
||||
constructor(handle, socket) {
|
||||
this.handle = handle;
|
||||
this.socket = socket;
|
||||
}
|
||||
}
|
||||
|
||||
var WebSocketInterop = {
|
||||
|
||||
activeSockets: {},
|
||||
debug: false,
|
||||
|
||||
connect: function (handle, url) {
|
||||
this.ensureInitialized();
|
||||
|
||||
if (this.debug) console.log("WebSocketInterop: connect " + url);
|
||||
|
||||
var webSocket = new WebSocket(url);
|
||||
|
||||
webSocket.onopen = function () {
|
||||
if (this.debug) console.log(`Socket is opened [${webSocket.protocol}] ${WebSocketInterop.dispatchConnectedMethod}`);
|
||||
|
||||
var handleStr = MonoRuntime.mono_string(String(handle));
|
||||
var protocolStr = webSocket.protocol.length !== 0 ? MonoRuntime.mono_string(webSocket.protocol) : null;
|
||||
MonoRuntime.call_method(WebSocketInterop.dispatchConnectedMethod, null, [handleStr, protocolStr]);
|
||||
};
|
||||
|
||||
webSocket.onerror = function (evt) {
|
||||
var handleStr = MonoRuntime.mono_string(String(handle));
|
||||
var errorStr = MonoRuntime.mono_string(String(evt.error));
|
||||
MonoRuntime.call_method(WebSocketInterop.dispatchErrorMethod, null, [handleStr, errorStr]);
|
||||
};
|
||||
|
||||
webSocket.onclose = function (evt) {
|
||||
var handleStr = MonoRuntime.mono_string(String(handle));
|
||||
MonoRuntime.call_method(WebSocketInterop.dispatchCloseMethod, null, [handleStr, webSocket.readyState]);
|
||||
};
|
||||
|
||||
webSocket.onmessage = function (evt) {
|
||||
var msg = evt.data;
|
||||
|
||||
if (msg instanceof Blob) {
|
||||
if (this.debug) console.log(`Received Blob`);
|
||||
|
||||
reader = new FileReader();
|
||||
|
||||
reader.onload = e => {
|
||||
var result = e.target.result;
|
||||
if (result !== null) {
|
||||
var arraySize = result.byteLength;
|
||||
|
||||
if (this.debug) console.log(`Result: ${result} / ${arraySize}`);
|
||||
|
||||
var ptr = Module._malloc(arraySize);
|
||||
try {
|
||||
// This section is not particularly efficient, as the received message is copied twice,
|
||||
// once at the ptr location, then again in the _mono_wasm_typed_array_new method.
|
||||
// There should be a better way to do this.
|
||||
|
||||
writeArrayToMemory(new Int8Array(result), ptr);
|
||||
|
||||
var array = Module._mono_wasm_typed_array_new(ptr, arraySize, 1, 11 /*MARSHAL_ARRAY_BYTE*/);
|
||||
|
||||
var handleStr = MonoRuntime.mono_string(String(handle));
|
||||
MonoRuntime.call_method(WebSocketInterop.dispatchReceivedBinaryMethod, null, [handleStr, array]);
|
||||
}
|
||||
finally {
|
||||
Module._free(ptr);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this.debug) console.error(`empty blob ? ${msg}`);
|
||||
}
|
||||
};
|
||||
|
||||
reader.readAsArrayBuffer(msg);
|
||||
}
|
||||
else {
|
||||
if (this.debug) console.log(`Received message ${msg}`);
|
||||
}
|
||||
};
|
||||
|
||||
this.activeSockets[handle] = new ActiveSocket(handle, webSocket);
|
||||
},
|
||||
|
||||
close: function (handle, code, statusDescription) {
|
||||
getActiveSocket(handle).close(code, statusDescription);
|
||||
|
||||
delete this.activeSockets[handle];
|
||||
},
|
||||
|
||||
send: function (handle, pData, count, offset) {
|
||||
var data = new ArrayBuffer(count);
|
||||
var bytes = new Int8Array(data);
|
||||
|
||||
for (var i = 0; i < count; i++) {
|
||||
bytes[i] = Module.HEAPU8[pData + i + offset];
|
||||
}
|
||||
|
||||
this.activeSockets[handle].socket.send(data);
|
||||
},
|
||||
|
||||
getActiveSocket: function (handle) {
|
||||
|
||||
var activeSocket = this.activeSockets[handle];
|
||||
|
||||
if (activeSocket === null) {
|
||||
throw `Unknown WasmWebSocket instance ${handle}`;
|
||||
}
|
||||
|
||||
return activeSocket.socket;
|
||||
},
|
||||
|
||||
ensureInitialized: function () {
|
||||
|
||||
if (WebSocketInterop.asm === undefined) {
|
||||
WebSocketInterop.asm = MonoRuntime.assembly_load("Uno.Wasm.WebSockets");
|
||||
WebSocketInterop.wasmWebSocketClass = MonoRuntime.find_class(WebSocketInterop.asm, "Uno.Wasm.WebSockets", "WasmWebSocket");
|
||||
|
||||
WebSocketInterop.dispatchConnectedMethod = WebSocketInterop.findMonoMethod(WebSocketInterop.wasmWebSocketClass, "DispatchConnected");
|
||||
WebSocketInterop.dispatchMessageMethod = WebSocketInterop.findMonoMethod(WebSocketInterop.wasmWebSocketClass, "DispatchMessage");
|
||||
WebSocketInterop.dispatchErrorMethod = WebSocketInterop.findMonoMethod(WebSocketInterop.wasmWebSocketClass, "DispatchError");
|
||||
WebSocketInterop.dispatchReceivedBinaryMethod = WebSocketInterop.findMonoMethod(WebSocketInterop.wasmWebSocketClass, "DispatchReceivedBinary");
|
||||
WebSocketInterop.dispatchCloseMethod = WebSocketInterop.findMonoMethod(WebSocketInterop.wasmWebSocketClass, "DispatchClose");
|
||||
}
|
||||
},
|
||||
|
||||
findMonoMethod: function (klass, methodName) {
|
||||
var method = MonoRuntime.find_method(klass, methodName, -1);
|
||||
|
||||
if (method === null) {
|
||||
throw `Unable to find managed method ${methodName}`;
|
||||
}
|
||||
|
||||
return method;
|
||||
}
|
||||
};
|
|
@ -0,0 +1,280 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Net.WebSockets;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using WebAssembly;
|
||||
|
||||
namespace Uno.Wasm.WebSockets
|
||||
{
|
||||
public class WasmWebSocket : WebSocket
|
||||
{
|
||||
private GCHandle _handle;
|
||||
private static Dictionary<IntPtr, WasmWebSocket> _socket = new Dictionary<IntPtr, WasmWebSocket>();
|
||||
private Queue<ServerMessage> _messages = new Queue<ServerMessage>();
|
||||
private ArraySegment<byte> _pendingSegment;
|
||||
private WebSocketState _state;
|
||||
private string _subProtocol;
|
||||
|
||||
private TaskCompletionSource<bool> _pendingConnect;
|
||||
private TaskCompletionSource<WebSocketReceiveResult> _pendingReceive;
|
||||
private TaskCompletionSource<bool> _pendingClose;
|
||||
private WebSocketCloseStatus? _closeStatus;
|
||||
private string _closeStatusDescription;
|
||||
|
||||
public WasmWebSocket()
|
||||
{
|
||||
_handle = GCHandle.Alloc(this);
|
||||
_socket[(IntPtr)_handle] = this;
|
||||
}
|
||||
|
||||
public override WebSocketState State => _state;
|
||||
|
||||
public async Task ConnectAsync(Uri uri, CancellationToken token)
|
||||
{
|
||||
await Task.Yield();
|
||||
|
||||
if (_pendingConnect != null)
|
||||
{
|
||||
_pendingConnect.TrySetCanceled();
|
||||
}
|
||||
|
||||
_pendingConnect = new TaskCompletionSource<bool>();
|
||||
|
||||
_state = WebSocketState.Connecting;
|
||||
|
||||
Debug.WriteLine($"Connecting to {uri}");
|
||||
|
||||
var result = Runtime.InvokeJS($"WebSocketInterop.connect({GetHandle()}, \"{uri.OriginalString}\")", out var exception);
|
||||
|
||||
if (exception != 0)
|
||||
{
|
||||
_state = WebSocketState.None;
|
||||
|
||||
Debug.WriteLine($"failed to execute {result}");
|
||||
throw new WebSocketException(WebSocketError.Faulted);
|
||||
}
|
||||
|
||||
await _pendingConnect.Task;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
Abort();
|
||||
}
|
||||
|
||||
public override async Task SendAsync(ArraySegment<byte> segment, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken)
|
||||
{
|
||||
await Task.Yield();
|
||||
|
||||
Debug.WriteLine($"SendAsync {segment.Count} bytes, {messageType}, endOfMessage: {endOfMessage}");
|
||||
|
||||
if (messageType == WebSocketMessageType.Binary)
|
||||
{
|
||||
var gch = GCHandle.Alloc(segment.Array, GCHandleType.Pinned);
|
||||
var pinnedData = gch.AddrOfPinnedObject();
|
||||
|
||||
try
|
||||
{
|
||||
var str = $"WebSocketInterop.send({GetHandle()}, {pinnedData}, {segment.Count}, {segment.Offset})";
|
||||
var invocationResult = Runtime.InvokeJS(str, out var result);
|
||||
|
||||
if (result != 0)
|
||||
{
|
||||
Debug.WriteLine($"Eval failed {result} / {invocationResult}");
|
||||
throw new WebSocketException(WebSocketError.Faulted, invocationResult);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
gch.Free();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotSupportedException($"Sending WebSocketMessageType {messageType} is not supported");
|
||||
}
|
||||
}
|
||||
|
||||
public override async Task<WebSocketReceiveResult> ReceiveAsync(ArraySegment<byte> arraySegment, CancellationToken none)
|
||||
{
|
||||
if (_messages.Count != 0)
|
||||
{
|
||||
return ProcessQueue(arraySegment);
|
||||
}
|
||||
else
|
||||
{
|
||||
_pendingSegment = arraySegment;
|
||||
_pendingReceive = new TaskCompletionSource<WebSocketReceiveResult>();
|
||||
|
||||
return await _pendingReceive.Task;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Abort() {
|
||||
if (_state == WebSocketState.Open)
|
||||
{
|
||||
var unused = CloseAsync(WebSocketCloseStatus.NormalClosure, "Connection was aborted", CancellationToken.None);
|
||||
}
|
||||
}
|
||||
|
||||
public override async Task CloseAsync(WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken)
|
||||
{
|
||||
await Task.Yield();
|
||||
|
||||
_closeStatus = closeStatus;
|
||||
_closeStatusDescription = statusDescription;
|
||||
|
||||
var str = $"WebSocketInterop.close({GetHandle()}, {(int)closeStatus}, \"{statusDescription}\")";
|
||||
var invocationResult = Runtime.InvokeJS(str, out var result);
|
||||
|
||||
if (result != 0)
|
||||
{
|
||||
Debug.WriteLine($"Eval failed {result} / {invocationResult}");
|
||||
throw new WebSocketException(WebSocketError.Faulted, invocationResult);
|
||||
}
|
||||
}
|
||||
|
||||
public override Task CloseOutputAsync(WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken) => throw new NotImplementedException();
|
||||
|
||||
public override WebSocketCloseStatus? CloseStatus => _closeStatus;
|
||||
|
||||
public override string CloseStatusDescription => _closeStatusDescription;
|
||||
|
||||
public override string SubProtocol => _subProtocol;
|
||||
|
||||
private WebSocketReceiveResult ProcessQueue(ArraySegment<byte> arraySegment)
|
||||
{
|
||||
var message = _messages.Peek();
|
||||
|
||||
if (message.AvailableLength <= arraySegment.Count)
|
||||
{
|
||||
Buffer.BlockCopy(message.Data, message.Offset, arraySegment.Array, arraySegment.Offset, message.AvailableLength);
|
||||
|
||||
_messages.Dequeue();
|
||||
|
||||
return new WebSocketReceiveResult(message.Data.Length, WebSocketMessageType.Binary, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Buffer.BlockCopy(message.Data, message.Offset, arraySegment.Array, arraySegment.Offset, arraySegment.Count);
|
||||
|
||||
message.SetReadBytes(arraySegment.Count);
|
||||
|
||||
return new WebSocketReceiveResult(arraySegment.Count, WebSocketMessageType.Binary, false);
|
||||
}
|
||||
}
|
||||
|
||||
internal static void DispatchError(string handleStr, string message)
|
||||
=> GetWebSocket(handleStr).DispatchError(message);
|
||||
|
||||
internal static void DispatchConnected(string handleStr, string subProtocol)
|
||||
=> GetWebSocket(handleStr).DispatchConnected(subProtocol);
|
||||
|
||||
internal static void DispatchReceivedBinary(string handleStr, byte[] array)
|
||||
=> GetWebSocket(handleStr).DispatchReceivedBinary(array);
|
||||
|
||||
internal static void DispatchClosed(string handleStr, int state, string error)
|
||||
=> GetWebSocket(handleStr).DispatchClosed(state, error);
|
||||
|
||||
private static WasmWebSocket GetWebSocket(string handleString)
|
||||
{
|
||||
if (int.TryParse(handleString, out var handle))
|
||||
{
|
||||
if (_socket.TryGetValue((IntPtr)handle, out var socket))
|
||||
{
|
||||
return socket;
|
||||
}
|
||||
}
|
||||
|
||||
throw new InvalidOperationException($"Unknown WebSocket [{handleString}]");
|
||||
}
|
||||
|
||||
private void DispatchReceivedBinary(byte[] array)
|
||||
{
|
||||
Debug.WriteLine($"DispatchReceivedBinary {array.Length} bytes");
|
||||
|
||||
_messages.Enqueue(new ServerMessage(array));
|
||||
|
||||
if (_pendingReceive != null)
|
||||
{
|
||||
_pendingReceive.TrySetResult(ProcessQueue(_pendingSegment));
|
||||
_pendingReceive = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void DispatchConnected(string subProtocol)
|
||||
{
|
||||
Debug.WriteLine($"Connected with {subProtocol}");
|
||||
|
||||
if (_pendingConnect != null)
|
||||
{
|
||||
_subProtocol = subProtocol;
|
||||
_state = WebSocketState.Open;
|
||||
_pendingConnect.SetResult(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void DispatchError(string message)
|
||||
{
|
||||
Debug.WriteLine($"Connect Error: {message}");
|
||||
|
||||
if (_pendingConnect != null)
|
||||
{
|
||||
_pendingConnect.SetException(new WebSocketException(WebSocketError.Faulted, message));
|
||||
}
|
||||
}
|
||||
|
||||
private void DispatchClosed(int state, string error)
|
||||
{
|
||||
if(_pendingClose != null)
|
||||
{
|
||||
_state = MapJavascriptSocketState(state);
|
||||
_pendingClose.TrySetResult(true);
|
||||
_pendingClose = null;
|
||||
}
|
||||
}
|
||||
|
||||
private WebSocketState MapJavascriptSocketState(int state)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case 0: // (CONNECTING)
|
||||
return WebSocketState.Connecting;
|
||||
|
||||
case 1: // (OPEN)
|
||||
return WebSocketState.Open;
|
||||
|
||||
case 2: // (CLOSING)
|
||||
return WebSocketState.CloseSent;
|
||||
|
||||
case 3: // (CLOSED)
|
||||
return WebSocketState.Closed;
|
||||
|
||||
default:
|
||||
throw new InvalidOperationException($"Unknown Javascript WebSocket state {state}");
|
||||
}
|
||||
}
|
||||
|
||||
private IntPtr GetHandle() => (IntPtr)_handle;
|
||||
|
||||
class ServerMessage
|
||||
{
|
||||
public byte[] Data { get; }
|
||||
|
||||
public int AvailableLength { get; private set; }
|
||||
public int Offset => Data.Length - AvailableLength;
|
||||
|
||||
public void SetReadBytes(int readBytes)
|
||||
=> AvailableLength -= readBytes;
|
||||
|
||||
public ServerMessage(byte[] array)
|
||||
{
|
||||
this.Data = array;
|
||||
AvailableLength = Data.Length;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
Any raw assets you want to be deployed with your application can be placed in
|
||||
this directory (and child directories) and given a Build Action of "AndroidAsset".
|
||||
|
||||
These files will be deployed with you package and will be accessible using Android's
|
||||
AssetManager, like this:
|
||||
|
||||
public class ReadAsset : Activity
|
||||
{
|
||||
protected override void OnCreate (Bundle bundle)
|
||||
{
|
||||
base.OnCreate (bundle);
|
||||
|
||||
InputStream input = Assets.Open ("my_asset.txt");
|
||||
}
|
||||
}
|
||||
|
||||
Additionally, some Android functions will automatically load asset files:
|
||||
|
||||
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
|
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Droid/Assets/Fonts/winjs-symbols.ttf
Normal file
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using Com.Nostra13.Universalimageloader.Core;
|
||||
using Windows.UI.Xaml.Media;
|
||||
|
||||
namespace WasmWebSocketsSample.Droid
|
||||
{
|
||||
[global::Android.App.ApplicationAttribute(
|
||||
Label = "@string/ApplicationName",
|
||||
LargeHeap = true,
|
||||
HardwareAccelerated = true,
|
||||
Theme = "@style/AppTheme"
|
||||
)]
|
||||
public class Application : Windows.UI.Xaml.NativeApplication
|
||||
{
|
||||
public Application(IntPtr javaReference, JniHandleOwnership transfer)
|
||||
: base(new App(), javaReference, transfer)
|
||||
{
|
||||
ConfigureUniversalImageLoader();
|
||||
}
|
||||
|
||||
private void ConfigureUniversalImageLoader()
|
||||
{
|
||||
// Create global configuration and initialize ImageLoader with this config
|
||||
ImageLoaderConfiguration config = new ImageLoaderConfiguration
|
||||
.Builder(Context)
|
||||
.Build();
|
||||
|
||||
ImageLoader.Instance.Init(config);
|
||||
|
||||
ImageSource.DefaultImageLoader = ImageLoader.Instance.LoadImageAsync;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using Android.App;
|
||||
using Android.Widget;
|
||||
using Android.OS;
|
||||
using Android.Content.PM;
|
||||
using Android.Views;
|
||||
|
||||
namespace WasmWebSocketsSample.Droid
|
||||
{
|
||||
[Activity(
|
||||
MainLauncher = true,
|
||||
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize,
|
||||
WindowSoftInputMode = SoftInput.AdjustPan | SoftInput.StateHidden
|
||||
)]
|
||||
public class MainActivity : Windows.UI.Xaml.ApplicationActivity
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="WasmWebSocketsSample" android:versionCode="1" android:versionName="1.0">
|
||||
<uses-sdk android:minSdkVersion="16" />
|
||||
<application android:label="WasmWebSocketsSample"></application>
|
||||
</manifest>
|
|
@ -0,0 +1,30 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using Android.App;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("UnoQuickStart.Droid")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("UnoQuickStart.Droid")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -0,0 +1,44 @@
|
|||
Images, layout descriptions, binary blobs and string dictionaries can be included
|
||||
in your application as resource files. Various Android APIs are designed to
|
||||
operate on the resource IDs instead of dealing with images, strings or binary blobs
|
||||
directly.
|
||||
|
||||
For example, a sample Android app that contains a user interface layout (main.axml),
|
||||
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
|
||||
would keep its resources in the "Resources" directory of the application:
|
||||
|
||||
Resources/
|
||||
drawable/
|
||||
icon.png
|
||||
|
||||
layout/
|
||||
main.axml
|
||||
|
||||
values/
|
||||
strings.xml
|
||||
|
||||
In order to get the build system to recognize Android resources, set the build action to
|
||||
"AndroidResource". The native Android APIs do not operate directly with filenames, but
|
||||
instead operate on resource IDs. When you compile an Android application that uses resources,
|
||||
the build system will package the resources for distribution and generate a class called "R"
|
||||
(this is an Android convention) that contains the tokens for each one of the resources
|
||||
included. For example, for the above Resources layout, this is what the R class would expose:
|
||||
|
||||
public class R {
|
||||
public class drawable {
|
||||
public const int icon = 0x123;
|
||||
}
|
||||
|
||||
public class layout {
|
||||
public const int main = 0x456;
|
||||
}
|
||||
|
||||
public class strings {
|
||||
public const int first_string = 0xabc;
|
||||
public const int second_string = 0xbcd;
|
||||
}
|
||||
}
|
||||
|
||||
You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
|
||||
to reference the layout/main.axml file, or R.strings.first_string to reference the first
|
||||
string in the dictionary file values/strings.xml.
|
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Droid/Resources/drawable/Icon.png
Normal file
После Ширина: | Высота: | Размер: 4.0 KiB |
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="Hello">Hello World, Click Me!</string>
|
||||
<string name="ApplicationName">UnoQuickStart.Droid</string>
|
||||
</resources>
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<resources>
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light">
|
||||
|
||||
<!-- This removes the ActionBar -->
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="android:windowActionBar">false</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
|
||||
</style>
|
||||
</resources>
|
|
@ -0,0 +1,91 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{74245A11-6799-4E02-82F0-3FE6518D6E74}</ProjectGuid>
|
||||
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>WasmWebSocketsSample.Droid</RootNamespace>
|
||||
<AssemblyName>WasmWebSocketsSample.Droid</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AndroidApplication>true</AndroidApplication>
|
||||
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<AndroidUseLatestPlatformSdk>False</AndroidUseLatestPlatformSdk>
|
||||
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
|
||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||
<AndroidUseIntermediateDesignerFile>True</AndroidUseIntermediateDesignerFile>
|
||||
<ResourcesDirectory>..\WasmWebSocketsSample.Shared\Strings</ResourcesDirectory>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>portable</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AndroidUseSharedRuntime>True</AndroidUseSharedRuntime>
|
||||
<AndroidLinkMode>None</AndroidLinkMode>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>portable</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<AndroidManagedSymbols>true</AndroidManagedSymbols>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AndroidUseSharedRuntime>False</AndroidUseSharedRuntime>
|
||||
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Mono.Android" />
|
||||
<Reference Include="Mono.Android.Export" />
|
||||
<Reference Include="mscorlib" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Uno.UI" Version="1.42.0" />
|
||||
<PackageReference Include="Uno.UniversalImageLoader" Version="1.9.32" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="MainActivity.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Main.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidAsset Include="Assets\Fonts\winjs-symbols.ttf" />
|
||||
<None Include="Resources\AboutResources.txt" />
|
||||
<None Include="Assets\AboutAssets.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\values\Strings.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\Icon.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Properties\AndroidManifest.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\values\Styles.xml" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems" Label="Shared" Condition="Exists('..\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
|
@ -0,0 +1,8 @@
|
|||
<Application
|
||||
x:Class="WasmWebSocketsSample.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="using:WasmWebSocketsSample"
|
||||
RequestedTheme="Light">
|
||||
|
||||
</Application>
|
|
@ -0,0 +1,106 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using Windows.ApplicationModel;
|
||||
using Windows.ApplicationModel.Activation;
|
||||
using Windows.Foundation;
|
||||
using Windows.Foundation.Collections;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
using Windows.UI.Xaml.Controls.Primitives;
|
||||
using Windows.UI.Xaml.Data;
|
||||
using Windows.UI.Xaml.Input;
|
||||
using Windows.UI.Xaml.Media;
|
||||
using Windows.UI.Xaml.Navigation;
|
||||
|
||||
namespace WasmWebSocketsSample
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides application-specific behavior to supplement the default Application class.
|
||||
/// </summary>
|
||||
sealed partial class App : Application
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes the singleton application object. This is the first line of authored code
|
||||
/// executed, and as such is the logical equivalent of main() or WinMain().
|
||||
/// </summary>
|
||||
public App()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
this.Suspending += OnSuspending;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invoked when the application is launched normally by the end user. Other entry points
|
||||
/// will be used such as when the application is launched to open a specific file.
|
||||
/// </summary>
|
||||
/// <param name="e">Details about the launch request and process.</param>
|
||||
protected override void OnLaunched(LaunchActivatedEventArgs e)
|
||||
{
|
||||
#if DEBUG
|
||||
if (System.Diagnostics.Debugger.IsAttached)
|
||||
{
|
||||
// this.DebugSettings.EnableFrameRateCounter = true;
|
||||
}
|
||||
#endif
|
||||
Frame rootFrame = Windows.UI.Xaml.Window.Current.Content as Frame;
|
||||
|
||||
// Do not repeat app initialization when the Window already has content,
|
||||
// just ensure that the window is active
|
||||
if (rootFrame == null)
|
||||
{
|
||||
// Create a Frame to act as the navigation context and navigate to the first page
|
||||
rootFrame = new Frame();
|
||||
|
||||
rootFrame.NavigationFailed += OnNavigationFailed;
|
||||
|
||||
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
|
||||
{
|
||||
//TODO: Load state from previously suspended application
|
||||
}
|
||||
|
||||
// Place the frame in the current Window
|
||||
Windows.UI.Xaml.Window.Current.Content = rootFrame;
|
||||
}
|
||||
|
||||
if (e.PrelaunchActivated == false)
|
||||
{
|
||||
if (rootFrame.Content == null)
|
||||
{
|
||||
// When the navigation stack isn't restored navigate to the first page,
|
||||
// configuring the new page by passing required information as a navigation
|
||||
// parameter
|
||||
rootFrame.Navigate(typeof(MainPage), e.Arguments);
|
||||
}
|
||||
// Ensure the current window is active
|
||||
Windows.UI.Xaml.Window.Current.Activate();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invoked when Navigation to a certain page fails
|
||||
/// </summary>
|
||||
/// <param name="sender">The Frame which failed navigation</param>
|
||||
/// <param name="e">Details about the navigation failure</param>
|
||||
void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
|
||||
{
|
||||
throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invoked when application execution is being suspended. Application state is saved
|
||||
/// without knowing whether the application will be terminated or resumed with the contents
|
||||
/// of memory still intact.
|
||||
/// </summary>
|
||||
/// <param name="sender">The source of the suspend request.</param>
|
||||
/// <param name="e">Details about the suspend request.</param>
|
||||
private void OnSuspending(object sender, SuspendingEventArgs e)
|
||||
{
|
||||
var deferral = e.SuspendingOperation.GetDeferral();
|
||||
//TODO: Save application state and stop any background activity
|
||||
deferral.Complete();
|
||||
}
|
||||
}
|
||||
}
|
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Shared/Assets/lockscreenlogo.scale-200.png
Normal file
После Ширина: | Высота: | Размер: 1.4 KiB |
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Shared/Assets/splashscreen.scale-200.png
Normal file
После Ширина: | Высота: | Размер: 7.5 KiB |
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Shared/Assets/square150x150logo.scale-200.png
Normal file
После Ширина: | Высота: | Размер: 2.9 KiB |
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Shared/Assets/square44x44logo.scale-200.png
Normal file
После Ширина: | Высота: | Размер: 1.6 KiB |
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Shared/Assets/square44x44logo.targetsize-24_altform-unplated.png
Normal file
После Ширина: | Высота: | Размер: 1.2 KiB |
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Shared/Assets/storelogo.png
Normal file
После Ширина: | Высота: | Размер: 1.4 KiB |
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Shared/Assets/wide310x150logo.scale-200.png
Normal file
После Ширина: | Высота: | Размер: 3.1 KiB |
|
@ -0,0 +1,43 @@
|
|||
<Page
|
||||
x:Class="WasmWebSocketsSample.MainPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="using:WasmWebSocketsSample"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Header="Server Address" x:Name="serverUrl" Margin="5" Text="wss://echo.websocket.org" />
|
||||
<Button Grid.Column="1" Content="Connect" Margin="5" VerticalAlignment="Bottom" x:Name="connectButton" Click="ConnectButton_Click" />
|
||||
</Grid>
|
||||
<Grid Grid.Row="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Header="Message" x:Name="messageContent" Margin="5" />
|
||||
<Button Grid.Column="1" Content="Send" Margin="5" VerticalAlignment="Bottom" x:Name="sendButton" Click="OnSendMessage" />
|
||||
</Grid>
|
||||
<Grid Grid.Row="3" Margin="5">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="Logs" FontSize="16" FontWeight="Bold" Margin="0, 0, 0, 5"/>
|
||||
<TextBlock x:Name="logsTextBox" Grid.Row="1" IsReadOnly="True" FontFamily="Courier New" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Page>
|
|
@ -0,0 +1,162 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.WebSockets;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Foundation;
|
||||
using Windows.Foundation.Collections;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
using Windows.UI.Xaml.Controls.Primitives;
|
||||
using Windows.UI.Xaml.Data;
|
||||
using Windows.UI.Xaml.Input;
|
||||
using Windows.UI.Xaml.Media;
|
||||
using Windows.UI.Xaml.Navigation;
|
||||
|
||||
#if __WASM__
|
||||
using ClientWebSocket = Uno.Wasm.WebSockets.WasmWebSocket;
|
||||
#else
|
||||
using ClientWebSocket = System.Net.WebSockets.ClientWebSocket;
|
||||
#endif
|
||||
|
||||
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
|
||||
|
||||
namespace WasmWebSocketsSample
|
||||
{
|
||||
/// <summary>
|
||||
/// An empty page that can be used on its own or navigated to within a Frame.
|
||||
/// </summary>
|
||||
public sealed partial class MainPage : Page
|
||||
{
|
||||
ClientWebSocket _socket;
|
||||
CancellationTokenSource _cancellation;
|
||||
ObservableCollection<WebSocketMessage> _messages = new ObservableCollection<WebSocketMessage>();
|
||||
|
||||
public MainPage()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
|
||||
UpdateControlStates();
|
||||
}
|
||||
|
||||
private void UpdateControlStates()
|
||||
{
|
||||
switch(_socket?.State ?? WebSocketState.None)
|
||||
{
|
||||
case System.Net.WebSockets.WebSocketState.Open:
|
||||
messageContent.IsEnabled = true;
|
||||
sendButton.IsEnabled = true;
|
||||
connectButton.Content = "Disconnect";
|
||||
serverUrl.IsEnabled = false;
|
||||
break;
|
||||
|
||||
case System.Net.WebSockets.WebSocketState.None:
|
||||
serverUrl.IsEnabled = true;
|
||||
messageContent.IsEnabled = false;
|
||||
sendButton.IsEnabled = false;
|
||||
connectButton.Content = "Connect";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private async void OnSendMessage(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if(_socket != null)
|
||||
{
|
||||
await AppendMessage($"Sending [{messageContent.Text}]");
|
||||
var buffer = Encoding.UTF8.GetBytes(messageContent.Text);
|
||||
await _socket.SendAsync(new ArraySegment<byte>(buffer), WebSocketMessageType.Binary, true, _cancellation.Token);
|
||||
await AppendMessage($"Sent [{messageContent.Text}]");
|
||||
}
|
||||
}
|
||||
|
||||
private async void ConnectButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
if (_socket == null)
|
||||
{
|
||||
_socket = new ClientWebSocket();
|
||||
_cancellation = new CancellationTokenSource();
|
||||
|
||||
try
|
||||
{
|
||||
await AppendMessage($"Connecting to {serverUrl.Text}");
|
||||
|
||||
UpdateControlStates();
|
||||
await _socket.ConnectAsync(new Uri(serverUrl.Text), _cancellation.Token);
|
||||
|
||||
RunReceiveLoop();
|
||||
|
||||
UpdateControlStates();
|
||||
|
||||
await AppendMessage("Connected!");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
UpdateControlStates();
|
||||
|
||||
await AppendMessage($"Failed to connect {ex}");
|
||||
|
||||
_cancellation.Cancel();
|
||||
_socket = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
await AppendMessage("Closing...");
|
||||
await _socket.CloseAsync(System.Net.WebSockets.WebSocketCloseStatus.NormalClosure, "Done", _cancellation.Token);
|
||||
await AppendMessage("Closed!");
|
||||
_cancellation.Cancel();
|
||||
_socket = null;
|
||||
|
||||
UpdateControlStates();
|
||||
}
|
||||
}
|
||||
|
||||
private async void RunReceiveLoop()
|
||||
{
|
||||
var buffer = new ArraySegment<byte>(new byte[4096]);
|
||||
|
||||
while (!_cancellation?.IsCancellationRequested ?? true)
|
||||
{
|
||||
try
|
||||
{
|
||||
var r = await _socket.ReceiveAsync(buffer, _cancellation.Token);
|
||||
|
||||
await AppendMessage($"Received {r.MessageType}: [{Encoding.UTF8.GetString(buffer.Array, buffer.Offset, r.Count)}]");
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
if (!_cancellation.IsCancellationRequested)
|
||||
{
|
||||
await AppendMessage($"Failed to receive: {e}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task AppendMessage(string v)
|
||||
{
|
||||
Console.WriteLine($"{v}");
|
||||
|
||||
await Dispatcher.RunAsync(
|
||||
Windows.UI.Core.CoreDispatcherPriority.Normal,
|
||||
() => logsTextBox.Text = $"{DateTime.Now}: {v}\r\n" + logsTextBox.Text
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
[Bindable]
|
||||
internal class WebSocketMessage
|
||||
{
|
||||
public string Message { get; internal set; }
|
||||
public string Timestamp { get; internal set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ApplicationName" xml:space="preserve">
|
||||
<value>WasmWebSocketsSample</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||
<HasSharedItems>true</HasSharedItems>
|
||||
<SharedGUID>6279c845-92f8-4333-ab99-3d213163593c</SharedGUID>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration">
|
||||
<Import_RootNamespace>WasmWebSocketsSample.Shared</Import_RootNamespace>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="$(MSBuildThisFileDirectory)App.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</ApplicationDefinition>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)MainPage.xaml.cs">
|
||||
<DependentUpon>MainPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Include="$(MSBuildThisFileDirectory)MainPage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="$(MSBuildThisFileDirectory)Assets\LockScreenLogo.scale-200.png" />
|
||||
<Content Include="$(MSBuildThisFileDirectory)Assets\SplashScreen.scale-200.png" />
|
||||
<Content Include="$(MSBuildThisFileDirectory)Assets\Square150x150Logo.scale-200.png" />
|
||||
<Content Include="$(MSBuildThisFileDirectory)Assets\Square44x44Logo.scale-200.png" />
|
||||
<Content Include="$(MSBuildThisFileDirectory)Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
|
||||
<Content Include="$(MSBuildThisFileDirectory)Assets\StoreLogo.png" />
|
||||
<Content Include="$(MSBuildThisFileDirectory)Assets\Wide310x150Logo.scale-200.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="$(MSBuildThisFileDirectory)Strings\en\Resources.resw" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>6279c845-92f8-4333-ab99-3d213163593c</ProjectGuid>
|
||||
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />
|
||||
<PropertyGroup />
|
||||
<Import Project="WasmWebSocketsSample.Shared.projitems" Label="Shared" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
|
||||
</Project>
|
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<Package
|
||||
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
|
||||
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
|
||||
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
|
||||
IgnorableNamespaces="uap mp">
|
||||
|
||||
<Identity
|
||||
Name="bcd67aac-ce3f-4503-aebc-8b8bceabf5c1"
|
||||
Publisher="CN=com.example"
|
||||
Version="1.0.0.0" />
|
||||
|
||||
<mp:PhoneIdentity PhoneProductId="1897f84c-689e-44d3-a8b7-c521a62818ae" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
|
||||
|
||||
<Properties>
|
||||
<DisplayName>WasmWebSocketsSample</DisplayName>
|
||||
<PublisherDisplayName>WasmWebSocketsSample</PublisherDisplayName>
|
||||
<Logo>Assets\StoreLogo.png</Logo>
|
||||
</Properties>
|
||||
|
||||
<Dependencies>
|
||||
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
|
||||
</Dependencies>
|
||||
|
||||
<Resources>
|
||||
<Resource Language="x-generate"/>
|
||||
</Resources>
|
||||
|
||||
<Applications>
|
||||
<Application Id="App"
|
||||
Executable="WasmWebSocketsSample.exe"
|
||||
EntryPoint="UnoQuickStart.App">
|
||||
<uap:VisualElements
|
||||
DisplayName="WasmWebSocketsSample"
|
||||
Square150x150Logo="Assets\Square150x150Logo.png"
|
||||
Square44x44Logo="Assets\Square44x44Logo.png"
|
||||
Description="WasmWebSocketsSample"
|
||||
BackgroundColor="transparent">
|
||||
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"/>
|
||||
<uap:SplashScreen Image="Assets\SplashScreen.png" />
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
</Applications>
|
||||
|
||||
<Capabilities>
|
||||
<Capability Name="internetClient" />
|
||||
</Capabilities>
|
||||
</Package>
|
|
@ -0,0 +1,29 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("UnoQuickStart")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("UnoQuickStart")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: ComVisible(false)]
|
|
@ -0,0 +1,31 @@
|
|||
<!--
|
||||
This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most
|
||||
developers. However, you can modify these parameters to modify the behavior of the .NET Native
|
||||
optimizer.
|
||||
|
||||
Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919
|
||||
|
||||
To fully enable reflection for App1.MyClass and all of its public/private members
|
||||
<Type Name="App1.MyClass" Dynamic="Required All"/>
|
||||
|
||||
To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32
|
||||
<TypeInstantiation Name="App1.AppClass" Arguments="System.Int32" Activate="Required Public" />
|
||||
|
||||
Using the Namespace directive to apply reflection policy to all the types in a particular namespace
|
||||
<Namespace Name="DataClasses.ViewModels" Seralize="All" />
|
||||
-->
|
||||
|
||||
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
|
||||
<Application>
|
||||
<!--
|
||||
An Assembly element with Name="*Application*" applies to all assemblies in
|
||||
the application package. The asterisks are not wildcards.
|
||||
-->
|
||||
<Assembly Name="*Application*" Dynamic="Required All" />
|
||||
|
||||
|
||||
<!-- Add your application specific runtime directives here. -->
|
||||
|
||||
|
||||
</Application>
|
||||
</Directives>
|
|
@ -0,0 +1,122 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
|
||||
<Version>6.1.7</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProjectGuid>{BCD67AAC-CE3F-4503-AEBC-8B8BCEABF5C1}</ProjectGuid>
|
||||
<OutputType>AppContainerExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>WasmWebSocketsSample</RootNamespace>
|
||||
<AssemblyName>WasmWebSocketsSample</AssemblyName>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
|
||||
<TargetPlatformVersion>10.0.17763.0</TargetPlatformVersion>
|
||||
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
|
||||
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<PackageCertificateKeyFile>WasmWebSocketsSample.Uwp_TemporaryKey.pfx</PackageCertificateKeyFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x86\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
|
||||
<NoWarn>;2008</NoWarn>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
|
||||
<OutputPath>bin\x86\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<NoWarn>;2008</NoWarn>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\ARM\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
|
||||
<NoWarn>;2008</NoWarn>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>ARM</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
|
||||
<OutputPath>bin\ARM\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<NoWarn>;2008</NoWarn>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>ARM</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x64\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
|
||||
<NoWarn>;2008</NoWarn>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<OutputPath>bin\x64\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<NoWarn>;2008</NoWarn>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AppxManifest Include="Package.appxmanifest">
|
||||
<SubType>Designer</SubType>
|
||||
</AppxManifest>
|
||||
<None Include="WasmWebSocketsSample.UWP_TemporaryKey.pfx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Properties\Default.rd.xml" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems" Label="Shared" Condition="Exists('..\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems')" />
|
||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
|
||||
<VisualStudioVersion>14.0</VisualStudioVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.Wasm/Fonts/winjs-symbols.woff2
Normal file
|
@ -0,0 +1,9 @@
|
|||
<linker>
|
||||
<assembly fullname="WasmWebSocketsSample.Wasm" />
|
||||
<assembly fullname="Uno.UI" />
|
||||
|
||||
<assembly fullname="System.Core">
|
||||
<!-- This is required by JSon.NET and any expression.Compile caller -->
|
||||
<type fullname="System.Linq.Expressions*" />
|
||||
</assembly>
|
||||
</linker>
|
|
@ -0,0 +1,15 @@
|
|||
using System;
|
||||
using Windows.UI.Xaml;
|
||||
|
||||
namespace WasmWebSocketsSample.Wasm
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
private static App _app;
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Windows.UI.Xaml.Application.Start(_ => _app = new App());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
@font-face {
|
||||
font-family: "Symbols";
|
||||
src: url("Fonts/winjs-symbols.woff2") format('woff');
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
var UnoAppManifest = {
|
||||
|
||||
splashScreenImage: "Assets/SplashScreen.scale-200.png",
|
||||
splashScreenColor: "#00f",
|
||||
displayName: "WasmWebSocketsSample"
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<WasmHead>true</WasmHead>
|
||||
<DefineConstants>$(DefineConstants);__WASM__</DefineConstants>
|
||||
<NoWarn>NU1701</NoWarn>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="..\WasmWebSocketsSample.UWP\Assets\*.png" Link="Assets\%(FileName)%(Extension)" />
|
||||
<Content Include="Fonts\winjs-symbols.woff2" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="WasmCSS\Fonts.css" />
|
||||
<EmbeddedResource Include="WasmScripts\AppManifest.js" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<LinkerDescriptor Include="LinkerConfig.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<!--
|
||||
This item group is required by the project templace because of the
|
||||
new SDK-Style project, otherwise some files are not aded automatically.
|
||||
|
||||
You can safely remove this ItemGroup completely.
|
||||
-->
|
||||
<Compile Remove="Program.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Content Include="LinkerConfig.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Uno.UI" Version="1.43.0-dev.498" />
|
||||
<PackageReference Include="Uno.Wasm.Bootstrap" Version="1.0.0-dev.127" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Uno.Wasm.WebSockets\Uno.Wasm.WebSockets.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems" Label="Shared" Condition="Exists('..\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems')" />
|
||||
</Project>
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,46 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>UnoQuickStart.iOS</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.companyname.WasmWebSocketsSample</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string></string>
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
<integer>2</integer>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
<string>Fonts/winjs-symbols.ttf</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,15 @@
|
|||
using UIKit;
|
||||
|
||||
namespace WasmWebSocketsSample.iOS
|
||||
{
|
||||
public class Application
|
||||
{
|
||||
// This is the main entry point of the application.
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// if you want to use a different Application Delegate class from "AppDelegate"
|
||||
// you can specify it here.
|
||||
UIApplication.Main(args, null, typeof(App));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("UnoQuickStart.iOS")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("UnoQuickStart.iOS")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("166de4ca-8f11-4ef9-bcf8-3e7834988e7d")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
Двоичные данные
src/WasmWebSocketsSample/WasmWebSocketsSample.iOS/Resources/Fonts/winjs-symbols.ttf
Normal file
|
@ -0,0 +1,109 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
|
||||
<ProjectGuid>{CE2E2F73-48E6-4771-A28F-374074678CF6}</ProjectGuid>
|
||||
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace>WasmWebSocketsSample</RootNamespace>
|
||||
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
|
||||
<AssemblyName>WasmWebSocketsSample</AssemblyName>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<ResourcesDirectory>..\WasmWebSocketsSample.Shared\Strings</ResourcesDirectory>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>portable</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
|
||||
<DefineConstants>DEBUG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<ConsolePause>false</ConsolePause>
|
||||
<MtouchArch>x86_64</MtouchArch>
|
||||
<MtouchLink>None</MtouchLink>
|
||||
<MtouchDebug>true</MtouchDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
|
||||
<DebugType>portable</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\iPhoneSimulator\Release</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<MtouchLink>None</MtouchLink>
|
||||
<MtouchArch>x86_64</MtouchArch>
|
||||
<ConsolePause>false</ConsolePause>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\iPhone\Debug</OutputPath>
|
||||
<DefineConstants>DEBUG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<ConsolePause>false</ConsolePause>
|
||||
<MtouchArch>ARM64</MtouchArch>
|
||||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
|
||||
<CodesignKey>iPhone Developer</CodesignKey>
|
||||
<MtouchDebug>true</MtouchDebug>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
|
||||
<DebugType>none</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\iPhone\Release</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
|
||||
<MtouchArch>ARM64</MtouchArch>
|
||||
<ConsolePause>false</ConsolePause>
|
||||
<CodesignKey>iPhone Developer</CodesignKey>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
|
||||
<DebugType>none</DebugType>
|
||||
<Optimize>True</Optimize>
|
||||
<OutputPath>bin\iPhone\Ad-Hoc</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<ConsolePause>False</ConsolePause>
|
||||
<MtouchArch>ARM64</MtouchArch>
|
||||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
|
||||
<BuildIpa>True</BuildIpa>
|
||||
<CodesignProvision>Automatic:AdHoc</CodesignProvision>
|
||||
<CodesignKey>iPhone Distribution</CodesignKey>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' ">
|
||||
<DebugType>none</DebugType>
|
||||
<Optimize>True</Optimize>
|
||||
<OutputPath>bin\iPhone\AppStore</OutputPath>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<ConsolePause>False</ConsolePause>
|
||||
<MtouchArch>ARM64</MtouchArch>
|
||||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
|
||||
<CodesignProvision>Automatic:AppStore</CodesignProvision>
|
||||
<CodesignKey>iPhone Distribution</CodesignKey>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Main.cs" />
|
||||
<None Include="Info.plist" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Content Include="Entitlements.plist" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="Xamarin.iOS" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BundleResource Include="Resources\Fonts\winjs-symbols.ttf" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Uno.UI" Version="1.42.0" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems" Label="Shared" Condition="Exists('..\WasmWebSocketsSample.Shared\WasmWebSocketsSample.Shared.projitems')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
|
||||
</Project>
|