Merge branch 'xamarin-oidcclient' into bff
# Conflicts: # .dockerignore # docker-compose.override.yml # docker-compose.yml # eShopOnContainers-ServicesAndWebApps.sln # k8s/deploy.ps1 # k8s/deployments.yaml # k8s/frontend.yaml # src/Services/Identity/Identity.API/Data/ConfigurationDbContextSeed.cs # src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/Order.cs
@ -30,4 +30,5 @@ cli-linux
|
||||
**/bower_components/
|
||||
**/wwwroot/lib/
|
||||
global.json
|
||||
**/appsettings.localhost.json
|
||||
**/appsettings.localhost.json
|
||||
src/Web/WebSPA/wwwroot/
|
1
.gitignore
vendored
@ -260,3 +260,4 @@ pub/
|
||||
/src/Web/WebMVC/wwwroot/lib
|
||||
/src/Web/WebMVC/wwwroot/css/site.min.css
|
||||
**/.kube/**
|
||||
.mfractor
|
||||
|
@ -66,7 +66,7 @@ You can download them and start reviewing these Guides/eBooks here:
|
||||
| <a href='https://aka.ms/microservicesebook'><img src="img/ebook_arch_dev_microservices_containers_cover.png"> </a> | <a href='https://aka.ms/dockerlifecycleebook'> <img src="img/ebook_containers_lifecycle.png"> </a> | <a href='https://aka.ms/xamarinpatternsebook'> <img src="img/xamarin-enterprise-patterns-ebook-cover-small.png"> </a> |
|
||||
| <sup> <a href='https://aka.ms/microservicesebook'>**Download .PDF** (2nd Edition)</a> </sup> | <sup> <a href='https://aka.ms/dockerlifecycleebook'>**Download** </a> </sup> | <sup> <a href='https://aka.ms/xamarinpatternsebook'>**Download** </a> </sup> |
|
||||
|
||||
Download in other formats (**eReaders** like **MOBI**, **EPUB**) and other eBooks at the [.NET Architecture center](dot.net/architecture).
|
||||
Download in other formats (**eReaders** like **MOBI**, **EPUB**) and other eBooks at the [.NET Architecture center](http://dot.net/architecture).
|
||||
|
||||
Send feedback to [dotnet-architecture-ebooks-feedback@service.microsoft.com](dotnet-architecture-ebooks-feedback@service.microsoft.com)
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Parameters>
|
||||
<Parameter Name="OrderingBackground_InstanceCount" DefaultValue="-1" />
|
||||
<Parameter Name="MarketingApi_InstanceCount" DefaultValue="-1" />
|
||||
<Parameter Name="LocationsApi_InstanceCount" DefaultValue="-1" />
|
||||
<Parameter Name="PaymentApi_InstanceCount" DefaultValue="-1" />
|
||||
@ -19,6 +20,18 @@
|
||||
<!-- Import the ServiceManifest from the ServicePackage. The ServiceManifestName and ServiceManifestVersion
|
||||
should match the Name and Version attributes of the ServiceManifest element defined in the
|
||||
ServiceManifest.xml file. -->
|
||||
<ServiceManifestImport>
|
||||
<ServiceManifestRef ServiceManifestName="OrderingBackgroundPkg" ServiceManifestVersion="1.0.0" />
|
||||
<ConfigOverrides />
|
||||
<EnvironmentOverrides CodePackageRef="Code">
|
||||
<EnvironmentVariable Name="ApplicationInsights__InstrumentationKey" Value="[InstrumentationKey]"/>
|
||||
</EnvironmentOverrides>
|
||||
<Policies>
|
||||
<ContainerHostPolicies CodePackageRef="Code">
|
||||
<PortBinding ContainerPort="80" EndpointRef="OrderingBackgroundTypeEndpoint"/>
|
||||
</ContainerHostPolicies>
|
||||
</Policies>
|
||||
</ServiceManifestImport>
|
||||
|
||||
<ServiceManifestImport>
|
||||
<ServiceManifestRef ServiceManifestName="MarketingApiPkg" ServiceManifestVersion="1.0.0" />
|
||||
@ -99,6 +112,11 @@
|
||||
ServiceFabric PowerShell module.
|
||||
|
||||
The attribute ServiceTypeName below must match the name defined in the imported ServiceManifest.xml file. -->
|
||||
<Service Name="OrderingBackground" ServicePackageActivationMode="ExclusiveProcess">
|
||||
<StatelessService ServiceTypeName="OrderingBackgroundType" InstanceCount="[OrderingBackground_InstanceCount]">
|
||||
<SingletonPartition />
|
||||
</StatelessService>
|
||||
</Service>
|
||||
|
||||
<Service Name="MarketingApi" ServiceDnsName="marketingapi.eshoponservicefabric" ServicePackageActivationMode="ExclusiveProcess">
|
||||
<StatelessService ServiceTypeName="MarketingApiType" InstanceCount="[MarketingApi_InstanceCount]">
|
||||
|
@ -28,8 +28,6 @@
|
||||
<EnvironmentVariable Name="EventBusConnection" Value="rabbitmq.eshoponservicefabricbus"/>
|
||||
<EnvironmentVariable Name="AzureServiceBusEnabled" Value="False"/>
|
||||
<EnvironmentVariable Name="UseCustomizationData" Value="True"/>
|
||||
<EnvironmentVariable Name="GracePeriodTime" Value="1"/>
|
||||
<EnvironmentVariable Name="CheckUpdateTime" Value="30000"/>
|
||||
<EnvironmentVariable Name="ApplicationInsights__InstrumentationKey" Value=""/>
|
||||
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
|
||||
<EnvironmentVariable Name="UseLoadTest" Value="True"/>
|
||||
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Settings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
|
||||
<!-- Add your custom configuration sections and parameters here -->
|
||||
<!--
|
||||
<Section Name="MyConfigSection">
|
||||
<Parameter Name="MyParameter" Value="Value1" />
|
||||
</Section>
|
||||
-->
|
||||
</Settings>
|
@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ServiceManifest Name="OrderingBackgroundPkg"
|
||||
Version="1.0.0"
|
||||
xmlns="http://schemas.microsoft.com/2011/01/fabric"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<ServiceTypes>
|
||||
<!-- This is the name of your ServiceType.
|
||||
The UseImplicitHost attribute indicates this is a guest service. -->
|
||||
<StatelessServiceType ServiceTypeName="OrderingBackgroundType" UseImplicitHost="true" />
|
||||
</ServiceTypes>
|
||||
|
||||
<!-- Code package is your service executable. -->
|
||||
<CodePackage Name="Code" Version="1.0.0">
|
||||
<EntryPoint>
|
||||
<!-- Follow this link for more information about deploying Windows containers to Service Fabric: https://aka.ms/sfguestcontainers -->
|
||||
<ContainerHost>
|
||||
<ImageName>eshop/ordering.backgroundtasks</ImageName>
|
||||
</ContainerHost>
|
||||
</EntryPoint>
|
||||
<!-- Pass environment variables to your container: -->
|
||||
<EnvironmentVariables>
|
||||
<EnvironmentVariable Name="ASPNETCORE_ENVIRONMENT" Value="Development"/>
|
||||
<EnvironmentVariable Name="ASPNETCORE_URLS" Value="http://0.0.0.0:80"/>
|
||||
<EnvironmentVariable Name="ConnectionString" Value="Data Source=sqlserver.eshoponservicefabricsql,5433;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word"/>
|
||||
<EnvironmentVariable Name="EventBusConnection" Value="rabbitmq.eshoponservicefabricbus"/>
|
||||
<EnvironmentVariable Name="AzureServiceBusEnabled" Value="False"/>
|
||||
<EnvironmentVariable Name="GracePeriodTime" Value="1"/>
|
||||
<EnvironmentVariable Name="CheckUpdateTime" Value="30000"/>
|
||||
<EnvironmentVariable Name="ApplicationInsights__InstrumentationKey" Value=""/>
|
||||
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
|
||||
<EnvironmentVariable Name="UseLoadTest" Value="True"/>
|
||||
</EnvironmentVariables>
|
||||
</CodePackage>
|
||||
|
||||
<!-- Config package is the contents of the Config directoy under PackageRoot that contains an
|
||||
independently-updateable and versioned set of custom configuration settings for your service. -->
|
||||
<ConfigPackage Name="Config" Version="1.0.0" />
|
||||
|
||||
<Resources>
|
||||
<Endpoints>
|
||||
<!-- This endpoint is used by the communication listener to obtain the port on which to
|
||||
listen. Please note that if your service is partitioned, this port is shared with
|
||||
replicas of different partitions that are placed in your code. -->
|
||||
<Endpoint Name="OrderingBackgroundTypeEndpoint" Port="5111" UriScheme="http"/>
|
||||
</Endpoints>
|
||||
</Resources>
|
||||
</ServiceManifest>
|
@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Application Name="fabric:/eShopOnServiceFabric" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Parameters>
|
||||
<Parameter Name="OrderingBackground_InstanceCount" Value="-1" />
|
||||
<Parameter Name="MarketingApi_InstanceCount" Value="1" />
|
||||
<Parameter Name="LocationsApi_InstanceCount" Value="1" />
|
||||
<Parameter Name="PaymentApi_InstanceCount" Value="1" />
|
||||
|
@ -38,6 +38,8 @@
|
||||
<Content Include="ApplicationPackageRoot\MarketingApiPkg\ServiceManifest.xml" />
|
||||
<Content Include="ApplicationPackageRoot\OrderingApiPkg\Config\Settings.xml" />
|
||||
<Content Include="ApplicationPackageRoot\OrderingApiPkg\ServiceManifest.xml" />
|
||||
<Content Include="ApplicationPackageRoot\OrderingBackgroundPkg\Config\Settings.xml" />
|
||||
<Content Include="ApplicationPackageRoot\OrderingBackgroundPkg\ServiceManifest.xml" />
|
||||
<Content Include="ApplicationPackageRoot\PaymentApiPkg\Config\Settings.xml" />
|
||||
<Content Include="ApplicationPackageRoot\PaymentApiPkg\ServiceManifest.xml" />
|
||||
<Content Include="packages.config" />
|
||||
|
@ -5,6 +5,7 @@
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Parameters>
|
||||
<Parameter Name="OrderingBackground_InstanceCount" DefaultValue="-1" />
|
||||
<Parameter Name="MarketingApi_InstanceCount" DefaultValue="-1" />
|
||||
<Parameter Name="LocationsApi_InstanceCount" DefaultValue="-1" />
|
||||
<Parameter Name="PaymentApi_InstanceCount" DefaultValue="-1" />
|
||||
@ -19,6 +20,18 @@
|
||||
<!-- Import the ServiceManifest from the ServicePackage. The ServiceManifestName and ServiceManifestVersion
|
||||
should match the Name and Version attributes of the ServiceManifest element defined in the
|
||||
ServiceManifest.xml file. -->
|
||||
<ServiceManifestImport>
|
||||
<ServiceManifestRef ServiceManifestName="OrderingBackgroundPkg" ServiceManifestVersion="1.0.0" />
|
||||
<ConfigOverrides />
|
||||
<EnvironmentOverrides CodePackageRef="Code">
|
||||
<EnvironmentVariable Name="ApplicationInsights:InstrumentationKey" Value="[InstrumentationKey]"/>
|
||||
</EnvironmentOverrides>
|
||||
<Policies>
|
||||
<ContainerHostPolicies CodePackageRef="Code">
|
||||
<PortBinding ContainerPort="80" EndpointRef="OrderingBackgroundTasksTypeEndpoint"/>
|
||||
</ContainerHostPolicies>
|
||||
</Policies>
|
||||
</ServiceManifestImport>
|
||||
|
||||
<ServiceManifestImport>
|
||||
<ServiceManifestRef ServiceManifestName="MarketingApiPkg" ServiceManifestVersion="1.0.0" />
|
||||
@ -99,6 +112,11 @@
|
||||
ServiceFabric PowerShell module.
|
||||
|
||||
The attribute ServiceTypeName below must match the name defined in the imported ServiceManifest.xml file. -->
|
||||
<Service Name="OrderingBackground" ServicePackageActivationMode="ExclusiveProcess">
|
||||
<StatelessService ServiceTypeName="OrderingBackgroundType" InstanceCount="[OrderingBackground_InstanceCount]">
|
||||
<SingletonPartition />
|
||||
</StatelessService>
|
||||
</Service>
|
||||
|
||||
<Service Name="MarketingApi" ServiceDnsName="marketingapi.eshoponservicefabric" ServicePackageActivationMode="ExclusiveProcess">
|
||||
<StatelessService ServiceTypeName="MarketingApiType" InstanceCount="[MarketingApi_InstanceCount]">
|
||||
|
@ -28,8 +28,6 @@
|
||||
<EnvironmentVariable Name="EventBusConnection" Value="rabbitmq.eshoponservicefabricbus"/>
|
||||
<EnvironmentVariable Name="AzureServiceBusEnabled" Value="False"/>
|
||||
<EnvironmentVariable Name="UseCustomizationData" Value="True"/>
|
||||
<EnvironmentVariable Name="GracePeriodTime" Value="1"/>
|
||||
<EnvironmentVariable Name="CheckUpdateTime" Value="30000"/>
|
||||
<EnvironmentVariable Name="EventBusUserName" Value="admin"/>
|
||||
<EnvironmentVariable Name="EventBusPassword" Value="password"/>
|
||||
<EnvironmentVariable Name="ApplicationInsights:InstrumentationKey" Value=""/>
|
||||
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Settings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
|
||||
<!-- Add your custom configuration sections and parameters here -->
|
||||
<!--
|
||||
<Section Name="MyConfigSection">
|
||||
<Parameter Name="MyParameter" Value="Value1" />
|
||||
</Section>
|
||||
-->
|
||||
</Settings>
|
@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ServiceManifest Name="OrderingBackgroundPkg"
|
||||
Version="1.0.0"
|
||||
xmlns="http://schemas.microsoft.com/2011/01/fabric"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<ServiceTypes>
|
||||
<!-- This is the name of your ServiceType.
|
||||
The UseImplicitHost attribute indicates this is a guest service. -->
|
||||
<StatelessServiceType ServiceTypeName="OrderingBackgroundType" UseImplicitHost="true" />
|
||||
</ServiceTypes>
|
||||
|
||||
<!-- Code package is your service executable. -->
|
||||
<CodePackage Name="Code" Version="1.0.0">
|
||||
<EntryPoint>
|
||||
<!-- Follow this link for more information about deploying Windows containers to Service Fabric: https://aka.ms/sfguestcontainers -->
|
||||
<ContainerHost>
|
||||
<ImageName>eshop/ordering.backgroundtasks-win</ImageName>
|
||||
</ContainerHost>
|
||||
</EntryPoint>
|
||||
<!-- Pass environment variables to your container: -->
|
||||
<EnvironmentVariables>
|
||||
<EnvironmentVariable Name="ASPNETCORE_ENVIRONMENT" Value="Development"/>
|
||||
<EnvironmentVariable Name="ASPNETCORE_URLS" Value="http://0.0.0.0:80"/>
|
||||
<EnvironmentVariable Name="ConnectionString" Value="Data Source=sqlserver.eshoponservicefabricsql,5433;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word"/>
|
||||
<EnvironmentVariable Name="EventBusConnection" Value="rabbitmq.eshoponservicefabricbus"/>
|
||||
<EnvironmentVariable Name="AzureServiceBusEnabled" Value="False"/>
|
||||
<EnvironmentVariable Name="GracePeriodTime" Value="1"/>
|
||||
<EnvironmentVariable Name="CheckUpdateTime" Value="30000"/>
|
||||
<EnvironmentVariable Name="EventBusUserName" Value="admin"/>
|
||||
<EnvironmentVariable Name="EventBusPassword" Value="password"/>
|
||||
<EnvironmentVariable Name="ApplicationInsights:InstrumentationKey" Value=""/>
|
||||
<EnvironmentVariable Name="OrchestratorType" Value="SF"/>
|
||||
<EnvironmentVariable Name="UseLoadTest" Value="False"/>
|
||||
</EnvironmentVariables>
|
||||
</CodePackage>
|
||||
|
||||
<!-- Config package is the contents of the Config directoy under PackageRoot that contains an
|
||||
independently-updateable and versioned set of custom configuration settings for your service. -->
|
||||
<ConfigPackage Name="Config" Version="1.0.0" />
|
||||
|
||||
<Resources>
|
||||
<Endpoints>
|
||||
<!-- This endpoint is used by the communication listener to obtain the port on which to
|
||||
listen. Please note that if your service is partitioned, this port is shared with
|
||||
replicas of different partitions that are placed in your code. -->
|
||||
<Endpoint Name="OrderingBackgroundTasksTypeEndpoint" Port="5111" UriScheme="http" PathSuffix="eShopOnServiceFabric/OrderingBackgroundTasks"/>
|
||||
</Endpoints>
|
||||
</Resources>
|
||||
</ServiceManifest>
|
@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Application Name="fabric:/eShopOnServiceFabric" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Parameters>
|
||||
<Parameter Name="OrderingBackground_InstanceCount" Value="-1" />
|
||||
<Parameter Name="MarketingApi_InstanceCount" Value="1" />
|
||||
<Parameter Name="LocationsApi_InstanceCount" Value="1" />
|
||||
<Parameter Name="PaymentApi_InstanceCount" Value="1" />
|
||||
|
@ -38,6 +38,8 @@
|
||||
<Content Include="ApplicationPackageRoot\MarketingApiPkg\ServiceManifest.xml" />
|
||||
<Content Include="ApplicationPackageRoot\OrderingApiPkg\Config\Settings.xml" />
|
||||
<Content Include="ApplicationPackageRoot\OrderingApiPkg\ServiceManifest.xml" />
|
||||
<Content Include="ApplicationPackageRoot\OrderingBackgroundPkg\Config\Settings.xml" />
|
||||
<Content Include="ApplicationPackageRoot\OrderingBackgroundPkg\ServiceManifest.xml" />
|
||||
<Content Include="ApplicationPackageRoot\PaymentApiPkg\Config\Settings.xml" />
|
||||
<Content Include="ApplicationPackageRoot\PaymentApiPkg\ServiceManifest.xml" />
|
||||
<Content Include="packages.config" />
|
||||
|
13
ServiceFabric/Windows/sfwin.sln
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27323.2
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Global
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {04B6E659-060F-4550-A5CA-70B9E9D8F010}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -2,6 +2,9 @@
|
||||
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"prefix": {
|
||||
"type": "string"
|
||||
},
|
||||
"clusterLocation": {
|
||||
"type": "string",
|
||||
"metadata": {
|
||||
@ -233,13 +236,16 @@
|
||||
"publicIPApiVersion": "2015-06-15",
|
||||
"vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]",
|
||||
"subnet0Ref": "[concat(variables('vnetID'),'/subnets/',parameters('subnet0Name'))]",
|
||||
"lbID0": "[resourceId('Microsoft.Network/loadBalancers', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]",
|
||||
"lbID0": "[resourceId('Microsoft.Network/loadBalancers', concat('LB','-', variables('clusterName'),'-',parameters('vmNodeType0Name')))]",
|
||||
"lbIPConfig0": "[concat(variables('lbID0'),'/frontendIPConfigurations/LoadBalancerIPConfig')]",
|
||||
"lbPoolID0": "[concat(variables('lbID0'),'/backendAddressPools/LoadBalancerBEAddressPool')]",
|
||||
"lbProbeID0": "[concat(variables('lbID0'),'/probes/FabricGatewayProbe')]",
|
||||
"lbHttpProbeID0": "[concat(variables('lbID0'),'/probes/FabricHttpGatewayProbe')]",
|
||||
"lbNatPoolID0": "[concat(variables('lbID0'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]",
|
||||
"vmStorageAccountName0": "[toLower(concat(uniqueString(resourceGroup().id), '1', '0' ))]",
|
||||
"supportLogStorageAccountName": "[take(concat(parameters('prefix'), parameters('supportLogStorageAccountName')),22)]",
|
||||
"applicationDiagnosticsStorageAccountName" : "[take(concat(parameters('prefix'), parameters('applicationDiagnosticsStorageAccountName')),22)]",
|
||||
"clusterName": "[concat(parameters('prefix'), parameters('clusterName'))]",
|
||||
"uniqueStringArray0": [
|
||||
"[concat(variables('vmStorageAccountName0'), '0')]",
|
||||
"[concat(variables('vmStorageAccountName0'), '1')]",
|
||||
@ -252,7 +258,7 @@
|
||||
{
|
||||
"apiVersion": "[variables('storageApiVersion')]",
|
||||
"type": "Microsoft.Storage/storageAccounts",
|
||||
"name": "[parameters('supportLogStorageAccountName')]",
|
||||
"name": "[variables('supportLogStorageAccountName')]",
|
||||
"location": "[parameters('computeLocation')]",
|
||||
"dependsOn": [],
|
||||
"properties": {},
|
||||
@ -262,13 +268,13 @@
|
||||
},
|
||||
"tags": {
|
||||
"resourceType": "Service Fabric",
|
||||
"clusterName": "[parameters('clusterName')]"
|
||||
"clusterName": "[variables('clusterName')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"apiVersion": "[variables('storageApiVersion')]",
|
||||
"type": "Microsoft.Storage/storageAccounts",
|
||||
"name": "[parameters('applicationDiagnosticsStorageAccountName')]",
|
||||
"name": "[variables('applicationDiagnosticsStorageAccountName')]",
|
||||
"location": "[parameters('computeLocation')]",
|
||||
"dependsOn": [],
|
||||
"properties": {},
|
||||
@ -278,7 +284,7 @@
|
||||
},
|
||||
"tags": {
|
||||
"resourceType": "Service Fabric",
|
||||
"clusterName": "[parameters('clusterName')]"
|
||||
"clusterName": "[variables('clusterName')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -304,7 +310,7 @@
|
||||
},
|
||||
"tags": {
|
||||
"resourceType": "Service Fabric",
|
||||
"clusterName": "[parameters('clusterName')]"
|
||||
"clusterName": "[variables('clusterName')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -320,13 +326,13 @@
|
||||
},
|
||||
"tags": {
|
||||
"resourceType": "Service Fabric",
|
||||
"clusterName": "[parameters('clusterName')]"
|
||||
"clusterName": "[variables('clusterName')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"apiVersion": "[variables('lbApiVersion')]",
|
||||
"type": "Microsoft.Network/loadBalancers",
|
||||
"name": "[concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name'))]",
|
||||
"name": "[concat('LB','-', variables('clusterName'),'-',parameters('vmNodeType0Name'))]",
|
||||
"location": "[parameters('computeLocation')]",
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.Network/publicIPAddresses/',concat(parameters('lbIPName'),'-','0'))]"
|
||||
@ -600,7 +606,7 @@
|
||||
},
|
||||
"tags": {
|
||||
"resourceType": "Service Fabric",
|
||||
"clusterName": "[parameters('clusterName')]"
|
||||
"clusterName": "[variables('clusterName')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -620,7 +626,7 @@
|
||||
},
|
||||
"tags": {
|
||||
"resourceType": "Service Fabric",
|
||||
"clusterName": "[parameters('clusterName')]"
|
||||
"clusterName": "[variables('clusterName')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -635,9 +641,9 @@
|
||||
"[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[2])]",
|
||||
"[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[3])]",
|
||||
"[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[4])]",
|
||||
"[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]",
|
||||
"[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]",
|
||||
"[concat('Microsoft.Storage/storageAccounts/', parameters('applicationDiagnosticsStorageAccountName'))]"
|
||||
"[concat('Microsoft.Network/loadBalancers/', concat('LB','-', variables('clusterName'),'-',parameters('vmNodeType0Name')))]",
|
||||
"[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]",
|
||||
"[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]"
|
||||
],
|
||||
"properties": {
|
||||
"overprovision": "[parameters('overProvision')]",
|
||||
@ -653,12 +659,12 @@
|
||||
"type": "ServiceFabricNode",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"protectedSettings": {
|
||||
"StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
|
||||
"StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key2]"
|
||||
"StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
|
||||
"StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key2]"
|
||||
},
|
||||
"publisher": "Microsoft.Azure.ServiceFabric",
|
||||
"settings": {
|
||||
"clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
|
||||
"clusterEndpoint": "[reference(variables('clusterName')).clusterEndpoint]",
|
||||
"nodeTypeRef": "[parameters('vmNodeType0Name')]",
|
||||
"dataPath": "D:\\\\SvcFab",
|
||||
"durabilityLevel": "Bronze",
|
||||
@ -674,8 +680,8 @@
|
||||
"type": "IaaSDiagnostics",
|
||||
"autoUpgradeMinorVersion": true,
|
||||
"protectedSettings": {
|
||||
"storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
|
||||
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
|
||||
"storageAccountName": "[variables('applicationDiagnosticsStorageAccountName')]",
|
||||
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
|
||||
"storageAccountEndPoint": "https://core.windows.net/"
|
||||
},
|
||||
"publisher": "Microsoft.Azure.Diagnostics",
|
||||
@ -715,7 +721,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
|
||||
"StorageAccount": "[variables('applicationDiagnosticsStorageAccountName')]"
|
||||
},
|
||||
"typeHandlerVersion": "1.5"
|
||||
}
|
||||
@ -786,16 +792,16 @@
|
||||
},
|
||||
"tags": {
|
||||
"resourceType": "Service Fabric",
|
||||
"clusterName": "[parameters('clusterName')]"
|
||||
"clusterName": "[variables('clusterName')]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"apiVersion": "2017-07-01-preview",
|
||||
"type": "Microsoft.ServiceFabric/clusters",
|
||||
"name": "[parameters('clusterName')]",
|
||||
"name": "[variables('clusterName')]",
|
||||
"location": "[parameters('clusterLocation')]",
|
||||
"dependsOn": [
|
||||
"[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]"
|
||||
"[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]"
|
||||
],
|
||||
"properties": {
|
||||
"addonFeatures": [
|
||||
@ -803,14 +809,14 @@
|
||||
],
|
||||
"clientCertificateCommonNames": [],
|
||||
"clientCertificateThumbprints": [],
|
||||
"clusterCodeVersion": "5.7.207.9494",
|
||||
"clusterCodeVersion": "6.0.232.9494",
|
||||
"clusterState": "Default",
|
||||
"diagnosticsStorageAccountConfig": {
|
||||
"blobEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.blob]",
|
||||
"blobEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.blob]",
|
||||
"protectedAccountKeyName": "StorageAccountKey1",
|
||||
"queueEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.queue]",
|
||||
"storageAccountName": "[parameters('supportLogStorageAccountName')]",
|
||||
"tableEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.table]"
|
||||
"queueEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.queue]",
|
||||
"storageAccountName": "[variables('supportLogStorageAccountName')]",
|
||||
"tableEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.table]"
|
||||
},
|
||||
"fabricSettings": [],
|
||||
"managementEndpoint": "[concat('http://',reference(concat(parameters('lbIPName'),'-','0')).dnsSettings.fqdn,':',parameters('nt0fabricHttpGatewayPort'))]",
|
||||
@ -840,13 +846,13 @@
|
||||
},
|
||||
"tags": {
|
||||
"resourceType": "Service Fabric",
|
||||
"clusterName": "[parameters('clusterName')]"
|
||||
"clusterName": "[variables('clusterName')]"
|
||||
}
|
||||
}
|
||||
],
|
||||
"outputs": {
|
||||
"clusterProperties": {
|
||||
"value": "[reference(parameters('clusterName'))]",
|
||||
"value": "[reference(variables('clusterName'))]",
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
|
@ -2,8 +2,11 @@
|
||||
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"prefix": {
|
||||
"value": "qa"
|
||||
},
|
||||
"clusterName": {
|
||||
"value": "qa-eshop-sfwin-cluster"
|
||||
"value": "-eshop-sfwin-cluster"
|
||||
},
|
||||
"clusterLocation": {
|
||||
"value": "westus"
|
||||
@ -12,10 +15,10 @@
|
||||
"value": "westus"
|
||||
},
|
||||
"adminUserName": {
|
||||
"value": "eshop"
|
||||
"value": "testedu"
|
||||
},
|
||||
"adminPassword": {
|
||||
"value": "Your_complex_Pass@word1"
|
||||
"value": "testedu1234!"
|
||||
},
|
||||
"nicName": {
|
||||
"value": "NIC-eshopsfwin"
|
||||
@ -24,7 +27,7 @@
|
||||
"value": "eshopsfwin-PubIP"
|
||||
},
|
||||
"dnsName": {
|
||||
"value": "qa-eshop-sfwin-cluster"
|
||||
"value": "testedu-eshop-sfwin-cluster"
|
||||
},
|
||||
"virtualNetworkName": {
|
||||
"value": "VNet-eshopsfwin"
|
||||
@ -36,10 +39,10 @@
|
||||
"value": "LBIP-eshopsfwin"
|
||||
},
|
||||
"applicationDiagnosticsStorageAccountName": {
|
||||
"value": "sfdgqaeshopsfwin"
|
||||
"value": "sfdiageshopw"
|
||||
},
|
||||
"supportLogStorageAccountName": {
|
||||
"value": "sflogsqaeshopsfwin"
|
||||
"value": "sflogeshopw"
|
||||
},
|
||||
"vmImageSku": {
|
||||
"value": "2016-Datacenter-with-Containers"
|
||||
|
@ -24,7 +24,7 @@ Once parameter file is edited you can deploy it using [create-resources script](
|
||||
i. e. if you are in windows, to deploy a Storage Account in a new resourcegroup located in westus, go to `deploy\az` folder and type:
|
||||
|
||||
```
|
||||
create-resources.cmd catalog\deploystorage newResourceGroup -c westus
|
||||
create-resources.cmd storage\catalog\deploystorage newResourceGroup -c westus
|
||||
```
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: '3.4'
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
sql.data:
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: '3.4'
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
sql.data:
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: '3.4'
|
||||
version: '3.3'
|
||||
|
||||
# The Production docker-compose file has to have the external/real IPs or DNS names for the services
|
||||
# The ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP environment variable is taken, by default, from the ".env" file defined like:
|
||||
@ -68,6 +68,17 @@ services:
|
||||
- AzureServiceBusEnabled=False
|
||||
ports:
|
||||
- "5102:80"
|
||||
|
||||
ordering.backgroundtasks:
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Production
|
||||
- ASPNETCORE_URLS=http://0.0.0.0:80
|
||||
- ConnectionString=${ESHOP_AZURE_ORDERING_DB:-Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word}
|
||||
- EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq}
|
||||
- UseCustomizationData=True
|
||||
- AzureServiceBusEnabled=False
|
||||
ports:
|
||||
- "5111:80"
|
||||
|
||||
webspa:
|
||||
environment:
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: '3.4'
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
basket.api:
|
||||
@ -37,6 +37,15 @@ services:
|
||||
- sql.data
|
||||
- rabbitmq
|
||||
|
||||
ordering.backgroundtasks:
|
||||
image: eshop/ordering.backgroundtasks-win:${TAG:-latest}
|
||||
build:
|
||||
context: .
|
||||
dockerfile: src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile
|
||||
depends_on:
|
||||
- sql.data
|
||||
- rabbitmq
|
||||
|
||||
marketing.api:
|
||||
image: eshop/marketing.api-win:${TAG:-latest}
|
||||
build:
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: '3.4'
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
ci-build:
|
||||
@ -8,6 +8,7 @@ services:
|
||||
- ./cli-linux:/cli-linux
|
||||
working_dir: /src
|
||||
|
||||
|
||||
# Next line is using the .sln file to compile all the projects.
|
||||
# Sometime there is an issue in msbuild exits the process before finishing building the bits: (https://github.com/Microsoft/msbuild/issues/2153)
|
||||
# Random error: error MSB4017: The build stopped unexpectedly be cause of an unexpected logger failure.
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: '3.4'
|
||||
version: '3.3'
|
||||
|
||||
services:
|
||||
basket.api:
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: '3.4'
|
||||
version: '3.3'
|
||||
|
||||
# ONLY NEEDED WHEN RUNNING WINDOWS CONTAINERS
|
||||
#
|
||||
@ -37,7 +37,12 @@ services:
|
||||
- EventBusUserName=admin
|
||||
- EventBusPassword=password
|
||||
|
||||
marketing.api:
|
||||
ordering.api:
|
||||
environment:
|
||||
- EventBusUserName=admin
|
||||
- EventBusPassword=password
|
||||
|
||||
ordering.backgroundtasks:
|
||||
environment:
|
||||
- EventBusUserName=admin
|
||||
- EventBusPassword=password
|
||||
|
@ -1,4 +1,4 @@
|
||||
version: '3.4'
|
||||
version: '3.3'
|
||||
|
||||
# The Production docker-compose file has to have the external/real IPs or DNS names for the services
|
||||
# The ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP environment variable is taken, by default, from the ".env" file defined like:
|
||||
@ -92,6 +92,24 @@ services:
|
||||
ports:
|
||||
- "5102:80"
|
||||
|
||||
ordering.backgroundtasks:
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Development
|
||||
- ASPNETCORE_URLS=http://0.0.0.0:80
|
||||
- ConnectionString=${ESHOP_AZURE_ORDERING_DB:-Server=sql.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word}
|
||||
- EventBusConnection=${ESHOP_AZURE_SERVICE_BUS:-rabbitmq}
|
||||
- EventBusUserName=${ESHOP_SERVICE_BUS_USERNAME}
|
||||
- EventBusPassword=${ESHOP_SERVICE_BUS_PASSWORD}
|
||||
- UseCustomizationData=True
|
||||
- AzureServiceBusEnabled=False
|
||||
- CheckUpdateTime=30000
|
||||
- GracePeriodTime=1
|
||||
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
|
||||
- OrchestratorType=${ORCHESTRATOR_TYPE}
|
||||
- UseLoadTest=${USE_LOADTEST:-False}
|
||||
ports:
|
||||
- "5111:80"
|
||||
|
||||
marketing.api:
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Development
|
||||
|
204
eShopOnContainers-MobileApps.sln
Executable file → Normal file
@ -16,8 +16,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A857AD10-40FF-4303-BEC2-FF1C58D5735E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "src\Mobile\eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.iOS\eShopOnContainers.iOS.csproj", "{6EEB23DC-7063-4444-9AF8-90DF24F549C0}"
|
||||
@ -30,14 +28,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{9CC7
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{B7B1D395-4E06-4036-BE86-C216756B9367}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "src\Mobile\eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{6E4285E7-7611-4440-A1B5-3513EBB13807}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Droid\eShopOnContainers.TestRunner.Droid.csproj", "{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.iOS", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.iOS\eShopOnContainers.TestRunner.iOS.csproj", "{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Windows", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Windows\eShopOnContainers.TestRunner.Windows.csproj", "{A7337243-33B8-463A-87AD-944B75EFD820}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "src\Mobile\eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{FDD910BC-DF0F-483D-B7D5-C7D831855172}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "src\Mobile\eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
@ -66,54 +66,6 @@ Global
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|x64.Build.0 = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}.Release|x86.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
|
||||
@ -283,54 +235,6 @@ Global
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Deploy.0 = Release|x86
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|x64.Build.0 = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807}.Release|x86.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
|
||||
@ -500,23 +404,119 @@ Global
|
||||
{A7337243-33B8-463A-87AD-944B75EFD820}.Release|x86.ActiveCfg = Release|x86
|
||||
{A7337243-33B8-463A-87AD-944B75EFD820}.Release|x86.Build.0 = Release|x86
|
||||
{A7337243-33B8-463A-87AD-944B75EFD820}.Release|x86.Deploy.0 = Release|x86
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|x64.Build.0 = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172}.Release|x86.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|x64.Build.0 = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{F61357CE-1CC2-410E-8776-B16EEBC98EB8} = {932D8224-11F6-4D07-B109-DA28AD288A63}
|
||||
{BA96A12C-4EE3-46C4-BB3F-F811B554CD01} = {778289CA-31F7-4464-8C2A-612EE846F8A7}
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24} = {9CC7814B-72A6-465B-A61C-57B512DEE303}
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0} = {9CC7814B-72A6-465B-A61C-57B512DEE303}
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B} = {9CC7814B-72A6-465B-A61C-57B512DEE303}
|
||||
{778289CA-31F7-4464-8C2A-612EE846F8A7} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8}
|
||||
{9CC7814B-72A6-465B-A61C-57B512DEE303} = {F61357CE-1CC2-410E-8776-B16EEBC98EB8}
|
||||
{B7B1D395-4E06-4036-BE86-C216756B9367} = {A857AD10-40FF-4303-BEC2-FF1C58D5735E}
|
||||
{6E4285E7-7611-4440-A1B5-3513EBB13807} = {B7B1D395-4E06-4036-BE86-C216756B9367}
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1} = {B7B1D395-4E06-4036-BE86-C216756B9367}
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3} = {B7B1D395-4E06-4036-BE86-C216756B9367}
|
||||
{A7337243-33B8-463A-87AD-944B75EFD820} = {B7B1D395-4E06-4036-BE86-C216756B9367}
|
||||
{FDD910BC-DF0F-483D-B7D5-C7D831855172} = {B7B1D395-4E06-4036-BE86-C216756B9367}
|
||||
{76C5F2A7-6CD5-49EA-9F33-EC44DE6539C7} = {778289CA-31F7-4464-8C2A-612EE846F8A7}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {8A9E878A-C296-4615-97AB-7A4505148872}
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27130.2010
|
||||
VisualStudioVersion = 15.0.27130.2024
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{FEA0C318-FFED-4D39-8781-265718CA43DD}"
|
||||
EndProject
|
||||
@ -103,7 +103,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{2BB81612-8D04-49CD-B17F-38DAB176E583}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "src\Mobile\eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "eShopOnContainers.Core", "src\Mobile\eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{BA96A12C-4EE3-46C4-BB3F-F811B554CD01}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}"
|
||||
EndProject
|
||||
@ -113,7 +113,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Windows",
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile Apps", "Mobile Apps", "{0AAED9FF-3260-43BB-B586-9AAF1E010A90}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "src\Mobile\eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{6E4285E7-7611-4440-A1B5-3513EBB13807}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "eShopOnContainers.UnitTests", "src\Mobile\eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{6E4285E7-7611-4440-A1B5-3513EBB13807}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Droid", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Droid\eShopOnContainers.TestRunner.Droid.csproj", "{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}"
|
||||
EndProject
|
||||
@ -121,6 +121,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunne
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Windows", "src\Mobile\eShopOnContainers\eShopOnContainers.TestRunner.Windows\eShopOnContainers.TestRunner.Windows.csproj", "{A7337243-33B8-463A-87AD-944B75EFD820}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ordering.BackgroundTasks", "src\Services\Ordering\Ordering.BackgroundTasks\Ordering.BackgroundTasks.csproj", "{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
@ -1759,6 +1761,54 @@ Global
|
||||
{A7337243-33B8-463A-87AD-944B75EFD820}.Release|x86.ActiveCfg = Release|x86
|
||||
{A7337243-33B8-463A-87AD-944B75EFD820}.Release|x86.Build.0 = Release|x86
|
||||
{A7337243-33B8-463A-87AD-944B75EFD820}.Release|x86.Deploy.0 = Release|x86
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|Any CPU.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|ARM.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|ARM.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|iPhone.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|x64.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|x64.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|x86.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.AppStore|x86.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|x64.Build.0 = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@ -1817,6 +1867,7 @@ Global
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1} = {0AAED9FF-3260-43BB-B586-9AAF1E010A90}
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3} = {0AAED9FF-3260-43BB-B586-9AAF1E010A90}
|
||||
{A7337243-33B8-463A-87AD-944B75EFD820} = {0AAED9FF-3260-43BB-B586-9AAF1E010A90}
|
||||
{16CDE5D2-2DDE-4AF2-B902-AD9CC42DE480} = {0BD0DB92-2D98-44D9-9AC0-C59186D59B0B}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9}
|
||||
|
@ -15,7 +15,7 @@ or using AKS instead of ACS
|
||||
>```
|
||||
* An `Azure Blob storage`. It is needed for storing the kubernetes config file used by the hosted agent to access to Kubernetes cluster. Example:
|
||||
|
||||
<img src="./img/k8s/blob_creation.png">
|
||||
<img src="./img/blob_creation.png">
|
||||
|
||||
* Upload the `kubernetes config file` to the blob storage previously created. Execute the following command which will download the config file into the directory `c:\Users\<User>\.kube\` and then, upload it to your blob storage:
|
||||
|
||||
@ -37,7 +37,7 @@ or using AKS instead of ACS
|
||||
>```
|
||||
>https://eshopk8s.blob.core.windows.net/k8s-config/config
|
||||
>```
|
||||
<img src="./img/k8s/get_kubectlconfig_task.png">
|
||||
<img src="./img/get_kubectlconfig_task.png">
|
||||
|
||||
3. Create a powershell task to execute the k8s deployment script. For example:
|
||||
|
||||
@ -63,4 +63,4 @@ or using AKS instead of ACS
|
||||
|
||||
You can use additional parameters (i.e. pass registry and user/password to use custom registry instead of DockerHub. Plase, refer to [README.k8s.md](./README.k8s.md) for more info.
|
||||
|
||||
<img src="./img/k8s/deploy_script_task.png">
|
||||
<img src="./img/deploy_script_task.png">
|
||||
|
@ -33,18 +33,18 @@ or using AKS instead of ACS
|
||||
Once the user and password are retrieved, run the following script for deployment. For example:
|
||||
|
||||
>```
|
||||
>./deploy.ps1 -registry myregistry.azurecr.io -dockerUser User -dockerPassword SecretPassword -configFile file_with_config.json
|
||||
>./deploy.ps1 -registry myregistry.azurecr.io -dockerUser User -dockerPassword SecretPassword -configFile file_with_config.yaml
|
||||
>```
|
||||
|
||||
The parameter `configFile` is important (and mandatory) because it contains the configuration used for the Pods in Kubernetes. This allow deploying Pods that use your own resources in Azure or any other cloud provider. A configuration file `local.json` is provided which configures Pods to use the infrastructure containers (that is sql server, rabbitmq, redis and mongodb must be deployed also in the k8s).
|
||||
The parameter `configFile` is important (and mandatory) because it contains the configuration used for the Pods in Kubernetes. This allow deploying Pods that use your own resources in Azure or any other cloud provider. A configuration file `conf_local.yaml` is provided which configures Pods to use the infrastructure containers (that is sql server, rabbitmq, redis and mongodb must be deployed also in the k8s).
|
||||
|
||||
The script will build the code and corresponding Docker images, push the later to your registry, and deploy the application to your cluster. You can watch the deployment unfold from the Kubernetes web interface: run `kubectl proxy` and open a browser to [http://localhost:8001/ui](http://localhost:8001/ui)
|
||||
|
||||
### Pods configuration file
|
||||
|
||||
When deploying to k8s the script needs the `configFile` with the location of a JSON configuration file. This file contains the configuration of the pods. The file is a JSON file. For reference another configuration file (cloud.json) is provided but without valid values.
|
||||
When deploying to k8s the script needs the `configFile` parameter with the location of the YAML configuration file. This file contains the configuration of the pods. The file is a .YAML file. For reference another configuration file (conf_cloud.yaml) is provided but without valid values.
|
||||
|
||||
If you deploy the infrastructure containers use `local.json` as a value for `configFile` parameter. If you don't deploy the infrastructure containers use your own configuration file with the correct values.
|
||||
If you deploy the infrastructure containers use `conf_local.yaml` as a value for `configFile` parameter. If you don't deploy the infrastructure containers use your own configuration file with the correct values.
|
||||
|
||||
### Parameters of the deploy.ps1 script
|
||||
|
||||
|
212
k8s/deploy.sh
Executable file
@ -0,0 +1,212 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# http://redsymbol.net/articles/unofficial-bash-strict-mode/
|
||||
set -euo pipefail
|
||||
|
||||
# This script is comparable to the PowerShell script deploy.ps1 but to be used from a Mac bash environment.
|
||||
# There are, however, the following few differences/limitations:
|
||||
|
||||
# It assumes docker/container registry login was already performed
|
||||
# It assumes K8s was given access to the registry—does not create any K8s secrets
|
||||
# It does not support explicit kubectl config file (relies on kubectl config use-context to point kubectl at the right cluster/namespace)
|
||||
# It always deploys infrastructure bits (redis, SQL Server etc)
|
||||
# The script was tested only with Azure Container Registry (not Docker Hub, although it is expected to work with Docker Hub too)
|
||||
|
||||
# Feel free to submit a PR in order to improve it.
|
||||
|
||||
usage()
|
||||
{
|
||||
cat <<END
|
||||
deploy.sh: deploys eShopOnContainers application to Kubernetes cluster
|
||||
Parameters:
|
||||
-r | --registry <container registry>
|
||||
Specifies container registry (ACR) to use (required), e.g. myregistry.azurecr.io
|
||||
-t | --tag <docker image tag>
|
||||
Default: newly created, date-based timestamp, with 1-minute resolution
|
||||
-b | --build-solution
|
||||
Force solution build before deployment (default: false)
|
||||
--skip-image-build
|
||||
Do not build images (default is to build all images)
|
||||
--skip-image-push
|
||||
Do not upload images to the container registry (just run the Kubernetes deployment portion)
|
||||
Default is to push images to container registry
|
||||
-h | --help
|
||||
Displays this help text and exits the script
|
||||
|
||||
It is assumed that the Kubernetes AKS cluster has been granted access to ACR registry.
|
||||
For more info see
|
||||
https://docs.microsoft.com/en-us/azure/container-registry/container-registry-auth-aks
|
||||
|
||||
WARNING! THE SCRIPT WILL COMPLETELY DESTROY ALL DEPLOYMENTS AND SERVICES VISIBLE
|
||||
FROM THE CURRENT CONFIGURATION CONTEXT.
|
||||
It is recommended that you create a separate namespace and confguration context
|
||||
for the eShopOnContainers application, to isolate it from other applications on the cluster.
|
||||
For more information see https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
|
||||
You can use eshop-namespace.yaml file (in the same directory) to create the namespace.
|
||||
|
||||
END
|
||||
}
|
||||
|
||||
image_tag=$(date '+%Y%m%d%H%M')
|
||||
build_solution=''
|
||||
container_registry=''
|
||||
build_images='yes'
|
||||
push_images='yes'
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
-r | --registry )
|
||||
container_registry="$2"; shift 2 ;;
|
||||
-t | --tag )
|
||||
image_tag="$2"; shift 2 ;;
|
||||
-b | --build-solution )
|
||||
build_solution='yes'; shift ;;
|
||||
--skip-image-build )
|
||||
build_images=''; shift ;;
|
||||
--skip-image-push )
|
||||
push_images=''; shift ;;
|
||||
-h | --help )
|
||||
usage; exit 1 ;;
|
||||
*)
|
||||
echo "Unknown option $1"
|
||||
usage; exit 2 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ ! $container_registry ]]; then
|
||||
echo 'Container registry must be specified (e.g. myregistry.azurecr.io)'
|
||||
echo ''
|
||||
usage
|
||||
exit 3
|
||||
fi
|
||||
|
||||
if [[ $build_solution ]]; then
|
||||
echo "#################### Building eShopOnContainers solution ####################"
|
||||
dotnet publish -o obj/Docker/publish ../eShopOnContainers-ServicesAndWebApps.sln
|
||||
fi
|
||||
|
||||
export TAG=$image_tag
|
||||
|
||||
if [[ $build_images ]]; then
|
||||
echo "#################### Building eShopOnContainers Docker images ####################"
|
||||
docker-compose -p .. -f ../docker-compose.yml build
|
||||
|
||||
# Remove temporary images
|
||||
docker rmi $(docker images -qf "dangling=true")
|
||||
fi
|
||||
|
||||
if [[ $push_images ]]; then
|
||||
echo "#################### Pushing images to registry ####################"
|
||||
services=(basket.api catalog.api identity.api ordering.api marketing.api payment.api locations.api webmvc webspa webstatus)
|
||||
|
||||
for service in "${services[@]}"
|
||||
do
|
||||
echo "Pushing image for service $service..."
|
||||
docker tag "eshop/$service:$image_tag" "$container_registry/$service:$image_tag"
|
||||
docker push "$container_registry/$service:$image_tag"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "#################### Cleaning up old deployment ####################"
|
||||
kubectl delete deployments --all
|
||||
kubectl delete services --all
|
||||
kubectl delete configmap config-files || true
|
||||
kubectl delete configmap urls || true
|
||||
kubectl delete configmap externalcfg || true
|
||||
|
||||
echo "#################### Deploying infrastructure components ####################"
|
||||
kubectl create configmap config-files --from-file=nginx-conf=nginx.conf
|
||||
kubectl label configmap config-files app=eshop
|
||||
kubectl create -f sql-data.yaml -f basket-data.yaml -f keystore-data.yaml -f rabbitmq.yaml -f nosql-data.yaml
|
||||
|
||||
echo "#################### Creating application service definitions ####################"
|
||||
kubectl create -f services.yaml -f frontend.yaml
|
||||
|
||||
echo "#################### Waiting for Azure to provision external IP ####################"
|
||||
|
||||
ip_regex='([0-9]{1,3}\.){3}[0-9]{1,3}'
|
||||
while true; do
|
||||
printf "."
|
||||
frontendUrl=$(kubectl get svc frontend -o=jsonpath="{.status.loadBalancer.ingress[0].ip}")
|
||||
if [[ $frontendUrl =~ $ip_regex ]]; then
|
||||
break
|
||||
fi
|
||||
sleep 5s
|
||||
done
|
||||
|
||||
printf "\n"
|
||||
externalDns=$frontendUrl
|
||||
echo "Using $externalDns as the external DNS/IP of the K8s cluster"
|
||||
|
||||
echo "#################### Creating application configuration ####################"
|
||||
|
||||
# urls configmap
|
||||
kubectl create configmap urls \
|
||||
"--from-literal=BasketUrl=http://basket" \
|
||||
"--from-literal=BasketHealthCheckUrl=http://basket/hc" \
|
||||
"--from-literal=CatalogUrl=http://$externalDns/catalog-api" \
|
||||
"--from-literal=CatalogHealthCheckUrl=http://catalog/hc" \
|
||||
"--from-literal=PicBaseUrl=http://$externalDns/catalog-api/api/v1/catalog/items/[0]/pic/" \
|
||||
"--from-literal=Marketing_PicBaseUrl=http://$externalDns/marketing-api/api/v1/campaigns/[0]/pic/" \
|
||||
"--from-literal=IdentityUrl=http://$externalDns/identity" \
|
||||
"--from-literal=IdentityHealthCheckUrl=http://identity/hc" \
|
||||
"--from-literal=OrderingUrl=http://ordering" \
|
||||
"--from-literal=OrderingHealthCheckUrl=http://ordering/hc" \
|
||||
"--from-literal=MvcClientExternalUrl=http://$externalDns/webmvc" \
|
||||
"--from-literal=WebMvcHealthCheckUrl=http://webmvc/hc" \
|
||||
"--from-literal=MvcClientOrderingUrl=http://ordering" \
|
||||
"--from-literal=MvcClientCatalogUrl=http://catalog" \
|
||||
"--from-literal=MvcClientBasketUrl=http://basket" \
|
||||
"--from-literal=MvcClientMarketingUrl=http://marketing" \
|
||||
"--from-literal=MvcClientLocationsUrl=http://locations" \
|
||||
"--from-literal=MarketingHealthCheckUrl=http://marketing/hc" \
|
||||
"--from-literal=WebSpaHealthCheckUrl=http://webspa/hc" \
|
||||
"--from-literal=SpaClientMarketingExternalUrl=http://$externalDns/marketing-api" \
|
||||
"--from-literal=SpaClientOrderingExternalUrl=http://$externalDns/ordering-api" \
|
||||
"--from-literal=SpaClientCatalogExternalUrl=http://$externalDns/catalog-api" \
|
||||
"--from-literal=SpaClientBasketExternalUrl=http://$externalDns/basket-api" \
|
||||
"--from-literal=SpaClientIdentityExternalUrl=http://$externalDns/identity" \
|
||||
"--from-literal=SpaClientLocationsUrl=http://$externalDns/locations-api" \
|
||||
"--from-literal=LocationsHealthCheckUrl=http://locations/hc" \
|
||||
"--from-literal=SpaClientExternalUrl=http://$externalDns" \
|
||||
"--from-literal=LocationApiClient=http://$externalDns/locations-api" \
|
||||
"--from-literal=MarketingApiClient=http://$externalDns/marketing-api" \
|
||||
"--from-literal=BasketApiClient=http://$externalDns/basket-api" \
|
||||
"--from-literal=OrderingApiClient=http://$externalDns/ordering-api" \
|
||||
"--from-literal=PaymentHealthCheckUrl=http://payment/hc"
|
||||
|
||||
kubectl label configmap urls app=eshop
|
||||
|
||||
# externalcfg configmap -- points to local infrastructure components (rabbitmq, SQL Server etc)
|
||||
kubectl create -f conf_local.yml
|
||||
|
||||
# Create application pod deployments
|
||||
kubectl create -f deployments.yaml
|
||||
|
||||
echo "#################### Deploying application pods ####################"
|
||||
|
||||
# update deployments with the correct image (with tag and/or registry)
|
||||
kubectl set image deployments/basket "basket=$container_registry/basket.api:$image_tag"
|
||||
kubectl set image deployments/catalog "catalog=$container_registry/catalog.api:$image_tag"
|
||||
kubectl set image deployments/identity "identity=$container_registry/identity.api:$image_tag"
|
||||
kubectl set image deployments/ordering "ordering=$container_registry/ordering.api:$image_tag"
|
||||
kubectl set image deployments/marketing "marketing=$container_registry/marketing.api:$image_tag"
|
||||
kubectl set image deployments/locations "locations=$container_registry/locations.api:$image_tag"
|
||||
kubectl set image deployments/payment "payment=$container_registry/payment.api:$image_tag"
|
||||
kubectl set image deployments/webmvc "webmvc=$container_registry/webmvc:$image_tag"
|
||||
kubectl set image deployments/webstatus "webstatus=$container_registry/webstatus:$image_tag"
|
||||
kubectl set image deployments/webspa "webspa=$container_registry/webspa:$image_tag"
|
||||
|
||||
kubectl rollout resume deployments/basket
|
||||
kubectl rollout resume deployments/catalog
|
||||
kubectl rollout resume deployments/identity
|
||||
kubectl rollout resume deployments/ordering
|
||||
kubectl rollout resume deployments/marketing
|
||||
kubectl rollout resume deployments/locations
|
||||
kubectl rollout resume deployments/payment
|
||||
kubectl rollout resume deployments/webmvc
|
||||
kubectl rollout resume deployments/webstatus
|
||||
kubectl rollout resume deployments/webspa
|
||||
|
||||
echo "WebSPA is exposed at http://$externalDns, WebMVC at http://$externalDns/webmvc, WebStatus at http://$externalDns/webstatus"
|
||||
echo "eShopOnContainers deployment is DONE"
|
5
k8s/eshop-namespace.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: eshop
|
||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
@ -56,6 +56,20 @@ spec:
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app: eshop
|
||||
component: orderingbackground
|
||||
name: orderingbackground
|
||||
spec:
|
||||
ports:
|
||||
- port: 80
|
||||
selector:
|
||||
app: eshop
|
||||
component: orderingbackground
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app: eshop
|
||||
|
@ -2,10 +2,6 @@
|
||||
|
||||
In the root folder of the repo are all docker-compose files (`docker-compose*.yml`). Here is a list of all of them and what is their purpose:
|
||||
|
||||
## Container build
|
||||
|
||||
* `docker-compose.ci.build.yml`: This file is for starting the build container to build the project using a container that has all needed prerequisites. Refer to [corresponding wiki section](https://github.com/dotnet-architecture/eShopOnContainers/wiki/03.-Setting-the-eShopOnContainers-solution-up-in-a-Windows-CLI-environment-(dotnet-CLI,-Docker-CLI-and-VS-Code)#build-the-bits-through-the-build-container-image) for more information.
|
||||
|
||||
## Files needed to run eShopOnContainers locally
|
||||
|
||||
* `docker-compose.yml`: This file contains **the definition of all images needed for running eShopOnContainers**.
|
||||
@ -47,6 +43,17 @@ PicBaseUrl=${ESHOP_AZURE_STORAGE_CATALOG:-http://${ESHOP_PROD_EXTERNAL_DNS_NAME_
|
||||
|
||||
So, use `ESHOP_AZURE_STORAGE_CATALOG` if set, and if not use `http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5101/api/v1/catalog/items/[0]/pic/}`. Unfortunately seems that docker-compose do not substitute variables inside variables, so the value that `PicBaseUrl` gets if `ESHOP_AZURE_STORAGE_CATALOG` is not set is literally `http://${ESHOP_PROD_EXTERNAL_DNS_NAME_OR_IP}:5101/api/v1/catalog/items/[0]/pic/}` without any substitution.
|
||||
|
||||
## Build container (DEPRECATED)
|
||||
|
||||
NOTE that since we support Docker MULTI-STAGE builds (support in VS 2017 since December 2017), the build container is no loger needed in CI/CD pipelines as a similar process is done by Docker itself under the covers with the multi-stage builds.
|
||||
For more info on Docker Multi-Stage, read:
|
||||
|
||||
https://docs.docker.com/develop/develop-images/multistage-build/
|
||||
|
||||
https://blogs.msdn.microsoft.com/stevelasker/2017/09/11/net-and-multistage-dockerfiles/
|
||||
|
||||
* `docker-compose.ci.build.yml`: This file is for starting the build container to build the project using a container that has all needed prerequisites. Refer to [corresponding wiki section](https://github.com/dotnet-architecture/eShopOnContainers/wiki/03.-Setting-the-eShopOnContainers-solution-up-in-a-Windows-CLI-environment-(dotnet-CLI,-Docker-CLI-and-VS-Code)#build-the-bits-through-the-build-container-image) for more information.
|
||||
|
||||
**For more information** about docker-compose variable substitution read the [compose docs](https://docs.docker.com/compose/compose-file/#variable-substitution).
|
||||
|
||||
## Other files
|
||||
@ -76,4 +83,4 @@ These files were intended to provide a fast way to start only "infrastructure" c
|
||||
* `docker-compose-external.override.yml`
|
||||
* `docker-compose-external.yml`
|
||||
|
||||
If you want to start only certain containers use `docker-compose -f ... -f ... up container1 contaner2 containerN` as specified in [compose doc](https://docs.docker.com/compose/reference/up/)
|
||||
If you want to start only certain containers use `docker-compose -f ... -f ... up container1 contaner2 containerN` as specified in [compose doc](https://docs.docker.com/compose/reference/up/)
|
||||
|
@ -92,9 +92,13 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
|
||||
|
||||
policy.Execute(() =>
|
||||
{
|
||||
var properties = channel.CreateBasicProperties();
|
||||
properties.DeliveryMode = 2; // persistent
|
||||
|
||||
channel.BasicPublish(exchange: BROKER_NAME,
|
||||
routingKey: eventName,
|
||||
basicProperties: null,
|
||||
mandatory:true,
|
||||
basicProperties: properties,
|
||||
body: body);
|
||||
});
|
||||
}
|
||||
@ -184,6 +188,8 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ
|
||||
var message = Encoding.UTF8.GetString(ea.Body);
|
||||
|
||||
await ProcessEvent(eventName, message);
|
||||
|
||||
channel.BasicAck(ea.DeliveryTag,multiple:false);
|
||||
};
|
||||
|
||||
channel.BasicConsume(queue: _queueName,
|
||||
|
@ -46,8 +46,8 @@
|
||||
|
||||
var message = new Message
|
||||
{
|
||||
MessageId = new Guid().ToString(),
|
||||
Body = Encoding.UTF8.GetBytes(jsonMessage),
|
||||
MessageId = Guid.NewGuid().ToString(),
|
||||
Body = body,
|
||||
Label = eventName,
|
||||
};
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
<PackageReference Include="System.Threading.Tasks.Parallel" Version="4.3.0" />
|
||||
<PackageReference Include="System.Threading.Thread" Version="4.3.0" />
|
||||
<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.4.0" />
|
||||
<PackageReference Include="WindowsAzure.Storage" Version="8.6.0" />
|
||||
<PackageReference Include="WindowsAzure.Storage" Version="8.7.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -1,564 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "eShopOnContainers\eShopOnContainers.iOS\eShopOnContainers.iOS.csproj", "{6EEB23DC-7063-4444-9AF8-90DF24F549C0}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{65116D1C-145B-4693-ABDA-F0FB6F425191}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Windows", "eShopOnContainers\eShopOnContainers.Windows\eShopOnContainers.Windows.csproj", "{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code", "{65D002E7-E869-491C-ABA8-9650CEAF677A}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{8F848898-6B21-4905-AE2E-B3ABDEDA1963}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{71D6317D-AF0F-46FE-91DA-B0556911FC4B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UnitTests", "eShopOnContainers\eShopOnContainers.UnitTests\eShopOnContainers.UnitTests.csproj", "{F7B6A162-BC4D-4924-B16A-713F9B0344E7}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Droid", "eShopOnContainers\eShopOnContainers.TestRunner.Droid\eShopOnContainers.TestRunner.Droid.csproj", "{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.iOS", "eShopOnContainers\eShopOnContainers.TestRunner.iOS\eShopOnContainers.TestRunner.iOS.csproj", "{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.TestRunner.Windows", "eShopOnContainers\eShopOnContainers.TestRunner.Windows\eShopOnContainers.TestRunner.Windows.csproj", "{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.UITests", "eShopOnContainers\eShopOnContainers.UITests\eShopOnContainers.UITests.csproj", "{E3B18084-842C-4B80-8E4A-A7E588EC3137}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
Ad-Hoc|ARM = Ad-Hoc|ARM
|
||||
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
||||
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
||||
Ad-Hoc|x64 = Ad-Hoc|x64
|
||||
Ad-Hoc|x86 = Ad-Hoc|x86
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
AppStore|ARM = AppStore|ARM
|
||||
AppStore|iPhone = AppStore|iPhone
|
||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||
AppStore|x64 = AppStore|x64
|
||||
AppStore|x86 = AppStore|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.Deploy.0 = Release|Any CPU
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|ARM.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|x64.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|x86.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|Any CPU.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|Any CPU.Build.0 = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|ARM.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhone.Build.0 = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x64.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x86.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|Any CPU.ActiveCfg = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|Any CPU.Build.0 = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|ARM.ActiveCfg = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.ActiveCfg = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.Build.0 = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|x64.ActiveCfg = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|x86.ActiveCfg = Release|iPhone
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x64.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x86.Build.0 = Release|Any CPU
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.Build.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.ActiveCfg = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.Build.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.Deploy.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.ActiveCfg = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.Build.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.Deploy.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.ActiveCfg = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.Build.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.Deploy.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|Any CPU.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|Any CPU.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.ActiveCfg = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Build.0 = Debug|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Deploy.0 = Debug|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|Any CPU.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|Any CPU.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Build.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Deploy.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|iPhone.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|iPhoneSimulator.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.ActiveCfg = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.Build.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.Deploy.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Deploy.0 = Release|x86
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|x64.Build.0 = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7}.Release|x86.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|ARM.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhone.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x64.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.AppStore|x86.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|ARM.Deploy.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhone.Deploy.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x64.Deploy.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Debug|x86.Deploy.0 = Debug|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|ARM.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhone.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x64.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x64.Deploy.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x86.Build.0 = Release|Any CPU
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1}.Release|x86.Deploy.0 = Release|Any CPU
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|ARM.ActiveCfg = AppStore|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|x64.ActiveCfg = AppStore|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.AppStore|x86.ActiveCfg = AppStore|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|Any CPU.ActiveCfg = Debug|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|Any CPU.Build.0 = Debug|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|ARM.ActiveCfg = Debug|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhone.Build.0 = Debug|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|x64.ActiveCfg = Debug|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|x86.ActiveCfg = Debug|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|Any CPU.ActiveCfg = Release|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|Any CPU.Build.0 = Release|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|ARM.ActiveCfg = Release|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhone.ActiveCfg = Release|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhone.Build.0 = Release|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|x64.ActiveCfg = Release|iPhone
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|x86.ActiveCfg = Release|iPhone
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|Any CPU.Build.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|ARM.Build.0 = Release|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhone.ActiveCfg = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhone.Build.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhone.Deploy.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x64.ActiveCfg = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x64.Build.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x64.Deploy.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x86.ActiveCfg = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x86.Build.0 = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Ad-Hoc|x86.Deploy.0 = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|Any CPU.ActiveCfg = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|Any CPU.Build.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|Any CPU.Deploy.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|ARM.ActiveCfg = Release|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|ARM.Build.0 = Release|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|ARM.Deploy.0 = Release|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhone.ActiveCfg = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhone.Build.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhone.Deploy.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhoneSimulator.Build.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x64.ActiveCfg = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x64.Build.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x64.Deploy.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x86.ActiveCfg = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x86.Build.0 = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.AppStore|x86.Deploy.0 = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|Any CPU.Build.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|Any CPU.Deploy.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhone.ActiveCfg = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhone.Build.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhone.Deploy.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhoneSimulator.Build.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhoneSimulator.Deploy.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x64.Build.0 = Debug|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x64.Deploy.0 = Debug|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x86.Build.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x86.Deploy.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|Any CPU.Build.0 = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|ARM.Build.0 = Release|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|ARM.Deploy.0 = Release|ARM
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|iPhone.ActiveCfg = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|iPhoneSimulator.ActiveCfg = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x64.ActiveCfg = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x64.Build.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x64.Deploy.0 = Release|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x86.ActiveCfg = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x86.Build.0 = Release|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|x86.Deploy.0 = Release|x86
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|x64.Build.0 = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24} = {8F848898-6B21-4905-AE2E-B3ABDEDA1963}
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0} = {8F848898-6B21-4905-AE2E-B3ABDEDA1963}
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191} = {65D002E7-E869-491C-ABA8-9650CEAF677A}
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B} = {8F848898-6B21-4905-AE2E-B3ABDEDA1963}
|
||||
{F7B6A162-BC4D-4924-B16A-713F9B0344E7} = {71D6317D-AF0F-46FE-91DA-B0556911FC4B}
|
||||
{A289A7F0-ACD8-42AE-87B6-AB1AFD310BF1} = {71D6317D-AF0F-46FE-91DA-B0556911FC4B}
|
||||
{B68C2B56-7581-46AE-B55D-D25DDFD3BFE3} = {71D6317D-AF0F-46FE-91DA-B0556911FC4B}
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F} = {71D6317D-AF0F-46FE-91DA-B0556911FC4B}
|
||||
{E3B18084-842C-4B80-8E4A-A7E588EC3137} = {71D6317D-AF0F-46FE-91DA-B0556911FC4B}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -1,275 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Droid", "eShopOnContainers\eShopOnContainers.Droid\eShopOnContainers.Droid.csproj", "{62DBB163-9CA9-4818-B48B-13233DF37C24}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.iOS", "eShopOnContainers\eShopOnContainers.iOS\eShopOnContainers.iOS.csproj", "{6EEB23DC-7063-4444-9AF8-90DF24F549C0}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Core", "eShopOnContainers\eShopOnContainers.Core\eShopOnContainers.Core.csproj", "{65116D1C-145B-4693-ABDA-F0FB6F425191}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eShopOnContainers.Windows", "eShopOnContainers\eShopOnContainers.Windows\eShopOnContainers.Windows.csproj", "{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared Code", "Shared Code", "{65D002E7-E869-491C-ABA8-9650CEAF677A}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{8F848898-6B21-4905-AE2E-B3ABDEDA1963}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
Ad-Hoc|ARM = Ad-Hoc|ARM
|
||||
Ad-Hoc|iPhone = Ad-Hoc|iPhone
|
||||
Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
|
||||
Ad-Hoc|x64 = Ad-Hoc|x64
|
||||
Ad-Hoc|x86 = Ad-Hoc|x86
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
AppStore|ARM = AppStore|ARM
|
||||
AppStore|iPhone = AppStore|iPhone
|
||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||
AppStore|x64 = AppStore|x64
|
||||
AppStore|x86 = AppStore|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|ARM.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhone.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x64.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.AppStore|x86.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|ARM.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhone.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x64.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Debug|x86.Deploy.0 = Debug|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|ARM.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhone.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x64.Deploy.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.Build.0 = Release|Any CPU
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24}.Release|x86.Deploy.0 = Release|Any CPU
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|ARM.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|x64.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.AppStore|x86.ActiveCfg = AppStore|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|Any CPU.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|Any CPU.Build.0 = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|ARM.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhone.Build.0 = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x64.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x86.ActiveCfg = Debug|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|Any CPU.ActiveCfg = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|ARM.ActiveCfg = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.ActiveCfg = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.Build.0 = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|x64.ActiveCfg = Release|iPhone
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|x86.ActiveCfg = Release|iPhone
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x64.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Ad-Hoc|x86.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|ARM.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|ARM.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhone.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhone.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x64.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x64.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|ARM.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x64.Build.0 = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191}.Release|x86.Build.0 = Release|Any CPU
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|Any CPU.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.Build.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhone.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.ActiveCfg = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.Build.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x64.Deploy.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Ad-Hoc|x86.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|Any CPU.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.ActiveCfg = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.Build.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|ARM.Deploy.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhone.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|iPhoneSimulator.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.ActiveCfg = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.Build.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x64.Deploy.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.AppStore|x86.Deploy.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|Any CPU.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|Any CPU.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.Build.0 = Debug|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.ActiveCfg = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Build.0 = Debug|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Deploy.0 = Debug|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.ActiveCfg = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Build.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Deploy.0 = Release|ARM
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|iPhone.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|iPhoneSimulator.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.ActiveCfg = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.Build.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x64.Deploy.0 = Release|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.ActiveCfg = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Build.0 = Release|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|x86.Deploy.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{62DBB163-9CA9-4818-B48B-13233DF37C24} = {8F848898-6B21-4905-AE2E-B3ABDEDA1963}
|
||||
{6EEB23DC-7063-4444-9AF8-90DF24F549C0} = {8F848898-6B21-4905-AE2E-B3ABDEDA1963}
|
||||
{65116D1C-145B-4693-ABDA-F0FB6F425191} = {65D002E7-E869-491C-ABA8-9650CEAF677A}
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B} = {8F848898-6B21-4905-AE2E-B3ABDEDA1963}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
@ -180,13 +180,13 @@
|
||||
|
||||
<!-- EXPLICIT STYLES -->
|
||||
<Style x:Key="ValidationErrorLabelStyle"
|
||||
TargetType="{x:Type Label}">
|
||||
<Setter Property="TextColor"
|
||||
Value="{StaticResource ErrorColor}" />
|
||||
<Setter Property="FontSize"
|
||||
Value="{StaticResource LittleSize}" />
|
||||
</Style>
|
||||
|
||||
TargetType="{x:Type Label}">
|
||||
<Setter Property="TextColor"
|
||||
Value="{StaticResource ErrorColor}" />
|
||||
<Setter Property="FontSize"
|
||||
Value="{StaticResource LittleSize}" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="EntryStyle"
|
||||
TargetType="{x:Type Entry}">
|
||||
<Setter Property="FontFamily"
|
||||
@ -201,7 +201,7 @@
|
||||
Value="FillAndExpand" />
|
||||
<Setter Property="FontAttributes"
|
||||
Value="Bold" />
|
||||
<Setter Property="BackgroundColor"
|
||||
<Setter Property="BackgroundColor"
|
||||
Value="Transparent" />
|
||||
<Setter Property="Opacity"
|
||||
Value="0.6" />
|
||||
|
@ -1,12 +1,13 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using eShopOnContainers.Services;
|
||||
using eShopOnContainers.Core.ViewModels.Base;
|
||||
using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Models.Location;
|
||||
using eShopOnContainers.Core.Models.Location;
|
||||
using eShopOnContainers.Core.Services.Dependency;
|
||||
using eShopOnContainers.Core.Services.Location;
|
||||
using Plugin.Geolocator;
|
||||
using eShopOnContainers.Core.Services.Settings;
|
||||
using eShopOnContainers.Core.ViewModels.Base;
|
||||
using eShopOnContainers.Services;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Threading.Tasks;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
@ -15,15 +16,14 @@ namespace eShopOnContainers
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
public bool UseMockServices { get; set; }
|
||||
ISettingsService _settingsService;
|
||||
|
||||
public App()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
InitApp();
|
||||
|
||||
if (Device.RuntimePlatform == Device.UWP)
|
||||
if (Device.RuntimePlatform == Device.UWP)
|
||||
{
|
||||
InitNavigation();
|
||||
}
|
||||
@ -31,8 +31,9 @@ namespace eShopOnContainers
|
||||
|
||||
private void InitApp()
|
||||
{
|
||||
UseMockServices = Settings.UseMocks;
|
||||
ViewModelLocator.RegisterDependencies(UseMockServices);
|
||||
_settingsService = ViewModelLocator.Resolve<ISettingsService>();
|
||||
if (!_settingsService.UseMocks)
|
||||
ViewModelLocator.UpdateDependencies(_settingsService.UseMocks);
|
||||
}
|
||||
|
||||
private Task InitNavigation()
|
||||
@ -41,22 +42,19 @@ namespace eShopOnContainers
|
||||
return navigationService.InitializeAsync();
|
||||
}
|
||||
|
||||
|
||||
protected override async void OnStart()
|
||||
{
|
||||
base.OnStart();
|
||||
|
||||
if (Device.RuntimePlatform != Device.UWP)
|
||||
if (Device.RuntimePlatform != Device.UWP)
|
||||
{
|
||||
await InitNavigation();
|
||||
}
|
||||
|
||||
if (Settings.AllowGpsLocation && !Settings.UseFakeLocation)
|
||||
if (_settingsService.AllowGpsLocation && !_settingsService.UseFakeLocation)
|
||||
{
|
||||
await GetGpsLocation();
|
||||
}
|
||||
|
||||
if (!Settings.UseMocks && !string.IsNullOrEmpty(Settings.AuthAccessToken))
|
||||
if (!_settingsService.UseMocks && !string.IsNullOrEmpty(_settingsService.AuthAccessToken))
|
||||
{
|
||||
await SendCurrentLocation();
|
||||
}
|
||||
@ -71,21 +69,27 @@ namespace eShopOnContainers
|
||||
|
||||
private async Task GetGpsLocation()
|
||||
{
|
||||
var locator = CrossGeolocator.Current;
|
||||
var dependencyService = ViewModelLocator.Resolve<IDependencyService>();
|
||||
var locator = dependencyService.Get<ILocationServiceImplementation>();
|
||||
|
||||
if (locator.IsGeolocationEnabled && locator.IsGeolocationAvailable)
|
||||
{
|
||||
locator.AllowsBackgroundUpdates = true;
|
||||
{
|
||||
locator.DesiredAccuracy = 50;
|
||||
|
||||
var position = await locator.GetPositionAsync();
|
||||
|
||||
Settings.Latitude = position.Latitude.ToString();
|
||||
Settings.Longitude = position.Longitude.ToString();
|
||||
try
|
||||
{
|
||||
var position = await locator.GetPositionAsync();
|
||||
_settingsService.Latitude = position.Latitude.ToString();
|
||||
_settingsService.Longitude = position.Longitude.ToString();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine(ex);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Settings.AllowGpsLocation = false;
|
||||
_settingsService.AllowGpsLocation = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -93,13 +97,12 @@ namespace eShopOnContainers
|
||||
{
|
||||
var location = new Location
|
||||
{
|
||||
Latitude = double.Parse(Settings.Latitude, CultureInfo.InvariantCulture),
|
||||
Longitude = double.Parse(Settings.Longitude, CultureInfo.InvariantCulture)
|
||||
Latitude = double.Parse(_settingsService.Latitude, CultureInfo.InvariantCulture),
|
||||
Longitude = double.Parse(_settingsService.Longitude, CultureInfo.InvariantCulture)
|
||||
};
|
||||
|
||||
var locationService = ViewModelLocator.Resolve<ILocationService>();
|
||||
await locationService.UpdateUserLocation(location,
|
||||
Settings.AuthAccessToken);
|
||||
await locationService.UpdateUserLocation(location, _settingsService.AuthAccessToken);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
using System.Linq;
|
||||
using eShopOnContainers.Core.Effects;
|
||||
using System.Linq;
|
||||
using Xamarin.Forms;
|
||||
using eShopOnContainers.Core.Effects;
|
||||
|
||||
namespace eShopOnContainers.Core.Behaviors
|
||||
{
|
||||
|
@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using Xamarin.Forms;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
{
|
||||
public const string AzureTag = "Azure";
|
||||
public const string MockTag = "Mock";
|
||||
public const string DefaultEndpoint = "http://13.88.8.119";
|
||||
public const string DefaultEndpoint = "http://YOUR_IP_OR_DNS_NAME"; // i.e.: "http://YOUR_IP" or "http://YOUR_DNS_NAME"
|
||||
|
||||
private string _baseEndpoint;
|
||||
private static readonly GlobalSetting _instance = new GlobalSetting();
|
||||
@ -38,18 +38,8 @@
|
||||
|
||||
public string RegisterWebsite { get; set; }
|
||||
|
||||
public string CatalogEndpoint { get; set; }
|
||||
|
||||
public string OrdersEndpoint { get; set; }
|
||||
|
||||
public string BasketEndpoint { get; set; }
|
||||
|
||||
public string IdentityEndpoint { get; set; }
|
||||
|
||||
public string LocationEndpoint { get; set; }
|
||||
|
||||
public string MarketingEndpoint { get; set; }
|
||||
|
||||
public string UserInfoEndpoint { get; set; }
|
||||
|
||||
public string TokenEndpoint { get; set; }
|
||||
@ -62,18 +52,17 @@
|
||||
|
||||
private void UpdateEndpoint(string baseEndpoint)
|
||||
{
|
||||
RegisterWebsite = $"{baseEndpoint}:5105/Account/Register";
|
||||
CatalogEndpoint = $"{baseEndpoint}:5101";
|
||||
OrdersEndpoint = $"{baseEndpoint}:5102";
|
||||
BasketEndpoint = $"{baseEndpoint}:5103";
|
||||
IdentityEndpoint = $"{baseEndpoint}:5105/connect/authorize";
|
||||
UserInfoEndpoint = $"{baseEndpoint}:5105/connect/userinfo";
|
||||
TokenEndpoint = $"{baseEndpoint}:5105/connect/token";
|
||||
LogoutEndpoint = $"{baseEndpoint}:5105/connect/endsession";
|
||||
IdentityCallback = $"{baseEndpoint}:5105/xamarincallback";
|
||||
LogoutCallback = $"{baseEndpoint}:5105/Account/Redirecting";
|
||||
LocationEndpoint = $"{baseEndpoint}:5109";
|
||||
MarketingEndpoint = $"{baseEndpoint}:5110";
|
||||
var identityBaseEndpoint = $"{baseEndpoint}/identity";
|
||||
RegisterWebsite = $"{identityBaseEndpoint}/Account/Register";
|
||||
LogoutCallback = $"{identityBaseEndpoint}/Account/Redirecting";
|
||||
|
||||
var connectBaseEndpoint = $"{identityBaseEndpoint}/connect";
|
||||
IdentityEndpoint = $"{connectBaseEndpoint}/authorize";
|
||||
UserInfoEndpoint = $"{connectBaseEndpoint}/userinfo";
|
||||
TokenEndpoint = $"{connectBaseEndpoint}/token";
|
||||
LogoutEndpoint = $"{connectBaseEndpoint}/endsession";
|
||||
|
||||
IdentityCallback = $"{baseEndpoint}/xamarincallback";
|
||||
}
|
||||
}
|
||||
}
|
@ -1,90 +0,0 @@
|
||||
using Plugin.Settings;
|
||||
using Plugin.Settings.Abstractions;
|
||||
|
||||
namespace eShopOnContainers.Core.Helpers
|
||||
{
|
||||
/// <summary>
|
||||
/// This is the Settings static class that can be used in your Core solution or in any
|
||||
/// of your client applications. All settings are laid out the same exact way with getters
|
||||
/// and setters.
|
||||
/// </summary>
|
||||
public static class Settings
|
||||
{
|
||||
private static ISettings AppSettings
|
||||
{
|
||||
get
|
||||
{
|
||||
return CrossSettings.Current;
|
||||
}
|
||||
}
|
||||
|
||||
#region Setting Constants
|
||||
|
||||
private const string AccessToken = "access_token";
|
||||
private const string IdToken = "id_token";
|
||||
private const string IdUseMocks = "use_mocks";
|
||||
private const string IdUrlBase = "url_base";
|
||||
private const string IdUseFakeLocation = "use_fake_location";
|
||||
private const string IdLatitude = "latitude";
|
||||
private const string IdLongitude = "longitude";
|
||||
private const string IdAllowGpsLocation = "allow_gps_location";
|
||||
private static readonly string AccessTokenDefault = string.Empty;
|
||||
private static readonly string IdTokenDefault = string.Empty;
|
||||
private static readonly bool UseMocksDefault = true;
|
||||
private static readonly bool UseFakeLocationDefault = false;
|
||||
private static readonly bool AllowGpsLocationDefault = false;
|
||||
private static readonly double FakeLatitudeDefault = 47.604610d;
|
||||
private static readonly double FakeLongitudeDefault = -122.315752d;
|
||||
private static readonly string UrlBaseDefault = GlobalSetting.Instance.BaseEndpoint;
|
||||
|
||||
#endregion
|
||||
|
||||
public static string AuthAccessToken
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault<string>(AccessToken, AccessTokenDefault);
|
||||
set => AppSettings.AddOrUpdateValue<string>(AccessToken, value);
|
||||
}
|
||||
|
||||
public static string AuthIdToken
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault<string>(IdToken, IdTokenDefault);
|
||||
set => AppSettings.AddOrUpdateValue<string>(IdToken, value);
|
||||
}
|
||||
|
||||
public static bool UseMocks
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault<bool>(IdUseMocks, UseMocksDefault);
|
||||
set => AppSettings.AddOrUpdateValue<bool>(IdUseMocks, value);
|
||||
}
|
||||
|
||||
public static string UrlBase
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault<string>(IdUrlBase, UrlBaseDefault);
|
||||
set => AppSettings.AddOrUpdateValue<string>(IdUrlBase, value);
|
||||
}
|
||||
|
||||
public static bool UseFakeLocation
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault<bool>(IdUseFakeLocation, UseFakeLocationDefault);
|
||||
set => AppSettings.AddOrUpdateValue<bool>(IdUseFakeLocation, value);
|
||||
}
|
||||
|
||||
public static string Latitude
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault<string>(IdLatitude, FakeLatitudeDefault.ToString());
|
||||
set => AppSettings.AddOrUpdateValue<string>(IdLatitude, value);
|
||||
}
|
||||
|
||||
public static string Longitude
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault<string>(IdLongitude, FakeLongitudeDefault.ToString());
|
||||
set => AppSettings.AddOrUpdateValue<string>(IdLongitude, value);
|
||||
}
|
||||
|
||||
public static bool AllowGpsLocation
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault<bool>(IdAllowGpsLocation, AllowGpsLocationDefault);
|
||||
set => AppSettings.AddOrUpdateValue<bool>(IdAllowGpsLocation, value);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
namespace eShopOnContainers.Core.Models.Location
|
||||
{
|
||||
public enum GeolocationError
|
||||
{
|
||||
PositionUnavailable,
|
||||
Unauthorized
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
using System;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Location
|
||||
{
|
||||
public class GeolocationException : Exception
|
||||
{
|
||||
public GeolocationError Error { get; private set; }
|
||||
|
||||
public GeolocationException(GeolocationError error)
|
||||
: base("A geolocation error occured: " + error)
|
||||
{
|
||||
if (!Enum.IsDefined(typeof(GeolocationError), error))
|
||||
throw new ArgumentException("error is not a valid GelocationError member", "error");
|
||||
|
||||
Error = error;
|
||||
}
|
||||
|
||||
public GeolocationException(GeolocationError error, Exception innerException)
|
||||
: base("A geolocation error occured: " + error, innerException)
|
||||
{
|
||||
if (!Enum.IsDefined(typeof(GeolocationError), error))
|
||||
throw new ArgumentException("error is not a valid GelocationError member", "error");
|
||||
|
||||
Error = error;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
using System;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Location
|
||||
{
|
||||
public class Position
|
||||
{
|
||||
public DateTimeOffset Timestamp { get; set; }
|
||||
public double Latitude { get; set; }
|
||||
public double Longitude { get; set; }
|
||||
public double Altitude { get; set; }
|
||||
public double Accuracy { get; set; }
|
||||
public double AltitudeAccuracy { get; set; }
|
||||
public double Heading { get; set; }
|
||||
public double Speed { get; set; }
|
||||
|
||||
public Position()
|
||||
{
|
||||
}
|
||||
|
||||
public Position(double latitude, double longitude)
|
||||
{
|
||||
|
||||
Timestamp = DateTimeOffset.UtcNow;
|
||||
Latitude = latitude;
|
||||
Longitude = longitude;
|
||||
}
|
||||
|
||||
public Position(Position position)
|
||||
{
|
||||
if (position == null)
|
||||
throw new ArgumentNullException("position");
|
||||
|
||||
Timestamp = position.Timestamp;
|
||||
Latitude = position.Latitude;
|
||||
Longitude = position.Longitude;
|
||||
Altitude = position.Altitude;
|
||||
AltitudeAccuracy = position.AltitudeAccuracy;
|
||||
Accuracy = position.Accuracy;
|
||||
Heading = position.Heading;
|
||||
Speed = position.Speed;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
namespace eShopOnContainers.Core.Models.Marketing
|
||||
{
|
||||
using System;
|
||||
using System;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Marketing
|
||||
{
|
||||
public class Campaign
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
@ -1,7 +1,7 @@
|
||||
namespace eShopOnContainers.Core.Models.Marketing
|
||||
{
|
||||
using System;
|
||||
using System;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Marketing
|
||||
{
|
||||
public class CampaignItem
|
||||
{
|
||||
public int Id { get; set; }
|
||||
|
@ -1,7 +1,7 @@
|
||||
namespace eShopOnContainers.Core.Models.Marketing
|
||||
{
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Marketing
|
||||
{
|
||||
public class CampaignRoot
|
||||
{
|
||||
public int PageIndex { get; set; }
|
||||
|
@ -1,6 +1,6 @@
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Orders
|
||||
{
|
||||
|
@ -0,0 +1,10 @@
|
||||
namespace eShopOnContainers.Core.Models.Permissions
|
||||
{
|
||||
public enum Permission
|
||||
{
|
||||
Unknown,
|
||||
Location,
|
||||
LocationAlways,
|
||||
LocationWhenInUse
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
namespace eShopOnContainers.Core.Models.Permissions
|
||||
{
|
||||
public enum PermissionStatus
|
||||
{
|
||||
Denied,
|
||||
Disabled,
|
||||
Granted,
|
||||
Restricted,
|
||||
Unknown
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
using System.Resources;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("eShopOnContainers.Core")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("eShopOnContainers.Core")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2014")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: NeutralResourcesLanguage("en")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
@ -13,16 +13,16 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
BuyerId = "9245fe4a-d402-451c-b9ed-9c1a04247482",
|
||||
Items = new List<BasketItem>
|
||||
{
|
||||
new BasketItem { Id = "1", PictureUrl = Device.RuntimePlatform != Device.UWP ? "fake_product_01.png" : "Assets/fake_product_01.png", ProductId = Common.Common.MockCatalogItemId01, ProductName = ".NET Bot Blue Sweatshirt (M)", Quantity = 1, UnitPrice = 19.50M },
|
||||
new BasketItem { Id = "2", PictureUrl = Device.RuntimePlatform != Device.UWP ? "fake_product_04.png" : "Assets/fake_product_04.png", ProductId = Common.Common.MockCatalogItemId04, ProductName = ".NET Black Cupt", Quantity = 1, UnitPrice = 17.00M }
|
||||
new BasketItem { Id = "1", PictureUrl = Device.RuntimePlatform != Device.UWP ? "fake_product_01.png" : "Assets/fake_product_01.png", ProductId = Common.Common.MockCatalogItemId01, ProductName = ".NET Bot Blue Sweatshirt (M)", Quantity = 1, UnitPrice = 19.50M },
|
||||
new BasketItem { Id = "2", PictureUrl = Device.RuntimePlatform != Device.UWP ? "fake_product_04.png" : "Assets/fake_product_04.png", ProductId = Common.Common.MockCatalogItemId04, ProductName = ".NET Black Cupt", Quantity = 1, UnitPrice = 17.00M }
|
||||
}
|
||||
};
|
||||
|
||||
public async Task<CustomerBasket> GetBasketAsync(string guidUser, string token)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
if(string.IsNullOrEmpty(guidUser) || string.IsNullOrEmpty(token))
|
||||
if (string.IsNullOrEmpty(guidUser) || string.IsNullOrEmpty(token))
|
||||
{
|
||||
return new CustomerBasket();
|
||||
}
|
||||
@ -32,7 +32,7 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
|
||||
public async Task<CustomerBasket> UpdateBasketAsync(CustomerBasket customerBasket, string token)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
if (string.IsNullOrEmpty(token))
|
||||
{
|
||||
@ -46,7 +46,7 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
|
||||
public async Task ClearBasketAsync(string guidUser, string token)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
if (string.IsNullOrEmpty(token))
|
||||
{
|
||||
|
@ -2,72 +2,78 @@
|
||||
using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using eShopOnContainers.Core.Models.Basket;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using eShopOnContainers.Core.Services.FixUri;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Basket
|
||||
{
|
||||
public class BasketService : IBasketService
|
||||
{
|
||||
private readonly IRequestProvider _requestProvider;
|
||||
private const string ApiUrlBase = "api/v1/basket";
|
||||
private readonly IFixUriService _fixUriService;
|
||||
|
||||
public BasketService(IRequestProvider requestProvider)
|
||||
private const string ApiUrlBase = "mobileshoppingapigw/api/v1/b/basket";
|
||||
|
||||
public BasketService(IRequestProvider requestProvider, IFixUriService fixUriService)
|
||||
{
|
||||
_requestProvider = requestProvider;
|
||||
_fixUriService = fixUriService;
|
||||
}
|
||||
|
||||
public async Task<CustomerBasket> GetBasketAsync(string guidUser, string token)
|
||||
{
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint)
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint)
|
||||
{
|
||||
Path = $"{ApiUrlBase}/{guidUser}"
|
||||
};
|
||||
|
||||
var uri = builder.ToString();
|
||||
|
||||
CustomerBasket basket =
|
||||
await _requestProvider.GetAsync<CustomerBasket>(uri, token);
|
||||
CustomerBasket basket;
|
||||
|
||||
ServicesHelper.FixBasketItemPictureUri(basket?.Items);
|
||||
try
|
||||
{
|
||||
basket = await _requestProvider.GetAsync<CustomerBasket>(uri, token);
|
||||
}
|
||||
catch (HttpRequestExceptionEx exception) when (exception.HttpCode == System.Net.HttpStatusCode.NotFound)
|
||||
{
|
||||
basket = null;
|
||||
}
|
||||
|
||||
_fixUriService.FixBasketItemPictureUri(basket?.Items);
|
||||
return basket;
|
||||
}
|
||||
|
||||
public async Task<CustomerBasket> UpdateBasketAsync(CustomerBasket customerBasket, string token)
|
||||
{
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint)
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint)
|
||||
{
|
||||
Path = ApiUrlBase
|
||||
};
|
||||
|
||||
var uri = builder.ToString();
|
||||
|
||||
var result = await _requestProvider.PostAsync(uri, customerBasket, token);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task CheckoutAsync(BasketCheckout basketCheckout, string token)
|
||||
{
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint)
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint)
|
||||
{
|
||||
Path = $"{ApiUrlBase}/checkout"
|
||||
};
|
||||
|
||||
var uri = builder.ToString();
|
||||
|
||||
await _requestProvider.PostAsync(uri, basketCheckout, token);
|
||||
}
|
||||
|
||||
public async Task ClearBasketAsync(string guidUser, string token)
|
||||
{
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint)
|
||||
var builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint)
|
||||
{
|
||||
Path = $"{ApiUrlBase}/{guidUser}"
|
||||
};
|
||||
|
||||
var uri = builder.ToString();
|
||||
|
||||
await _requestProvider.DeleteAsync(uri, token);
|
||||
}
|
||||
}
|
||||
|
@ -24,40 +24,40 @@ namespace eShopOnContainers.Core.Services.Catalog
|
||||
|
||||
private ObservableCollection<CatalogItem> MockCatalog = new ObservableCollection<CatalogItem>
|
||||
{
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId01, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_01.png" : "Assets/fake_product_01.png", Name = ".NET Bot Blue Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" },
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId02, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_02.png" : "Assets/fake_product_02.png", Name = ".NET Bot Purple Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" },
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId03, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_03.png" : "Assets/fake_product_03.png", Name = ".NET Bot Black Sweatshirt (M)", Price = 19.95M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" },
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId04, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_04.png" : "Assets/fake_product_04.png", Name = ".NET Black Cupt", Price = 17.00M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 1, CatalogType = "Mug" },
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId05, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_05.png" : "Assets/fake_product_05.png", Name = "Azure Black Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 1, CatalogBrand = "Azure", CatalogTypeId = 2, CatalogType = "T-Shirt" }
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId01, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_01.png" : "Assets/fake_product_01.png", Name = ".NET Bot Blue Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" },
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId02, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_02.png" : "Assets/fake_product_02.png", Name = ".NET Bot Purple Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" },
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId03, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_03.png" : "Assets/fake_product_03.png", Name = ".NET Bot Black Sweatshirt (M)", Price = 19.95M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" },
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId04, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_04.png" : "Assets/fake_product_04.png", Name = ".NET Black Cupt", Price = 17.00M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 1, CatalogType = "Mug" },
|
||||
new CatalogItem { Id = Common.Common.MockCatalogItemId05, PictureUri = Device.RuntimePlatform != Device.UWP ? "fake_product_05.png" : "Assets/fake_product_05.png", Name = "Azure Black Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 1, CatalogBrand = "Azure", CatalogTypeId = 2, CatalogType = "T-Shirt" }
|
||||
};
|
||||
|
||||
public async Task<ObservableCollection<CatalogItem>> GetCatalogAsync()
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
return MockCatalog;
|
||||
}
|
||||
|
||||
public async Task<ObservableCollection<CatalogItem>> FilterAsync(int catalogBrandId, int catalogTypeId)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
return MockCatalog
|
||||
.Where(c => c.CatalogBrandId == catalogBrandId &&
|
||||
c.CatalogTypeId == catalogTypeId)
|
||||
c.CatalogTypeId == catalogTypeId)
|
||||
.ToObservableCollection();
|
||||
}
|
||||
|
||||
public async Task<ObservableCollection<CatalogBrand>> GetCatalogBrandAsync()
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
return MockCatalogBrand;
|
||||
}
|
||||
|
||||
public async Task<ObservableCollection<CatalogType>> GetCatalogTypeAsync()
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
return MockCatalogType;
|
||||
}
|
||||
|
@ -5,29 +5,30 @@ using eShopOnContainers.Core.Models.Catalog;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using eShopOnContainers.Core.Extensions;
|
||||
using System.Collections.Generic;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using eShopOnContainers.Core.Services.FixUri;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Catalog
|
||||
{
|
||||
public class CatalogService : ICatalogService
|
||||
{
|
||||
private readonly IRequestProvider _requestProvider;
|
||||
private readonly IFixUriService _fixUriService;
|
||||
|
||||
private const string ApiUrlBase = "mobileshoppingapigw/api/v1/c/catalog";
|
||||
|
||||
public CatalogService(IRequestProvider requestProvider)
|
||||
public CatalogService(IRequestProvider requestProvider, IFixUriService fixUriService)
|
||||
{
|
||||
_requestProvider = requestProvider;
|
||||
_fixUriService = fixUriService;
|
||||
}
|
||||
|
||||
public async Task<ObservableCollection<CatalogItem>> FilterAsync(int catalogBrandId, int catalogTypeId)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint);
|
||||
|
||||
builder.Path = string.Format("api/v1/catalog/items/type/{0}/brand/{1}", catalogTypeId, catalogBrandId);
|
||||
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/items/type/{catalogTypeId}/brand/{catalogBrandId}";
|
||||
string uri = builder.ToString();
|
||||
|
||||
CatalogRoot catalog =
|
||||
await _requestProvider.GetAsync<CatalogRoot>(uri);
|
||||
CatalogRoot catalog = await _requestProvider.GetAsync<CatalogRoot>(uri);
|
||||
|
||||
if (catalog?.Data != null)
|
||||
return catalog?.Data.ToObservableCollection();
|
||||
@ -37,35 +38,28 @@ namespace eShopOnContainers.Core.Services.Catalog
|
||||
|
||||
public async Task<ObservableCollection<CatalogItem>> GetCatalogAsync()
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint);
|
||||
|
||||
builder.Path = "api/v1/catalog/items";
|
||||
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/items";
|
||||
string uri = builder.ToString();
|
||||
|
||||
CatalogRoot catalog =
|
||||
await _requestProvider.GetAsync<CatalogRoot>(uri);
|
||||
CatalogRoot catalog = await _requestProvider.GetAsync<CatalogRoot>(uri);
|
||||
|
||||
if (catalog?.Data != null)
|
||||
{
|
||||
ServicesHelper.FixCatalogItemPictureUri(catalog?.Data);
|
||||
|
||||
_fixUriService.FixCatalogItemPictureUri(catalog?.Data);
|
||||
return catalog?.Data.ToObservableCollection();
|
||||
}
|
||||
else
|
||||
return new ObservableCollection<CatalogItem>();
|
||||
return new ObservableCollection<CatalogItem>();
|
||||
}
|
||||
|
||||
public async Task<ObservableCollection<CatalogBrand>> GetCatalogBrandAsync()
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint);
|
||||
|
||||
builder.Path = "api/v1/catalog/catalogbrands";
|
||||
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/catalogbrands";
|
||||
string uri = builder.ToString();
|
||||
|
||||
IEnumerable<CatalogBrand> brands =
|
||||
await _requestProvider.GetAsync<IEnumerable<CatalogBrand>>(uri);
|
||||
IEnumerable<CatalogBrand> brands = await _requestProvider.GetAsync<IEnumerable<CatalogBrand>>(uri);
|
||||
|
||||
if (brands != null)
|
||||
return brands?.ToObservableCollection();
|
||||
@ -75,19 +69,16 @@ namespace eShopOnContainers.Core.Services.Catalog
|
||||
|
||||
public async Task<ObservableCollection<CatalogType>> GetCatalogTypeAsync()
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.CatalogEndpoint);
|
||||
|
||||
builder.Path = "api/v1/catalog/catalogtypes";
|
||||
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/catalogtypes";
|
||||
string uri = builder.ToString();
|
||||
|
||||
IEnumerable<CatalogType> types =
|
||||
await _requestProvider.GetAsync<IEnumerable<CatalogType>>(uri);
|
||||
IEnumerable<CatalogType> types = await _requestProvider.GetAsync<IEnumerable<CatalogType>>(uri);
|
||||
|
||||
if (types != null)
|
||||
return types.ToObservableCollection();
|
||||
else
|
||||
return new ObservableCollection<CatalogType>();
|
||||
return new ObservableCollection<CatalogType>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,10 @@
|
||||
namespace eShopOnContainers.Core.Services.Dependency
|
||||
{
|
||||
public class DependencyService : IDependencyService
|
||||
{
|
||||
public T Get<T>() where T : class
|
||||
{
|
||||
return Xamarin.Forms.DependencyService.Get<T>();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
namespace eShopOnContainers.Core.Services.Dependency
|
||||
{
|
||||
public interface IDependencyService
|
||||
{
|
||||
T Get<T>() where T : class;
|
||||
}
|
||||
}
|
@ -6,14 +6,22 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Text.RegularExpressions;
|
||||
using eShopOnContainers.Core.Services.Settings;
|
||||
|
||||
namespace eShopOnContainers.Core.Helpers
|
||||
namespace eShopOnContainers.Core.Services.FixUri
|
||||
{
|
||||
public static class ServicesHelper
|
||||
public class FixUriService : IFixUriService
|
||||
{
|
||||
private static Regex IpRegex = new Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b");
|
||||
private readonly ISettingsService _settingsService;
|
||||
|
||||
public static void FixCatalogItemPictureUri(IEnumerable<CatalogItem> catalogItems)
|
||||
private Regex IpRegex = new Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b");
|
||||
|
||||
public FixUriService(ISettingsService settingsService)
|
||||
{
|
||||
_settingsService = settingsService;
|
||||
}
|
||||
|
||||
public void FixCatalogItemPictureUri(IEnumerable<CatalogItem> catalogItems)
|
||||
{
|
||||
if (catalogItems == null)
|
||||
{
|
||||
@ -23,12 +31,12 @@ namespace eShopOnContainers.Core.Helpers
|
||||
try
|
||||
{
|
||||
if (!ViewModelLocator.UseMockService
|
||||
&& Settings.UrlBase != GlobalSetting.DefaultEndpoint)
|
||||
&& _settingsService.UrlBase != GlobalSetting.DefaultEndpoint)
|
||||
{
|
||||
foreach (var catalogItem in catalogItems)
|
||||
{
|
||||
MatchCollection serverResult = IpRegex.Matches(catalogItem.PictureUri);
|
||||
MatchCollection localResult = IpRegex.Matches(Settings.UrlBase);
|
||||
MatchCollection localResult = IpRegex.Matches(_settingsService.UrlBase);
|
||||
|
||||
if (serverResult.Count != -1 && localResult.Count != -1)
|
||||
{
|
||||
@ -46,7 +54,7 @@ namespace eShopOnContainers.Core.Helpers
|
||||
}
|
||||
}
|
||||
|
||||
public static void FixBasketItemPictureUri(IEnumerable<BasketItem> basketItems)
|
||||
public void FixBasketItemPictureUri(IEnumerable<BasketItem> basketItems)
|
||||
{
|
||||
if (basketItems == null)
|
||||
{
|
||||
@ -56,12 +64,12 @@ namespace eShopOnContainers.Core.Helpers
|
||||
try
|
||||
{
|
||||
if (!ViewModelLocator.UseMockService
|
||||
&& Settings.UrlBase != GlobalSetting.DefaultEndpoint)
|
||||
&& _settingsService.UrlBase != GlobalSetting.DefaultEndpoint)
|
||||
{
|
||||
foreach (var basketItem in basketItems)
|
||||
{
|
||||
MatchCollection serverResult = IpRegex.Matches(basketItem.PictureUrl);
|
||||
MatchCollection localResult = IpRegex.Matches(Settings.UrlBase);
|
||||
MatchCollection localResult = IpRegex.Matches(_settingsService.UrlBase);
|
||||
|
||||
if (serverResult.Count != -1 && localResult.Count != -1)
|
||||
{
|
||||
@ -78,7 +86,7 @@ namespace eShopOnContainers.Core.Helpers
|
||||
}
|
||||
}
|
||||
|
||||
public static void FixCampaignItemPictureUri(IEnumerable<CampaignItem> campaignItems)
|
||||
public void FixCampaignItemPictureUri(IEnumerable<CampaignItem> campaignItems)
|
||||
{
|
||||
if (campaignItems == null)
|
||||
{
|
||||
@ -88,12 +96,12 @@ namespace eShopOnContainers.Core.Helpers
|
||||
try
|
||||
{
|
||||
if (!ViewModelLocator.UseMockService
|
||||
&& Settings.UrlBase != GlobalSetting.DefaultEndpoint)
|
||||
&& _settingsService.UrlBase != GlobalSetting.DefaultEndpoint)
|
||||
{
|
||||
foreach (var campaignItem in campaignItems)
|
||||
{
|
||||
MatchCollection serverResult = IpRegex.Matches(campaignItem.PictureUri);
|
||||
MatchCollection localResult = IpRegex.Matches(Settings.UrlBase);
|
||||
MatchCollection localResult = IpRegex.Matches(_settingsService.UrlBase);
|
||||
|
||||
if (serverResult.Count != -1 && localResult.Count != -1)
|
||||
{
|
@ -0,0 +1,14 @@
|
||||
using System.Collections.Generic;
|
||||
using eShopOnContainers.Core.Models.Basket;
|
||||
using eShopOnContainers.Core.Models.Catalog;
|
||||
using eShopOnContainers.Core.Models.Marketing;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.FixUri
|
||||
{
|
||||
public interface IFixUriService
|
||||
{
|
||||
void FixCatalogItemPictureUri(IEnumerable<CatalogItem> catalogItems);
|
||||
void FixBasketItemPictureUri(IEnumerable<BasketItem> basketItems);
|
||||
void FixCampaignItemPictureUri(IEnumerable<CampaignItem> campaignItems);
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Identity
|
||||
{
|
||||
public class AuthorizeRequest
|
||||
{
|
||||
readonly Uri _authorizeEndpoint;
|
||||
|
||||
public AuthorizeRequest(string authorizeEndpoint)
|
||||
{
|
||||
_authorizeEndpoint = new Uri(authorizeEndpoint);
|
||||
}
|
||||
|
||||
public string Create(IDictionary<string, string> values)
|
||||
{
|
||||
var queryString = string.Join("&", values.Select(kvp => string.Format("{0}={1}", WebUtility.UrlEncode(kvp.Key), WebUtility.UrlEncode(kvp.Value))).ToArray());
|
||||
return string.Format("{0}?{1}", _authorizeEndpoint.AbsoluteUri, queryString);
|
||||
}
|
||||
}
|
||||
}
|
@ -7,7 +7,6 @@ using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using eShopOnContainers.Core.Models.Token;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using IdentityModel;
|
||||
using IdentityModel.Client;
|
||||
using PCLCrypto;
|
||||
using static PCLCrypto.WinRTCrypto;
|
||||
|
||||
@ -15,13 +14,13 @@ namespace eShopOnContainers.Core.Services.Identity
|
||||
{
|
||||
public class IdentityService : IIdentityService
|
||||
{
|
||||
private readonly IRequestProvider _requestProvider;
|
||||
private readonly IRequestProvider _requestProvider;
|
||||
private string _codeVerifier;
|
||||
|
||||
public IdentityService(IRequestProvider requestProvider)
|
||||
{
|
||||
_requestProvider = requestProvider;
|
||||
}
|
||||
public IdentityService(IRequestProvider requestProvider)
|
||||
{
|
||||
_requestProvider = requestProvider;
|
||||
}
|
||||
|
||||
public string CreateAuthorizationRequest()
|
||||
{
|
||||
@ -31,7 +30,7 @@ namespace eShopOnContainers.Core.Services.Identity
|
||||
// Dictionary with values for the authorize request
|
||||
var dic = new Dictionary<string, string>();
|
||||
dic.Add("client_id", GlobalSetting.Instance.ClientId);
|
||||
dic.Add("client_secret", GlobalSetting.Instance.ClientSecret);
|
||||
dic.Add("client_secret", GlobalSetting.Instance.ClientSecret);
|
||||
dic.Add("response_type", "code id_token");
|
||||
dic.Add("scope", "openid profile basket orders locations marketing offline_access");
|
||||
dic.Add("redirect_uri", GlobalSetting.Instance.IdentityCallback);
|
||||
@ -43,7 +42,7 @@ namespace eShopOnContainers.Core.Services.Identity
|
||||
var currentCSRFToken = Guid.NewGuid().ToString("N");
|
||||
dic.Add("state", currentCSRFToken);
|
||||
|
||||
var authorizeUri = authorizeRequest.Create(dic);
|
||||
var authorizeUri = authorizeRequest.Create(dic);
|
||||
return authorizeUri;
|
||||
}
|
||||
|
||||
@ -54,18 +53,18 @@ namespace eShopOnContainers.Core.Services.Identity
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return string.Format("{0}?id_token_hint={1}&post_logout_redirect_uri={2}",
|
||||
return string.Format("{0}?id_token_hint={1}&post_logout_redirect_uri={2}",
|
||||
GlobalSetting.Instance.LogoutEndpoint,
|
||||
token,
|
||||
GlobalSetting.Instance.LogoutCallback);
|
||||
}
|
||||
|
||||
public async Task<UserToken> GetTokenAsync(string code)
|
||||
{
|
||||
string data = string.Format("grant_type=authorization_code&code={0}&redirect_uri={1}&code_verifier={2}", code, WebUtility.UrlEncode(GlobalSetting.Instance.IdentityCallback), _codeVerifier);
|
||||
var token = await _requestProvider.PostAsync<UserToken>(GlobalSetting.Instance.TokenEndpoint, data, GlobalSetting.Instance.ClientId, GlobalSetting.Instance.ClientSecret);
|
||||
return token;
|
||||
}
|
||||
public async Task<UserToken> GetTokenAsync(string code)
|
||||
{
|
||||
string data = string.Format("grant_type=authorization_code&code={0}&redirect_uri={1}&code_verifier={2}", code, WebUtility.UrlEncode(GlobalSetting.Instance.IdentityCallback), _codeVerifier);
|
||||
var token = await _requestProvider.PostAsync<UserToken>(GlobalSetting.Instance.TokenEndpoint, data, GlobalSetting.Instance.ClientId, GlobalSetting.Instance.ClientSecret);
|
||||
return token;
|
||||
}
|
||||
|
||||
private string CreateCodeChallenge()
|
||||
{
|
||||
|
@ -1,10 +1,9 @@
|
||||
namespace eShopOnContainers.Core.Services.Location
|
||||
{
|
||||
using System.Threading.Tasks;
|
||||
using Models.Location;
|
||||
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Location
|
||||
{
|
||||
public interface ILocationService
|
||||
{
|
||||
Task UpdateUserLocation(Location newLocReq, string token);
|
||||
Task UpdateUserLocation(eShopOnContainers.Core.Models.Location.Location newLocReq, string token);
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
using eShopOnContainers.Core.Models.Location;
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Location
|
||||
{
|
||||
public interface ILocationServiceImplementation
|
||||
{
|
||||
double DesiredAccuracy { get; set; }
|
||||
bool IsGeolocationAvailable { get; }
|
||||
bool IsGeolocationEnabled { get; }
|
||||
|
||||
Task<Position> GetPositionAsync(TimeSpan? timeout = null, CancellationToken? token = null);
|
||||
}
|
||||
}
|
@ -1,10 +1,9 @@
|
||||
namespace eShopOnContainers.Core.Services.Location
|
||||
{
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Models.Location;
|
||||
using RequestProvider;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Location
|
||||
{
|
||||
public class LocationService : ILocationService
|
||||
{
|
||||
private readonly IRequestProvider _requestProvider;
|
||||
@ -14,14 +13,11 @@
|
||||
_requestProvider = requestProvider;
|
||||
}
|
||||
|
||||
public async Task UpdateUserLocation(Location newLocReq, string token)
|
||||
public async Task UpdateUserLocation(eShopOnContainers.Core.Models.Location.Location newLocReq, string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.LocationEndpoint);
|
||||
|
||||
builder.Path = "api/v1/locations";
|
||||
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
builder.Path = "/mobilemarketingapigw/api/v1/l/locations";
|
||||
string uri = builder.ToString();
|
||||
|
||||
await _requestProvider.PostAsync(uri, newLocReq, token);
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
using System;
|
||||
using eShopOnContainers.Core.Models.Marketing;
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Threading.Tasks;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Xamarin.Forms;
|
||||
using eShopOnContainers.Core.Models.Marketing;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Marketing
|
||||
{
|
||||
@ -38,13 +38,13 @@ namespace eShopOnContainers.Core.Services.Marketing
|
||||
|
||||
public async Task<ObservableCollection<CampaignItem>> GetAllCampaignsAsync(string token)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
return _mockCampaign;
|
||||
}
|
||||
|
||||
public async Task<CampaignItem> GetCampaignByIdAsync(int campaignId, string token)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
return _mockCampaign.SingleOrDefault(c => c.Id == campaignId);
|
||||
}
|
||||
}
|
||||
|
@ -1,37 +1,37 @@
|
||||
using System;
|
||||
using eShopOnContainers.Core.Extensions;
|
||||
using eShopOnContainers.Core.Models.Marketing;
|
||||
using eShopOnContainers.Core.Services.FixUri;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Models.Marketing;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using eShopOnContainers.Core.Extensions;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Marketing
|
||||
{
|
||||
public class CampaignService : ICampaignService
|
||||
{
|
||||
private readonly IRequestProvider _requestProvider;
|
||||
private readonly IFixUriService _fixUriService;
|
||||
|
||||
public CampaignService(IRequestProvider requestProvider)
|
||||
private const string ApiUrlBase = "mobilemarketingapigw/api/v1/m/campaigns";
|
||||
|
||||
public CampaignService(IRequestProvider requestProvider, IFixUriService fixUriService)
|
||||
{
|
||||
_requestProvider = requestProvider;
|
||||
_fixUriService = fixUriService;
|
||||
}
|
||||
|
||||
public async Task<ObservableCollection<CampaignItem>> GetAllCampaignsAsync(string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.MarketingEndpoint);
|
||||
|
||||
builder.Path = "api/v1/campaigns/user";
|
||||
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/user";
|
||||
string uri = builder.ToString();
|
||||
|
||||
CampaignRoot campaign =
|
||||
await _requestProvider.GetAsync<CampaignRoot>(uri, token);
|
||||
CampaignRoot campaign = await _requestProvider.GetAsync<CampaignRoot>(uri, token);
|
||||
|
||||
if (campaign?.Data != null)
|
||||
{
|
||||
ServicesHelper.FixCampaignItemPictureUri(campaign?.Data);
|
||||
|
||||
_fixUriService.FixCampaignItemPictureUri(campaign?.Data);
|
||||
return campaign?.Data.ToObservableCollection();
|
||||
}
|
||||
|
||||
@ -40,12 +40,9 @@ namespace eShopOnContainers.Core.Services.Marketing
|
||||
|
||||
public async Task<CampaignItem> GetCampaignByIdAsync(int campaignId, string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.MarketingEndpoint);
|
||||
|
||||
builder.Path = $"api/v1/campaigns/{campaignId}";
|
||||
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
builder.Path = $"{ApiUrlBase}/{campaignId}";
|
||||
string uri = builder.ToString();
|
||||
|
||||
return await _requestProvider.GetAsync<CampaignItem>(uri, token);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using eShopOnContainers.Core.Models.Marketing;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Models.Marketing;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Marketing
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using eShopOnContainers.Core.Services.Settings;
|
||||
using eShopOnContainers.Core.ViewModels;
|
||||
using eShopOnContainers.Core.Views;
|
||||
using eShopOnContainers.Core.ViewModels.Base;
|
||||
using eShopOnContainers.Core.Views;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
@ -12,19 +12,26 @@ namespace eShopOnContainers.Services
|
||||
{
|
||||
public class NavigationService : INavigationService
|
||||
{
|
||||
public ViewModelBase PreviousPageViewModel
|
||||
{
|
||||
get
|
||||
{
|
||||
var mainPage = Application.Current.MainPage as CustomNavigationView;
|
||||
var viewModel = mainPage.Navigation.NavigationStack[mainPage.Navigation.NavigationStack.Count - 2].BindingContext;
|
||||
return viewModel as ViewModelBase;
|
||||
}
|
||||
}
|
||||
private readonly ISettingsService _settingsService;
|
||||
|
||||
public ViewModelBase PreviousPageViewModel
|
||||
{
|
||||
get
|
||||
{
|
||||
var mainPage = Application.Current.MainPage as CustomNavigationView;
|
||||
var viewModel = mainPage.Navigation.NavigationStack[mainPage.Navigation.NavigationStack.Count - 2].BindingContext;
|
||||
return viewModel as ViewModelBase;
|
||||
}
|
||||
}
|
||||
|
||||
public NavigationService(ISettingsService settingsService)
|
||||
{
|
||||
_settingsService = settingsService;
|
||||
}
|
||||
|
||||
public Task InitializeAsync()
|
||||
{
|
||||
if(string.IsNullOrEmpty(Settings.AuthAccessToken))
|
||||
if (string.IsNullOrEmpty(_settingsService.AuthAccessToken))
|
||||
return NavigateToAsync<LoginViewModel>();
|
||||
else
|
||||
return NavigateToAsync<MainViewModel>();
|
||||
@ -78,7 +85,7 @@ namespace eShopOnContainers.Services
|
||||
Application.Current.MainPage = new CustomNavigationView(page);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
var navigationPage = Application.Current.MainPage as CustomNavigationView;
|
||||
if (navigationPage != null)
|
||||
{
|
||||
@ -93,25 +100,25 @@ namespace eShopOnContainers.Services
|
||||
await (page.BindingContext as ViewModelBase).InitializeAsync(parameter);
|
||||
}
|
||||
|
||||
private Type GetPageTypeForViewModel(Type viewModelType)
|
||||
{
|
||||
var viewName = viewModelType.FullName.Replace("Model", string.Empty);
|
||||
var viewModelAssemblyName = viewModelType.GetTypeInfo().Assembly.FullName;
|
||||
var viewAssemblyName = string.Format(CultureInfo.InvariantCulture, "{0}, {1}", viewName, viewModelAssemblyName);
|
||||
var viewType = Type.GetType(viewAssemblyName);
|
||||
return viewType;
|
||||
}
|
||||
private Type GetPageTypeForViewModel(Type viewModelType)
|
||||
{
|
||||
var viewName = viewModelType.FullName.Replace("Model", string.Empty);
|
||||
var viewModelAssemblyName = viewModelType.GetTypeInfo().Assembly.FullName;
|
||||
var viewAssemblyName = string.Format(CultureInfo.InvariantCulture, "{0}, {1}", viewName, viewModelAssemblyName);
|
||||
var viewType = Type.GetType(viewAssemblyName);
|
||||
return viewType;
|
||||
}
|
||||
|
||||
private Page CreatePage(Type viewModelType, object parameter)
|
||||
{
|
||||
Type pageType = GetPageTypeForViewModel(viewModelType);
|
||||
if (pageType == null)
|
||||
{
|
||||
throw new Exception($"Cannot locate page type for {viewModelType}");
|
||||
}
|
||||
private Page CreatePage(Type viewModelType, object parameter)
|
||||
{
|
||||
Type pageType = GetPageTypeForViewModel(viewModelType);
|
||||
if (pageType == null)
|
||||
{
|
||||
throw new Exception($"Cannot locate page type for {viewModelType}");
|
||||
}
|
||||
|
||||
Page page = Activator.CreateInstance(pageType) as Page;
|
||||
return page;
|
||||
}
|
||||
Page page = Activator.CreateInstance(pageType) as Page;
|
||||
return page;
|
||||
}
|
||||
}
|
||||
}
|
@ -2,7 +2,6 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Order
|
||||
{
|
||||
public interface IOrderService
|
||||
|
@ -74,7 +74,7 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
|
||||
public async Task<ObservableCollection<Models.Orders.Order>> GetOrdersAsync(string token)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
if (!string.IsNullOrEmpty(token))
|
||||
{
|
||||
@ -88,7 +88,7 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
|
||||
public async Task<Models.Orders.Order> GetOrderAsync(int orderId, string token)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
if (!string.IsNullOrEmpty(token))
|
||||
return MockOrders
|
||||
@ -99,7 +99,7 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
|
||||
public async Task CreateOrderAsync(Models.Orders.Order newOrder, string token)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
await Task.Delay(10);
|
||||
|
||||
if (!string.IsNullOrEmpty(token))
|
||||
{
|
||||
|
@ -1,10 +1,9 @@
|
||||
using eShopOnContainers.Core.Models.Basket;
|
||||
using eShopOnContainers.Core.Models.Orders;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Models.Orders;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Order
|
||||
{
|
||||
@ -12,6 +11,8 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
{
|
||||
private readonly IRequestProvider _requestProvider;
|
||||
|
||||
private const string ApiUrlBase = "mobileshoppingapigw/api/v1/o/orders";
|
||||
|
||||
public OrderService(IRequestProvider requestProvider)
|
||||
{
|
||||
_requestProvider = requestProvider;
|
||||
@ -24,9 +25,9 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
|
||||
public async Task<ObservableCollection<Models.Orders.Order>> GetOrdersAsync(string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint);
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
|
||||
builder.Path = "api/v1/orders";
|
||||
builder.Path = ApiUrlBase;
|
||||
|
||||
string uri = builder.ToString();
|
||||
|
||||
@ -41,9 +42,9 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
{
|
||||
try
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint);
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
|
||||
builder.Path = string.Format("api/v1/orders/{0}", orderId);
|
||||
builder.Path = $"{ApiUrlBase}/{orderId}";
|
||||
|
||||
string uri = builder.ToString();
|
||||
|
||||
@ -77,9 +78,9 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
|
||||
public async Task<bool> CancelOrderAsync(int orderId, string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint);
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BaseEndpoint);
|
||||
|
||||
builder.Path = "api/v1/orders/cancel";
|
||||
builder.Path = $"{ApiUrlBase}/cancel";
|
||||
|
||||
var cancelOrderCommand = new CancelOrderCommand(orderId);
|
||||
|
||||
|
@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Models.Permissions;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Permissions
|
||||
{
|
||||
public interface IPermissionsService
|
||||
{
|
||||
Task<PermissionStatus> CheckPermissionStatusAsync(Permission permission);
|
||||
Task<Dictionary<Permission, PermissionStatus>> RequestPermissionsAsync(params Permission[] permissions);
|
||||
}
|
||||
}
|
@ -1,9 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.RequestProvider
|
||||
{
|
||||
|
@ -2,11 +2,11 @@
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Threading.Tasks;
|
||||
using System;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.RequestProvider
|
||||
{
|
||||
|
@ -0,0 +1,14 @@
|
||||
namespace eShopOnContainers.Core.Services.Settings
|
||||
{
|
||||
public interface ISettingsService
|
||||
{
|
||||
string AuthAccessToken { get; set; }
|
||||
string AuthIdToken { get; set; }
|
||||
bool UseMocks { get; set; }
|
||||
string UrlBase { get; set; }
|
||||
bool UseFakeLocation { get; set; }
|
||||
string Latitude { get; set; }
|
||||
string Longitude { get; set; }
|
||||
bool AllowGpsLocation { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
namespace eShopOnContainers.Core.Services.Settings
|
||||
{
|
||||
public interface ISettingsServiceImplementation
|
||||
{
|
||||
bool GetValueOrDefault(string key, bool defaultValue);
|
||||
string GetValueOrDefault(string key, string defaultValue);
|
||||
|
||||
bool AddOrUpdateValue(string key, bool value);
|
||||
bool AddOrUpdateValue(string key, string value);
|
||||
|
||||
void Remove(string key);
|
||||
}
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
using eShopOnContainers.Core.Services.Dependency;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Settings
|
||||
{
|
||||
public class SettingsService : ISettingsService
|
||||
{
|
||||
private readonly ISettingsServiceImplementation _settingsService;
|
||||
|
||||
ISettingsServiceImplementation AppSettings
|
||||
{
|
||||
get { return _settingsService; }
|
||||
}
|
||||
|
||||
public SettingsService(IDependencyService dependencyService)
|
||||
{
|
||||
_settingsService = dependencyService.Get<ISettingsServiceImplementation>();
|
||||
}
|
||||
|
||||
#region Setting Constants
|
||||
|
||||
private const string AccessToken = "access_token";
|
||||
private const string IdToken = "id_token";
|
||||
private const string IdUseMocks = "use_mocks";
|
||||
private const string IdUrlBase = "url_base";
|
||||
private const string IdUseFakeLocation = "use_fake_location";
|
||||
private const string IdLatitude = "latitude";
|
||||
private const string IdLongitude = "longitude";
|
||||
private const string IdAllowGpsLocation = "allow_gps_location";
|
||||
private readonly string AccessTokenDefault = string.Empty;
|
||||
private readonly string IdTokenDefault = string.Empty;
|
||||
private readonly bool UseMocksDefault = true;
|
||||
private readonly bool UseFakeLocationDefault = false;
|
||||
private readonly bool AllowGpsLocationDefault = false;
|
||||
private readonly double FakeLatitudeDefault = 47.604610d;
|
||||
private readonly double FakeLongitudeDefault = -122.315752d;
|
||||
private readonly string UrlBaseDefault = GlobalSetting.Instance.BaseEndpoint;
|
||||
|
||||
#endregion
|
||||
|
||||
public string AuthAccessToken
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault(AccessToken, AccessTokenDefault);
|
||||
set => AppSettings.AddOrUpdateValue(AccessToken, value);
|
||||
}
|
||||
|
||||
public string AuthIdToken
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault(IdToken, IdTokenDefault);
|
||||
set => AppSettings.AddOrUpdateValue(IdToken, value);
|
||||
}
|
||||
|
||||
public bool UseMocks
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault(IdUseMocks, UseMocksDefault);
|
||||
set => AppSettings.AddOrUpdateValue(IdUseMocks, value);
|
||||
}
|
||||
|
||||
public string UrlBase
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault(IdUrlBase, UrlBaseDefault);
|
||||
set => AppSettings.AddOrUpdateValue(IdUrlBase, value);
|
||||
}
|
||||
|
||||
public bool UseFakeLocation
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault(IdUseFakeLocation, UseFakeLocationDefault);
|
||||
set => AppSettings.AddOrUpdateValue(IdUseFakeLocation, value);
|
||||
}
|
||||
|
||||
public string Latitude
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault(IdLatitude, FakeLatitudeDefault.ToString());
|
||||
set => AppSettings.AddOrUpdateValue(IdLatitude, value);
|
||||
}
|
||||
|
||||
public string Longitude
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault(IdLongitude, FakeLongitudeDefault.ToString());
|
||||
set => AppSettings.AddOrUpdateValue(IdLongitude, value);
|
||||
}
|
||||
|
||||
public bool AllowGpsLocation
|
||||
{
|
||||
get => AppSettings.GetValueOrDefault(IdAllowGpsLocation, AllowGpsLocationDefault);
|
||||
set => AppSettings.AddOrUpdateValue(IdAllowGpsLocation, value);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
using System;
|
||||
using eShopOnContainers.Core.Models.User;
|
||||
using eShopOnContainers.Core.Models.User;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.User
|
||||
@ -28,8 +28,7 @@ namespace eShopOnContainers.Core.Services.User
|
||||
|
||||
public async Task<UserInfo> GetUserInfoAsync(string authToken)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
|
||||
await Task.Delay(10);
|
||||
return MockUserInfo;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using eShopOnContainers.Core.Models.User;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using eShopOnContainers.Core.Models.User;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.User
|
||||
{
|
||||
@ -17,12 +17,8 @@ namespace eShopOnContainers.Core.Services.User
|
||||
public async Task<UserInfo> GetUserInfoAsync(string authToken)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.UserInfoEndpoint);
|
||||
|
||||
string uri = builder.ToString();
|
||||
|
||||
var userInfo =
|
||||
await _requestProvider.GetAsync<UserInfo>(uri, authToken);
|
||||
|
||||
var userInfo = await _requestProvider.GetAsync<UserInfo>(uri, authToken);
|
||||
return userInfo;
|
||||
}
|
||||
}
|
||||
|
4303
src/Mobile/eShopOnContainers/eShopOnContainers.Core/TinyIoC/TinyIoC.cs
Executable file
@ -1,4 +1,4 @@
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
using eShopOnContainers.Core.Services.Settings;
|
||||
using eShopOnContainers.Services;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@ -29,7 +29,7 @@ namespace eShopOnContainers.Core.ViewModels.Base
|
||||
{
|
||||
DialogService = ViewModelLocator.Resolve<IDialogService>();
|
||||
NavigationService = ViewModelLocator.Resolve<INavigationService>();
|
||||
GlobalSetting.Instance.BaseEndpoint = Settings.UrlBase;
|
||||
GlobalSetting.Instance.BaseEndpoint = ViewModelLocator.Resolve<ISettingsService>().UrlBase;
|
||||
}
|
||||
|
||||
public virtual Task InitializeAsync(object navigationData)
|
||||
|
@ -1,117 +1,131 @@
|
||||
using Autofac;
|
||||
using eShopOnContainers.Core.Services.Basket;
|
||||
using eShopOnContainers.Core.Services.Catalog;
|
||||
using eShopOnContainers.Core.Services.Dependency;
|
||||
using eShopOnContainers.Core.Services.FixUri;
|
||||
using eShopOnContainers.Core.Services.Identity;
|
||||
using eShopOnContainers.Core.Services.Location;
|
||||
using eShopOnContainers.Core.Services.Marketing;
|
||||
using eShopOnContainers.Core.Services.OpenUrl;
|
||||
using eShopOnContainers.Core.Services.Order;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using eShopOnContainers.Core.Services.Settings;
|
||||
using eShopOnContainers.Core.Services.User;
|
||||
using eShopOnContainers.Services;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using eShopOnContainers.Core.Services.Catalog;
|
||||
using eShopOnContainers.Core.Services.OpenUrl;
|
||||
using eShopOnContainers.Core.Services.RequestProvider;
|
||||
using eShopOnContainers.Core.Services.Basket;
|
||||
using eShopOnContainers.Core.Services.Identity;
|
||||
using eShopOnContainers.Core.Services.Order;
|
||||
using eShopOnContainers.Core.Services.User;
|
||||
using TinyIoC;
|
||||
using Xamarin.Forms;
|
||||
using eShopOnContainers.Core.Services.Location;
|
||||
using eShopOnContainers.Core.Services.Marketing;
|
||||
|
||||
namespace eShopOnContainers.Core.ViewModels.Base
|
||||
{
|
||||
public static class ViewModelLocator
|
||||
{
|
||||
private static IContainer _container;
|
||||
private static TinyIoCContainer _container;
|
||||
|
||||
public static readonly BindableProperty AutoWireViewModelProperty =
|
||||
BindableProperty.CreateAttached("AutoWireViewModel", typeof(bool), typeof(ViewModelLocator), default(bool), propertyChanged: OnAutoWireViewModelChanged);
|
||||
public static readonly BindableProperty AutoWireViewModelProperty =
|
||||
BindableProperty.CreateAttached("AutoWireViewModel", typeof(bool), typeof(ViewModelLocator), default(bool), propertyChanged: OnAutoWireViewModelChanged);
|
||||
|
||||
public static bool GetAutoWireViewModel(BindableObject bindable)
|
||||
{
|
||||
return (bool)bindable.GetValue(ViewModelLocator.AutoWireViewModelProperty);
|
||||
}
|
||||
public static bool GetAutoWireViewModel(BindableObject bindable)
|
||||
{
|
||||
return (bool)bindable.GetValue(ViewModelLocator.AutoWireViewModelProperty);
|
||||
}
|
||||
|
||||
public static void SetAutoWireViewModel(BindableObject bindable, bool value)
|
||||
{
|
||||
bindable.SetValue(ViewModelLocator.AutoWireViewModelProperty, value);
|
||||
}
|
||||
public static void SetAutoWireViewModel(BindableObject bindable, bool value)
|
||||
{
|
||||
bindable.SetValue(ViewModelLocator.AutoWireViewModelProperty, value);
|
||||
}
|
||||
|
||||
public static bool UseMockService { get; set; }
|
||||
public static bool UseMockService { get; set; }
|
||||
|
||||
public static void RegisterDependencies(bool useMockServices)
|
||||
{
|
||||
var builder = new ContainerBuilder();
|
||||
static ViewModelLocator()
|
||||
{
|
||||
_container = new TinyIoCContainer();
|
||||
|
||||
// View models
|
||||
builder.RegisterType<BasketViewModel>();
|
||||
builder.RegisterType<CatalogViewModel>();
|
||||
builder.RegisterType<CheckoutViewModel>();
|
||||
builder.RegisterType<LoginViewModel>();
|
||||
builder.RegisterType<MainViewModel>();
|
||||
builder.RegisterType<OrderDetailViewModel>();
|
||||
builder.RegisterType<ProfileViewModel>();
|
||||
builder.RegisterType<SettingsViewModel>();
|
||||
builder.RegisterType<CampaignViewModel>();
|
||||
builder.RegisterType<CampaignDetailsViewModel>();
|
||||
// View models - by default, TinyIoC will register concrete classes as multi-instance.
|
||||
_container.Register<BasketViewModel>();
|
||||
_container.Register<CatalogViewModel>();
|
||||
_container.Register<CheckoutViewModel>();
|
||||
_container.Register<LoginViewModel>();
|
||||
_container.Register<MainViewModel>();
|
||||
_container.Register<OrderDetailViewModel>();
|
||||
_container.Register<ProfileViewModel>();
|
||||
_container.Register<SettingsViewModel>();
|
||||
_container.Register<CampaignViewModel>();
|
||||
_container.Register<CampaignDetailsViewModel>();
|
||||
|
||||
// Services
|
||||
builder.RegisterType<NavigationService>().As<INavigationService>().SingleInstance();
|
||||
builder.RegisterType<DialogService>().As<IDialogService>();
|
||||
builder.RegisterType<OpenUrlService>().As<IOpenUrlService>();
|
||||
builder.RegisterType<IdentityService>().As<IIdentityService>();
|
||||
builder.RegisterType<RequestProvider>().As<IRequestProvider>();
|
||||
builder.RegisterType<LocationService>().As<ILocationService>().SingleInstance();
|
||||
// Services - by default, TinyIoC will register interface registrations as singletons.
|
||||
_container.Register<INavigationService, NavigationService>();
|
||||
_container.Register<IDialogService, DialogService>();
|
||||
_container.Register<IOpenUrlService, OpenUrlService>();
|
||||
_container.Register<IIdentityService, IdentityService>();
|
||||
_container.Register<IRequestProvider, RequestProvider>();
|
||||
_container.Register<IDependencyService, Services.Dependency.DependencyService>();
|
||||
_container.Register<ISettingsService, SettingsService>();
|
||||
_container.Register<IFixUriService, FixUriService>();
|
||||
_container.Register<ILocationService, LocationService>();
|
||||
_container.Register<ICatalogService, CatalogMockService>();
|
||||
_container.Register<IBasketService, BasketMockService>();
|
||||
_container.Register<IOrderService, OrderMockService>();
|
||||
_container.Register<IUserService, UserMockService>();
|
||||
_container.Register<ICampaignService, CampaignMockService>();
|
||||
}
|
||||
|
||||
public static void UpdateDependencies(bool useMockServices)
|
||||
{
|
||||
// Change injected dependencies
|
||||
if (useMockServices)
|
||||
{
|
||||
builder.RegisterInstance(new CatalogMockService()).As<ICatalogService>();
|
||||
builder.RegisterInstance(new BasketMockService()).As<IBasketService>();
|
||||
builder.RegisterInstance(new OrderMockService()).As<IOrderService>();
|
||||
builder.RegisterInstance(new UserMockService()).As<IUserService>();
|
||||
builder.RegisterInstance(new CampaignMockService()).As<ICampaignService>();
|
||||
{
|
||||
_container.Register<ICatalogService, CatalogMockService>();
|
||||
_container.Register<IBasketService, BasketMockService>();
|
||||
_container.Register<IOrderService, OrderMockService>();
|
||||
_container.Register<IUserService, UserMockService>();
|
||||
_container.Register<ICampaignService, CampaignMockService>();
|
||||
|
||||
UseMockService = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.RegisterType<CatalogService>().As<ICatalogService>().SingleInstance();
|
||||
builder.RegisterType<BasketService>().As<IBasketService>().SingleInstance();
|
||||
builder.RegisterType<OrderService>().As<IOrderService>().SingleInstance();
|
||||
builder.RegisterType<UserService>().As<IUserService>().SingleInstance();
|
||||
builder.RegisterType<CampaignService>().As<ICampaignService>().SingleInstance();
|
||||
}
|
||||
else
|
||||
{
|
||||
_container.Register<ICatalogService, CatalogService>();
|
||||
_container.Register<IBasketService, BasketService>();
|
||||
_container.Register<IOrderService, OrderService>();
|
||||
_container.Register<IUserService, UserService>();
|
||||
_container.Register<ICampaignService, CampaignService>();
|
||||
|
||||
UseMockService = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_container != null)
|
||||
{
|
||||
_container.Dispose();
|
||||
}
|
||||
_container = builder.Build();
|
||||
}
|
||||
public static void RegisterSingleton<TInterface, T>() where TInterface : class where T : class, TInterface
|
||||
{
|
||||
_container.Register<TInterface, T>().AsSingleton();
|
||||
}
|
||||
|
||||
public static T Resolve<T>()
|
||||
{
|
||||
return _container.Resolve<T>();
|
||||
}
|
||||
public static T Resolve<T>() where T : class
|
||||
{
|
||||
return _container.Resolve<T>();
|
||||
}
|
||||
|
||||
private static void OnAutoWireViewModelChanged(BindableObject bindable, object oldValue, object newValue)
|
||||
{
|
||||
var view = bindable as Element;
|
||||
if (view == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
private static void OnAutoWireViewModelChanged(BindableObject bindable, object oldValue, object newValue)
|
||||
{
|
||||
var view = bindable as Element;
|
||||
if (view == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var viewType = view.GetType();
|
||||
var viewName = viewType.FullName.Replace(".Views.", ".ViewModels.");
|
||||
var viewAssemblyName = viewType.GetTypeInfo().Assembly.FullName;
|
||||
var viewModelName = string.Format(CultureInfo.InvariantCulture, "{0}Model, {1}", viewName, viewAssemblyName);
|
||||
var viewType = view.GetType();
|
||||
var viewName = viewType.FullName.Replace(".Views.", ".ViewModels.");
|
||||
var viewAssemblyName = viewType.GetTypeInfo().Assembly.FullName;
|
||||
var viewModelName = string.Format(CultureInfo.InvariantCulture, "{0}Model, {1}", viewName, viewAssemblyName);
|
||||
|
||||
var viewModelType = Type.GetType(viewModelName);
|
||||
if (viewModelType == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var viewModel = _container.Resolve(viewModelType);
|
||||
view.BindingContext = viewModel;
|
||||
}
|
||||
}
|
||||
var viewModelType = Type.GetType(viewModelName);
|
||||
if (viewModelType == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var viewModel = _container.Resolve(viewModelType);
|
||||
view.BindingContext = viewModel;
|
||||
}
|
||||
}
|
||||
}
|