fix interpreter and XF update for template
This commit is contained in:
Родитель
8cbc01c4f3
Коммит
50d2e68773
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче