fix interpreter and XF update for template

This commit is contained in:
Don Syme 2018-07-17 15:00:26 +01:00
Родитель 8cbc01c4f3
Коммит 50d2e68773
15 изменённых файлов: 351 добавлений и 134 удалений

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

@ -40,7 +40,7 @@ type BroadcastInfo =
let httpPort = defaultArg httpPort Ports.DefaultPort
do
async {
// while true do
for i in 0 .. 3 do
try
//let client = new UdpClient (Ports.BroadcasterPort, EnableBroadcast = true)
let iips =
@ -59,18 +59,25 @@ type BroadcastInfo =
// Addresses = iips }
if iips.Length > 0 then
printfn "LiveUpdate: On iOS connect using one of:"
printfn "----------"
printfn " LiveUpdate: Ready for connection. Will show this message %d more times." (3 - i)
printfn " "
printfn " LiveUpdate: On iOS connect using:"
for iip in iips do
printfn " fscd.exe --watch --webhook:http://%s:%d/" iip.Address httpPort
printfn "LiveUpdate: On Android USB connect using:"
printfn " adb -d forward tcp:%d tcp:%d (USB)" httpPort httpPort
printfn " fscd.exe --watch --webhook:http://localhost:%d/" httpPort
printfn "LiveUpdate: On Android Emulator connect using:"
printfn " adb -d forward tcp:%d tcp:%d (USB)" httpPort httpPort
printfn " fscd.exe --watch --webhook:http://localhost:%d/" httpPort
printfn "See https://fsprojects.github.io/Elmish.XamarinForms/tools.html for more details"
printfn " fscd.exe --watch --webhook:http://%s:%d/update" iip.Address httpPort
printfn " "
printfn " LiveUpdate: On Android USB connect using:"
printfn " adb -d forward tcp:%d tcp:%d (USB)" httpPort httpPort
printfn " fscd.exe --watch --webhook:http://localhost:%d/update" httpPort
printfn " "
printfn " LiveUpdate: On Android Emulator connect using:"
printfn " adb -d forward tcp:%d tcp:%d (USB)" httpPort httpPort
printfn " fscd.exe --watch --webhook:http://localhost:%d/update" httpPort
printfn " "
printfn " See https://fsprojects.github.io/Elmish.XamarinForms/tools.html for more details"
printfn "----------"
else
printfn "LiveUpdate: Couldn't find a network interface to recommend"
printfn "LiveUpdate: Couldn't find a network interface to recommend."
//let json = Newtonsoft.Json.JsonConvert.SerializeObject(broadcast)
//let bytes = System.Text.Encoding.UTF8.GetBytes (json)

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

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.donsyme.AllControls">
<uses-sdk android:minSdkVersion="15" />
<uses-sdk android:minSdkVersion="19" />
<application android:label="AllControls">
</application>
</manifest>

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

@ -7,6 +7,116 @@ open Elmish.XamarinForms.DynamicViews
open Xamarin.Forms
module App =
#if CALCULATOR
type Operator = Add | Subtract | Multiply | Divide
/// Represents a calculator button press
type Msg =
| Operator of Operator
| Digit of int
| Equals
| Clear
type Operand = double
// We can't represent an invalid state with this model.
// This greatly reduces the amount of validation required.
type Model =
| Initial
| Operand of Operand // 1
| OperandOperator of Operand * Operator // 1 +
| OperandOperatorOperand of Operand * Operator * Operand // 1 + 1
| Result of double // 2
| Error
let calculateOperation op1 op2 operator =
match operator with
| Add -> op1 + op2
| Subtract -> op1 - op2
| Multiply -> op1 * op2
| Divide -> op1 / op2
let calculate model msg =
match model with
| OperandOperatorOperand (_, Divide, 0.0) -> Error
| OperandOperatorOperand (op1, operator, op2) ->
let res = calculateOperation op1 op2 operator
match msg with
| Equals -> Result(res)
| Operator operator ->
// pass the result in as the start of a new calculation (1 + 1 + -> 2 +)
OperandOperator(res, operator)
| _ -> model
| _ -> model
let update msg model =
match msg with
| Clear -> Initial
| Digit digit ->
match model with
| Initial | Error | Result _ -> Operand (double digit)
| Operand op -> Operand (double (string op + string digit))
| OperandOperator (operand, operator) -> OperandOperatorOperand (operand, operator, double digit)
| OperandOperatorOperand (op1, operator, op2) -> OperandOperatorOperand (op1, operator, double (string op2 + string digit))
| Operator operator ->
match model with
| Initial | Error -> model
| Result operand // previously calculated result is now the first operand
| Operand operand | OperandOperator (operand, _) -> OperandOperator(operand, operator)
| OperandOperatorOperand _ -> calculate model msg
| Equals -> calculate model msg
let display model =
match model with
| Initial -> "0"
| Operand op | OperandOperator (op, _) | OperandOperatorOperand (_, _, op) -> string op
| Result res -> string res
| Error -> "Error"
let view (model: Model) dispatch =
let mkButton text command row column =
View.Button(text = text, command=(fun () -> dispatch command))
.GridRow(row)
.GridColumn(column)
.FontSize(36.0)
//.ButtonCornerRadius(0)
let mkNumberButton number row column =
(mkButton (string number) (Digit number) row column)
.BackgroundColor(Color.White)
.TextColor(Color.Black)
let orange = Color.FromRgb(0xff, 0xa5, 0)
let gray = Color.FromRgb(0x80, 0x80, 0x80)
let mkOperatorButton text operator row column =
(mkButton text (Operator operator) row column)
.BackgroundColor(orange)
.TextColor(Color.Black)
View.ContentPage(
View.Grid(rowdefs=[ "*"; "*"; "*"; "*"; "*"; "*" ], coldefs=[ "*"; "*"; "*"; "*" ],
children=[
View.Label(text = display model, fontSize = 48.0, fontAttributes = FontAttributes.Bold, backgroundColor = Color.Black, textColor = Color.White, horizontalTextAlignment = TextAlignment.End, verticalTextAlignment = TextAlignment.Center).GridColumnSpan(4)
mkNumberButton 7 1 0; mkNumberButton 8 1 1; mkNumberButton 9 1 2
mkNumberButton 4 2 0; mkNumberButton 5 2 1; mkNumberButton 6 2 2
mkNumberButton 1 3 0; mkNumberButton 2 3 1; mkNumberButton 3 3 2
(mkNumberButton 0 4 0).GridColumnSpan(3)
mkOperatorButton "÷÷" Divide 1 3
mkOperatorButton "×" Multiply 2 3
mkOperatorButton "-" Subtract 3 3
mkOperatorButton "+" Add 4 3
(mkButton "A" Clear 5 0).BackgroundColor(gray).TextColor(Color.White)
(mkButton "." Equals 5 1).BackgroundColor(orange).TextColor(Color.Black)
(mkButton "=" Equals 5 2).BackgroundColor(orange).GridColumnSpan(2).TextColor(Color.White)
], rowSpacing = 1.0, columnSpacing = 1.0, backgroundColor = gray
)
)
let program =
Program.mkSimple (fun() -> Initial) update view
|> Program.withConsoleTrace
#else
type Model =
{ Count : int
Step : int
@ -58,6 +168,7 @@ module App =
let program =
Program.mkProgram init update view
|> Program.withConsoleTrace
#endif
#if TESTEVAL
let testInit = fst (init ())
@ -74,7 +185,7 @@ type CounterApp () as app =
#endif
#if !NO_SAVE_MODEL_WITH_JSON && !TESTEVAL
#if SAVE_MODEL_WITH_JSON && !TESTEVAL
let modelId = "model"
override __.OnSleep() =

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

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.CounterApp" >
<uses-sdk android:minSdkVersion="15" />
<uses-sdk android:minSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

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

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.donsyme.StaticViewCounterApp">
<uses-sdk android:minSdkVersion="15" />
<uses-sdk android:minSdkVersion="19" />
<application android:label="StaticViewCounterApp">
</application>
</manifest>

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

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.TicTacToe">
<uses-sdk android:minSdkVersion="15" />
<uses-sdk android:minSdkVersion="19" />
<application android:label="TicTacToe">
</application>
</manifest>

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

@ -365,5 +365,18 @@ if not (even 10) then failwith "fail fail!"
"""
[<TestMethod>]
member this.TryGetValueSmoke() =
SimpleTestCase "TryGetValueSmoke" """
let m = dict [ (1,"2") ]
let f() =
match m.TryGetValue 1 with
| true, v -> if v <> "2" then failwith "fail!"
| _ -> failwith "fail2!"
f()
"""
// tests needed:
// 2D arrays

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

@ -54,6 +54,7 @@ and DType =
| DFunctionType of DType * DType
| DTupleType of bool * DType[]
| DArrayType of int * DType
| DByRefType of DType
| DVariableType of string
and DLocalDef =
{ Name: string; IsMutable: bool; Type: DType }

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

@ -166,6 +166,7 @@ and convType (typ: FSharpType) =
elif typ.IsStructTupleType then DTupleType (true, convTypes typ.GenericArguments)
elif typ.IsGenericParameter then DVariableType typ.GenericParameter.Name
elif typ.TypeDefinition.IsArrayType then DArrayType (typ.TypeDefinition.ArrayRank, convType typ.GenericArguments.[0])
elif typ.TypeDefinition.IsByRef then DByRefType (convType typ.GenericArguments.[0])
else DNamedType (convEntityRef typ.TypeDefinition, convTypes typ.GenericArguments)
and convTypes (typs: seq<FSharpType>) = typs |> Seq.toArray |> Array.map convType
and convGenericParamDef (gp: FSharpGenericParameter) : DGenericParameterDef = { Name = gp.Name }

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

@ -256,6 +256,9 @@ type EvalContext () =
member ctxt.ResolveType(env, ty: DType) =
match ty with
| DByRefType(elemType) ->
match ctxt.ResolveType (env, elemType) with
| RTypeOrObj t -> RType (t.MakeByRefType())
| DArrayType(1, elemType) ->
match ctxt.ResolveType (env, elemType) with
| RTypeOrObj t -> RType (t.MakeArrayType())
@ -376,9 +379,9 @@ type EvalContext () =
elif m = op_checked_mul then RPrim_checked_mul
else RMethod m
member ctxt.InterpMethod(formalEnv, eR, nm, paramTys) =
member ctxt.InterpMethod(formalEnv, entityR, methodName, paramTys) =
let paramTysR = ctxt.ResolveTypes (formalEnv, paramTys)
let key = (eR, nm, paramTysR)
let key = (entityR, methodName, paramTysR)
if not (members.ContainsKey(key)) then failwithf "No member found for key %A" key
let minfo = members.[key]
UMember minfo
@ -433,7 +436,7 @@ type EvalContext () =
members.[(ty, membDef.Name, paramTypesR)] <- Value thunk
| _ -> ()
member ctxt.EvalMethodLambda(env, isCtor, isInstance, typeParameters, parameters: DLocalDef[], body) =
member ctxt.EvalMethodLambda(env, isCtor, isInstance, typeParameters, parameters: DLocalDef[], bodyExpr) =
MethodLambdaValue
(FuncConvert.FromFunc<Type[] * obj[],obj>(fun (tyargs, args) ->
if parameters.Length + (if isInstance then 1 else 0) <> args.Length then failwithf "arg/parameter mismatch for method with arguments %A" parameters
@ -443,10 +446,10 @@ type EvalContext () =
if isCtor then
let objV = ObjectValue (ref Map.empty)
let env = bindByName env "$this" (Value objV)
ctxt.EvalExpr(env, body) |> ignore
ctxt.EvalExpr(env, bodyExpr) |> ignore
box objV
else
let retV = ctxt.EvalExpr(env, body) |> getVal
let retV = ctxt.EvalExpr(env, bodyExpr) |> getVal
box retV))
member ctxt.EvalDecls(env, decls: DDecl[]) =
@ -494,22 +497,27 @@ type EvalContext () =
| DExpr.UnionCaseGet(unionExpr, unionType, unionCase, unionCaseField) -> ctxt.EvalUnionCaseGet(env, unionExpr, unionType, unionCase, unionCaseField)
| DExpr.UnionCaseTag(unionExpr, unionType) -> ctxt.EvalUnionCaseTag(env, unionExpr, unionType)
| DExpr.TypeTest(ty, inpExpr) -> ctxt.EvalTypeTest(env, ty, inpExpr)
| DExpr.DefaultValue defaultType -> ctxt.EvalDefaultValue (env, defaultType)
| DExpr.AddressOf(lvalueExpr) ->
// Note, we use copy-in, copy-oput for byref arguments
ctxt.EvalExpr(env, lvalueExpr)
//| DExpr.FastIntegerForLoop(startExpr, limitExpr, consumeExpr, isUp) -> ctxt.EvalFastIntegerForLoop(env, startExpr, limitExpr, consumeExpr, isUp)
(*
// TODO:
| DExpr.AddressOf(lvalueExpr) -> ctxt.EvalAddressOf(convExpr lvalueExpr)
| DExpr.AddressSet(lvalueExpr, rvalueExpr) -> ctxt.EvalAddressSet(convExpr lvalueExpr, convExpr rvalueExpr)
// Need more work:
| DExpr.NewDelegate(delegateType, delegateBodyExpr) -> ctxt.EvalNewDelegate(convType delegateType, convExpr delegateBodyExpr)
| DExpr.Quote(quotedExpr) -> ctxt.EvalQuote(convExpr quotedExpr)
| DExpr.DefaultValue defaultType -> ctxt.EvalDefaultValue (convType defaultType)
// Not really possible:
| DExpr.AddressSet(lvalueExpr, rvalueExpr) -> ctxt.EvalAddressSet(convExpr lvalueExpr, convExpr rvalueExpr)
| DExpr.ObjectExpr(objType, baseCallExpr, overrides, interfaceImplementations) -> ctxt.EvalObjectExpr(convType objType, convExpr baseCallExpr, List.map convObjMember overrides, List.map (map2 convType (List.map convObjMember)) interfaceImplementations)
// Not needed:
| DExpr.TraitCall(sourceTypes, traitName, typeArgs, typeInstantiation, argTypes, argExprs) -> ctxt.EvalTraitCall(sourceTypes, traitName, typeArgs, typeInstantiation, argTypes, argExprs)
// Library only:
| DExpr.UnionCaseSet(unionExpr, unionType, unionCase, unionCaseField, valueExpr) -> ctxt.EvalUnionCaseSet(convExpr unionExpr, convType unionType, convUnionCase unionCase, convField unionCaseField, convExpr valueExpr)
| DExpr.ILAsm(asmCode, typeArgs, argExprs) -> ctxt.EvalILAsm(asmCode, convTypes typeArgs, convExprs argExprs)
// Very rare:
| DExpr.ILFieldSet (objExprOpt, fieldType, fieldName, valueExpr) -> ctxt.EvalILFieldSet (convExprOpt objExprOpt, convType fieldType, fieldName, convExpr valueExpr)
*)
| DExpr.BaseValue _thisType
@ -568,6 +576,14 @@ type EvalContext () =
let objValOpt = objExprOpt |> Option.map (fun objExpr -> ctxt.EvalExpr(env, objExpr))
objValOpt |> Option.map getVal |> Option.toObj
member ctxt.EvalDefaultValue(env, defaultType) =
let defaultTypeR = ctxt.ResolveType (env, defaultType)
let v =
match defaultTypeR with
| RType ty -> if ty.IsValueType then Activator.CreateInstance(ty) else null
| UNamedType _ -> null
Value v
member ctxt.EvalNewObject(env, objCtor, typeArgs, argExprs) =
let argsV = ctxt.EvalExprs(env, argExprs)
let typeArgsR = ctxt.ResolveTypes (env, typeArgs)
@ -706,9 +722,24 @@ type EvalContext () =
elif minfo.IsGenericMethod then
minfo.MakeGenericMethod(typeArgs2V)
else minfo
try iminfo.Invoke(objOptV, argsV) |> Value
with :? TargetInvocationException as e ->
raise e.InnerException
let res =
try iminfo.Invoke(objOptV, argsV) |> Value
with :? TargetInvocationException as e ->
raise e.InnerException
// Copy back the out parameters - note that argsV will have been mutates
let parameters = minfo.GetParameters()
for i in 0 .. parameters.Length - 1 do
if parameters.[i].ParameterType.IsByRef then
match argExprs.[i] with
| DExpr.AddressOf (DExpr.Value (DLocalRef (valToSet, isThisValue, isMutable))) when not isThisValue && isMutable ->
match env.Vals.TryGetValue valToSet with
| true, rv ->
rv.Value <- argsV.[i]
| _ -> failwithf "didn't find mutable value in the environment"
| _ -> failwithf "can't yet interpret passing fields byref"
res
| RMethod (:? ConstructorInfo as cinfo), RTypesOrObj _typeArgs1V, RTypesOrObj _typeArgs2V ->
try cinfo.Invoke(argsV) |> Value
@ -737,6 +768,7 @@ type EvalContext () =
| RField _ -> failwith "unexpected field resolution"
| UField (i, _ty, nm) ->
match objOptV with
| :? RecordValue as recdV ->
let (RecordValue argsV) = recdV
argsV.[i] |> Value
@ -747,6 +779,10 @@ type EvalContext () =
| true, v -> v |> Value
| _ -> failwithf "field not found: %s" nm
| null ->
// TODO: for struct records this should return the default value
raise (NullReferenceException("EvalFieldGet: The record value was null"))
| _ ->
failwithf "unexpected kind of interpreted value %A while getting field %s" objOptV nm
@ -762,6 +798,7 @@ type EvalContext () =
| RField _ -> failwith "unexpected field resolution"
| UField (i, _ty, nm) ->
match objOptV with
| :? RecordValue as recdV ->
let (RecordValue argsV) = recdV
argsV.[i] <- argExprV
@ -771,6 +808,10 @@ type EvalContext () =
let newArgsV = argsV.Value.Add(nm, argExprV)
argsV.Value <- newArgsV
| null ->
// TODO: for struct records this should return the default value
raise (NullReferenceException("EvalFieldSet: The record value was null"))
| _ -> failwithf "unexpected kind of interpreted value %A while setting field %s" objOptV nm
Value null
@ -848,7 +889,8 @@ type EvalContext () =
member ctxt.EvalDecisionTreeSuccess(env, decisionTargetIdx, decisionTargetExprs) =
let (locals, expr) = env.Targets.[decisionTargetIdx]
let env = (env, locals, decisionTargetExprs) |||> Array.fold2 (fun env p a -> bind env p (Value a))
let decisionTargetExprsV = ctxt.EvalExprs (env, decisionTargetExprs)
let env = (env, locals, decisionTargetExprsV) |||> Array.fold2 (fun env p a -> bind env p (Value a))
ctxt.EvalExpr (env, expr)
member ctxt.EvalSequential(env, firstExpr, secondExpr) =
@ -922,6 +964,11 @@ type EvalContext () =
| :? UnionValue as p ->
let (UnionValue(tag2, _nm, _fields)) = p
tag = tag2
| null ->
// TODO: for struct unions this should return the default value
raise (NullReferenceException("EvalUnionCaseTest: The union case value was null"))
| _ -> failwithf "unexpected value '%A' in EvalUnionCaseTest" unionV
Value (box res)

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

@ -19,6 +19,7 @@ open System.IO
open System.Collections.Generic
open Microsoft.FSharp.Compiler.SourceCodeServices
open System.Net
open System.Text
#if TEST
module MockForms =
@ -186,9 +187,9 @@ let main (argv: string[]) =
match webhook with
| Some hook ->
try
use webClient = new WebClient()
use webClient = new WebClient(Encoding = Encoding.UTF8)
printfn "fscd: SENDING TO WEBHOOK... " // : <<<%s>>>... --> %s" json.[0 .. min (json.Length - 1) 100] hook
let resp = webClient.UploadString(hook,"Put",json)
let resp = webClient.UploadString (hook,"Put",json)
printfn "fscd: RESP FROM WEBHOOK: %s" resp
with err ->
printfn "fscd: ERROR SENDING TO WEBHOOK: %A" (err.ToString())

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

@ -1,28 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.props" Condition="Exists('..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{8D9F8CF0-E178-402D-8D40-A88B7B5F3D42}</ProjectGuid>
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{F2A71F9B-5D33-465A-A702-920D77279786}</ProjectTypeGuids>
<TemplateGuid>{c9e5eea5-ca05-42a1-839b-61506e0a37df}</TemplateGuid>
<ProjectGuid>{8D9F8CF0-E178-402D-8D40-A88B7B5F3D42}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>NewApp.Android</RootNamespace>
<AssemblyName>NewApp.Android</AssemblyName>
<TargetFrameworkVersion>AndroidSDKVersion</TargetFrameworkVersion>
<TemplateGuid>{c9e5eea5-ca05-42a1-839b-61506e0a37df}</TemplateGuid>
<AndroidApplication>True</AndroidApplication>
<AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
<AndroidResgenClass>Resource</AndroidResgenClass>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>AndroidSDKVersion</TargetFrameworkVersion>
<MinimumVisualStudioVersion Condition="'$(MinimumVisualStudioVersion)' == ''">11</MinimumVisualStudioVersion>
<!--#if (MinAndroidAPI >= 21)
<AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
<#endif-->
<Name>NewApp.Android</Name>
<NuGetPackageImportStamp></NuGetPackageImportStamp>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<RestorePackages>true</RestorePackages>
<OtherFlags>/warnon:1182</OtherFlags>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@ -31,8 +37,8 @@
<OutputPath>bin\Debug</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AndroidLinkMode>None</AndroidLinkMode>
<ConsolePause>False</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@ -40,7 +46,7 @@
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>False</ConsolePause>
<AndroidManagedSymbols>true</AndroidManagedSymbols>
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
</PropertyGroup>
@ -85,127 +91,147 @@
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Xml" />
<Reference Include="Xamarin.Android.FSharp.ResourceProvider.Runtime">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.FSharp.ResourceProvider.XamarinAndroidFSharpResourceProviderPkg/lib/Xamarin.Android.FSharp.ResourceProvider.Runtime.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.FSharp.ResourceProvider.XamarinAndroidFSharpResourceProviderPkg/lib/Xamarin.Android.FSharp.ResourceProvider.Runtime.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Arch.Core.Common">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Arch.Core.Common.1.0.0.1/lib/MonoAndroid80/Xamarin.Android.Arch.Core.Common.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Arch.Core.Common.1.0.0.1/lib/MonoAndroid80/Xamarin.Android.Arch.Core.Common.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Arch.Core.Runtime">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Arch.Core.Runtime.1.0.0.1/lib/MonoAndroid80/Xamarin.Android.Arch.Core.Runtime.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Arch.Core.Runtime.1.0.0.1/lib/MonoAndroid80/Xamarin.Android.Arch.Core.Runtime.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Arch.Lifecycle.Common">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Arch.Lifecycle.Common.1.0.3.1/lib/MonoAndroid80/Xamarin.Android.Arch.Lifecycle.Common.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Arch.Lifecycle.Common.1.0.3.1/lib/MonoAndroid80/Xamarin.Android.Arch.Lifecycle.Common.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Arch.Lifecycle.Runtime">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Arch.Lifecycle.Runtime.1.0.3.1/lib/MonoAndroid80/Xamarin.Android.Arch.Lifecycle.Runtime.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Arch.Lifecycle.Runtime.1.0.3.1/lib/MonoAndroid80/Xamarin.Android.Arch.Lifecycle.Runtime.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Animated.Vector.Drawable">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Animated.Vector.Drawable.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Animated.Vector.Drawable.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Animated.Vector.Drawable.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Animated.Vector.Drawable.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.CustomTabs">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.CustomTabs.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.CustomTabs.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.CustomTabs.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.CustomTabs.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Annotations">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Annotations.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Annotations.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Annotations.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Annotations.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Compat">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Compat.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Compat.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Compat.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Compat.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Core.UI">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Core.UI.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Core.UI.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Core.UI.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Core.UI.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Core.Utils">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Core.Utils.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Core.Utils.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Core.Utils.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Core.Utils.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Design">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Design.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Design.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Design.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Design.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Fragment">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Fragment.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Fragment.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Fragment.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Fragment.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Media.Compat">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Media.Compat.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Media.Compat.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Media.Compat.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Media.Compat.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Transition">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Transition.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Transition.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Transition.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Transition.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v4">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.v4.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v4.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.v4.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v4.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.AppCompat">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.v7.AppCompat.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.v7.AppCompat.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.CardView">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.v7.CardView.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.CardView.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.v7.CardView.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.CardView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.MediaRouter">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.v7.MediaRouter.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.MediaRouter.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.v7.MediaRouter.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.MediaRouter.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.Palette">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.v7.Palette.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.Palette.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.v7.Palette.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.Palette.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.RecyclerView">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.v7.RecyclerView.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.RecyclerView.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.v7.RecyclerView.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.v7.RecyclerView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Android.Support.Vector.Drawable">
<HintPath>$(SolutionDir)/packages/Xamarin.Android.Support.Vector.Drawable.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Vector.Drawable.dll</HintPath>
<HintPath>..\packages/Xamarin.Android.Support.Vector.Drawable.XamarinAndroidSdkVersion/lib/MonoAndroid81/Xamarin.Android.Support.Vector.Drawable.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Core">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/Xamarin.Forms.Core.dll</HintPath>
<HintPath>..\packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/Xamarin.Forms.Platform.dll</HintPath>
<HintPath>..\packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="FormsViewGroup">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/FormsViewGroup.dll</HintPath>
<HintPath>..\packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/FormsViewGroup.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.Android">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/Xamarin.Forms.Platform.Android.dll</HintPath>
<HintPath>..\packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/Xamarin.Forms.Platform.Android.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/Xamarin.Forms.Xaml.dll</HintPath>
<HintPath>..\packages/Xamarin.Forms.XamarinFormsSdk/lib/MonoAndroid10/Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
<Reference Include="FSharp.Core">
<HintPath>$(SolutionDir)/packages/FSharp.Core.FSharpCorePkg/lib/netstandard1.6/FSharp.Core.dll</HintPath>
<HintPath>..\packages/FSharp.Core.FSharpCorePkg/lib/netstandard1.6/FSharp.Core.dll</HintPath>
</Reference>
<Reference Include="Elmish.XamarinForms">
<HintPath>$(SolutionDir)/packages/Elmish.XamarinForms.ElmishXamarinFormsPkg/lib/netstandard2.0/Elmish.XamarinForms.dll</HintPath>
<HintPath>..\packages/Elmish.XamarinForms.ElmishXamarinFormsPkg/lib/netstandard2.0/Elmish.XamarinForms.dll</HintPath>
</Reference>
<Reference Include="Elmish.XamarinForms.LiveUpdate">
<HintPath>$(SolutionDir)/packages/Elmish.XamarinForms.LiveUpdate.ElmishXamarinFormsPkg/lib/netstandard2.0/Elmish.XamarinForms.LiveUpdate.dll</HintPath>
<HintPath>..\packages/Elmish.XamarinForms.LiveUpdate.ElmishXamarinFormsPkg/lib/netstandard2.0/Elmish.XamarinForms.LiveUpdate.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>$(SolutionDir)/packages/Newtonsoft.Json.NewtonsoftJsonPkg/lib/netstandard1.3/Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages/Newtonsoft.Json.NewtonsoftJsonPkg/lib/netstandard1.3/Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Essentials">
<HintPath>$(SolutionDir)/packages/Xamarin.Essentials.0.6.0-preview/lib/monoandroid71/Xamarin.Essentials.dll</HintPath>
<HintPath>..\packages/Xamarin.Essentials.0.6.0-preview/lib/monoandroid71/Xamarin.Essentials.dll</HintPath>
</Reference>
<ProjectReference Include="..\NewApp\NewApp.fsproj">
<Project>{99E19497-29A6-4B77-B773-BEC55F9B55DC}</Project>
<Name>NewApp</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)/Xamarin/Android/Xamarin.Android.FSharp.targets" Condition="Exists('$(MSBuildExtensionsPath)/Xamarin/Android/Xamarin.Android.FSharp.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Core.UI.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Core.UI.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Core.UI/build/MonoAndroid81/Xamarin.Android.Support.Core.UI.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Compat.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Compat.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Compat/build/MonoAndroid81/Xamarin.Android.Support.Compat.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Annotations.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Annotations.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Annotations/build/MonoAndroid81/Xamarin.Android.Support.Annotations.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Arch.Core.Common.1.0.0.1/build/MonoAndroid80/Xamarin.Android.Arch.Core.Common.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Arch.Core.Common.1.0.0.1/build/MonoAndroid80/Xamarin.Android.Arch.Core.Common.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Arch.Core.Runtime.1.0.0.1/build/MonoAndroid80/Xamarin.Android.Arch.Core.Runtime.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Arch.Core.Runtime.1.0.0.1/build/MonoAndroid80/Xamarin.Android.Arch.Core.Runtime.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Arch.Lifecycle.Common.1.0.3.1/build/MonoAndroid80/Xamarin.Android.Arch.Lifecycle.Common.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Arch.Lifecycle.Common.1.0.3.1/build/MonoAndroid80/Xamarin.Android.Arch.Lifecycle.Common.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Arch.Lifecycle.Runtime.1.0.3.1/build/MonoAndroid80/Xamarin.Android.Arch.Lifecycle.Runtime.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Arch.Lifecycle.Runtime.1.0.3.1/build/MonoAndroid80/Xamarin.Android.Arch.Lifecycle.Runtime.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Core.Utils.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Core.Utils.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Core.Utils.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Core.Utils.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Fragment.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Fragment.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Fragment.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Fragment.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Media.Compat.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Media.Compat.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Media.Compat.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Media.Compat.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Transition.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Transition.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Transition.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Transition.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.v4.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v4.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.v4.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v4.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.v7.CardView.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.CardView.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.v7.CardView.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.CardView.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.v7.Palette.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.Palette.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.v7.Palette.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.Palette.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.v7.RecyclerView.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.RecyclerView.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.v7.RecyclerView.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.RecyclerView.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Vector.Drawable.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Vector.Drawable.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Vector.Drawable.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Vector.Drawable.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Animated.Vector.Drawable.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Animated.Vector.Drawable.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Animated.Vector.Drawable.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Animated.Vector.Drawable.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.v7.AppCompat.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.AppCompat.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.v7.AppCompat.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.AppCompat.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.Design.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Design.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.Design.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.Design.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Android.Support.v7.MediaRouter.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.MediaRouter.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Android.Support.v7.MediaRouter.XamarinAndroidSdkVersion/build/MonoAndroid81/Xamarin.Android.Support.v7.MediaRouter.targets')" />
<Import Project="$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/build/netstandard1.0/Xamarin.Forms.targets" Condition="Exists('$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/build/netstandard1.0/Xamarin.Forms.targets')" />
<Import Project="../.nuget/NuGet.targets" />
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.FSharp.targets" />
<Import Project="..\packages\Xamarin.Android.Support.Compat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Compat.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Compat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Compat.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.Compat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Compat.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.Compat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Compat.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.Core.UI.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Core.UI.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.Core.UI.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Core.UI.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.Core.Utils.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Core.Utils.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.Core.Utils.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Core.Utils.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.Media.Compat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Media.Compat.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.Media.Compat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Media.Compat.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.Fragment.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Fragment.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.Fragment.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Fragment.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.Transition.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Transition.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.Transition.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Transition.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.v4.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v4.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.v4.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v4.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.v7.CardView.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.CardView.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.v7.CardView.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.CardView.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.v7.Palette.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.Palette.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.v7.Palette.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.Palette.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.v7.RecyclerView.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.RecyclerView.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.v7.RecyclerView.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.RecyclerView.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.Vector.Drawable.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Vector.Drawable.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.Vector.Drawable.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Vector.Drawable.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Animated.Vector.Drawable.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Animated.Vector.Drawable.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.v7.AppCompat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.AppCompat.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.v7.AppCompat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.AppCompat.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.Design.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Design.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.Design.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Design.targets'))" />
<Error Condition="!Exists('..\packages\Xamarin.Android.Support.v7.MediaRouter.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.MediaRouter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Android.Support.v7.MediaRouter.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.MediaRouter.targets'))" />
</Target>
<Import Project="..\packages\Xamarin.Android.Support.Core.UI.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Core.UI.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Core.UI.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Core.UI.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.Annotations.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Annotations.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Annotations.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Annotations.targets')" />
<Import Project="..\packages\Xamarin.Android.Arch.Core.Common.1.0.0.1\build\MonoAndroid80\Xamarin.Android.Arch.Core.Common.targets" Condition="Exists('..\packages\Xamarin.Android.Arch.Core.Common.1.0.0.1\build\MonoAndroid80\Xamarin.Android.Arch.Core.Common.targets')" />
<Import Project="..\packages\Xamarin.Android.Arch.Core.Runtime.1.0.0.1\build\MonoAndroid80\Xamarin.Android.Arch.Core.Runtime.targets" Condition="Exists('..\packages\Xamarin.Android.Arch.Core.Runtime.1.0.0.1\build\MonoAndroid80\Xamarin.Android.Arch.Core.Runtime.targets')" />
<Import Project="..\packages\Xamarin.Android.Arch.Lifecycle.Common.1.0.3.1\build\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Common.targets" Condition="Exists('..\packages\Xamarin.Android.Arch.Lifecycle.Common.1.0.3.1\build\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Common.targets')" />
<Import Project="..\packages\Xamarin.Android.Arch.Lifecycle.Runtime.1.0.3.1\build\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Runtime.targets" Condition="Exists('..\packages\Xamarin.Android.Arch.Lifecycle.Runtime.1.0.3.1\build\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Runtime.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.Core.Utils.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Core.Utils.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Core.Utils.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Core.Utils.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.Media.Compat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Media.Compat.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Media.Compat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Media.Compat.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.Fragment.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Fragment.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Fragment.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Fragment.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.Transition.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Transition.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Transition.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Transition.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.v4.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v4.targets" Condition="Exists('..\packages\Xamarin.Android.Support.v4.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v4.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.v7.CardView.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.CardView.targets" Condition="Exists('..\packages\Xamarin.Android.Support.v7.CardView.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.CardView.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.v7.Palette.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.Palette.targets" Condition="Exists('..\packages\Xamarin.Android.Support.v7.Palette.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.Palette.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.v7.RecyclerView.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.RecyclerView.targets" Condition="Exists('..\packages\Xamarin.Android.Support.v7.RecyclerView.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.RecyclerView.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.Vector.Drawable.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Vector.Drawable.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Vector.Drawable.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Vector.Drawable.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Animated.Vector.Drawable.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Animated.Vector.Drawable.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Animated.Vector.Drawable.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.v7.AppCompat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.AppCompat.targets" Condition="Exists('..\packages\Xamarin.Android.Support.v7.AppCompat.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.AppCompat.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.Design.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Design.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Design.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.Design.targets')" />
<Import Project="..\packages\Xamarin.Android.Support.v7.MediaRouter.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.MediaRouter.targets" Condition="Exists('..\packages\Xamarin.Android.Support.v7.MediaRouter.XamarinAndroidSdkVersion\build\MonoAndroid81\Xamarin.Android.Support.v7.MediaRouter.targets')" />
<Import Project="..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.targets')" />
<Import Project="..\.nuget\NuGet.targets" />
</Project>

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

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.props" Condition="Exists('..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform>
@ -150,28 +152,28 @@
<Reference Include="System.Numerics.Vectors" />
<Reference Include="Xamarin.iOS" />
<Reference Include="Xamarin.Forms.Core">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/Xamarin.iOS10/Xamarin.Forms.Core.dll</HintPath>
<HintPath>..\packages\Xamarin.Forms.XamarinFormsSdk\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/Xamarin.iOS10/Xamarin.Forms.Platform.dll</HintPath>
<HintPath>..\packages\Xamarin.Forms.XamarinFormsSdk\lib\Xamarin.iOS10\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.iOS">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/Xamarin.iOS10/Xamarin.Forms.Platform.iOS.dll</HintPath>
<HintPath>..\packages\Xamarin.Forms.XamarinFormsSdk\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/Xamarin.iOS10/Xamarin.Forms.Xaml.dll</HintPath>
<HintPath>..\packages\Xamarin.Forms.XamarinFormsSdk\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
<Reference Include="FSharp.Core">
<HintPath>$(SolutionDir)/packages/FSharp.Core.FSharpCorePkg/lib/netstandard1.6/FSharp.Core.dll</HintPath>
<HintPath>..\packages\FSharp.Core.FSharpCorePkg\lib\netstandard1.6\FSharp.Core.dll</HintPath>
</Reference>
<Reference Include="Elmish.XamarinForms">
<HintPath>$(SolutionDir)/packages/Elmish.XamarinForms.ElmishXamarinFormsPkg/lib/netstandard2.0/Elmish.XamarinForms.dll</HintPath>
<HintPath>..\packages\Elmish.XamarinForms.ElmishXamarinFormsPkg\lib\netstandard2.0\Elmish.XamarinForms.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>$(SolutionDir)/packages/Newtonsoft.Json.NewtonsoftJsonPkg/lib/netstandard1.3/Newtonsoft.Json.dll</HintPath>
<HintPath>..\packages\Newtonsoft.Json.NewtonsoftJsonPkg\lib\netstandard1.3\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Essentials">
<HintPath>$(SolutionDir)/packages/Xamarin.Essentials.0.6.0-preview/lib/monoandroid71/Xamarin.Essentials.dll</HintPath>
<HintPath>..\packages\Xamarin.Essentials.0.6.0-preview\lib\monoandroid71\Xamarin.Essentials.dll</HintPath>
</Reference>
<!--#if (CreateUITestProject)
<PackageReference Include="Xamarin.TestCloud.Agent" Version="0.21.4"/>
@ -184,5 +186,6 @@
<Name>NewApp</Name>
</ProjectReference>
</ItemGroup>
<Import Project="../.nuget/NuGet.targets" />
<Import Project="..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.targets')" />
<Import Project="..\.nuget\NuGet.targets" />
</Project>

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

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.props" Condition="Exists('..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@ -52,24 +54,6 @@
<HttpClientHandler></HttpClientHandler>
<XamMacArch></XamMacArch>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="netstandard" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.Mac" />
<Reference Include="Xamarin.Forms.Core">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/Xamarin.Mac/Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/Xamarin.Mac/Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.Android">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/Xamarin.Mac/Xamarin.Forms.Platform.macOS.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>$(SolutionDir)/packages/Xamarin.Forms.XamarinFormsSdk/lib/Xamarin.Mac/Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json" />
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\AppIcon-128.png" />
@ -95,6 +79,27 @@
<ItemGroup>
<Compile Include="AppDelegate.fs" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="netstandard" />
<Reference Include="System.Core" />
<Reference Include="Xamarin.Mac" />
<Reference Include="Xamarin.Forms.Core">
<HintPath>..\packages\Xamarin.Forms.XamarinFormsSdk\lib\Xamarin.Mac\Xamarin.Forms.Core.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform">
<HintPath>..\packages\Xamarin.Forms.XamarinFormsSdk\lib\Xamarin.Mac\Xamarin.Forms.Platform.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Platform.Android">
<HintPath>..\packages\Xamarin.Forms.XamarinFormsSdk\lib\Xamarin.Mac\Xamarin.Forms.Platform.macOS.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Forms.Xaml">
<HintPath>..\packages\Xamarin.Forms.XamarinFormsSdk\lib\Xamarin.Mac\Xamarin.Forms.Xaml.dll</HintPath>
</Reference>
<Reference Include="FSharp.Core">
<HintPath>..\packages\FSharp.Core.FSharpCorePkg\lib\netstandard1.6\FSharp.Core.dll</HintPath>
</Reference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Mac\Xamarin.Mac.FSharp.targets" Condition="Exists('$(MSBuildExtensionsPath)\Xamarin\Mac\Xamarin.Mac.FSharp.targets')"/>
<ItemGroup>
<ProjectReference Include="..\NewApp\NewApp.fsproj">
@ -102,5 +107,6 @@
<Name>NewApp</Name>
</ProjectReference>
</ItemGroup>
<Import Project="../.nuget/NuGet.targets" />
<Import Project="..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.XamarinFormsSdk\build\netstandard2.0\Xamarin.Forms.targets')" />
<Import Project="..\.nuget\NuGet.targets" />
</Project>

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

@ -47,11 +47,11 @@ module App =
content = View.StackLayout(padding = 20.0, verticalOptions = LayoutOptions.Center,
children = [
View.Label(text = sprintf "%d" model.Count, horizontalOptions = LayoutOptions.Center, fontSize = "Large")
View.Button(text = "Increment", command = (fun () -> dispatch Increment))
View.Button(text = "Decrement", command = (fun () -> dispatch Decrement))
View.Label(text = "Timer")
View.Switch(isToggled = model.TimerOn, toggled = (fun on -> dispatch (TimerToggled on.Value)))
View.Slider(minimum = 0.0, maximum = 10.0, value = double model.Step, valueChanged = (fun args -> dispatch (SetStep (int (args.NewValue + 0.5)))))
View.Button(text = "Increment", command = (fun () -> dispatch Increment), horizontalOptions = LayoutOptions.Center)
View.Button(text = "Decrement", command = (fun () -> dispatch Decrement), horizontalOptions = LayoutOptions.Center)
View.Label(text = "Timer", horizontalOptions = LayoutOptions.Center)
View.Switch(isToggled = model.TimerOn, toggled = (fun on -> dispatch (TimerToggled on.Value)), horizontalOptions = LayoutOptions.Center)
View.Slider(minimum = 0.0, maximum = 10.0, value = double model.Step, valueChanged = (fun args -> dispatch (SetStep (int (args.NewValue + 0.5)))), horizontalOptions = LayoutOptions.Center)
View.Label(text = sprintf "Step size: %d" model.Step, horizontalOptions = LayoutOptions.Center)
View.Button(text = "Reset", horizontalOptions = LayoutOptions.Center, command = (fun () -> dispatch Reset), canExecute = (model <> initModel))
]))
@ -73,34 +73,35 @@ type App () as app =
//-:cnd:noEmit
#if DEBUG
// Uncomment this line to enable live update in debug mode. See https://fsprojects.github.io/Elmish.XamarinForms/tools.html
// for further setup instructions.
// Uncomment this line to enable live update in debug mode.
// See https://fsprojects.github.io/Elmish.XamarinForms/tools.html for further instructions.
//
//do runner.EnableLiveUpdate()
#endif
//+:cnd:noEmit
// Uncomment this code to save the application state to app.Properties using Newtonsoft.Json
// See https://fsprojects.github.io/Elmish.XamarinForms/models.html for further instructions.
//-:cnd:noEmit
#if APPSAVE
let modelId = "model"
override __.OnSleep() =
let json = Newtonsoft.Json.JsonConvert.SerializeObject(runner.CurrentModel)
Debug.WriteLine("OnSleep: saving model into app.Properties, json = {0}", json)
Console.WriteLine("OnSleep: saving model into app.Properties, json = {0}", json)
app.Properties.[modelId] <- json
override __.OnResume() =
Debug.WriteLine "OnResume: checking for model in app.Properties"
Console.WriteLine "OnResume: checking for model in app.Properties"
try
match app.Properties.TryGetValue modelId with
| true, (:? string as json) ->
Debug.WriteLine("OnResume: restoring model from app.Properties, json = {0}", json)
Console.WriteLine("OnResume: restoring model from app.Properties, json = {0}", json)
let model = Newtonsoft.Json.JsonConvert.DeserializeObject<App.Model>(json)
Debug.WriteLine("OnResume: restoring model from app.Properties, model = {0}", (sprintf "%0A" model))
Console.WriteLine("OnResume: restoring model from app.Properties, model = {0}", (sprintf "%0A" model))
runner.SetCurrentModel (model, Cmd.none)
| _ -> ()
@ -108,7 +109,7 @@ type App () as app =
App.program.onError("Error while restoring model found in app.Properties", ex)
override this.OnStart() =
Debug.WriteLine "OnStart: using same logic as OnResume()"
Console.WriteLine "OnStart: using same logic as OnResume()"
this.OnResume()
#endif
//+:cnd:noEmit