diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml
index e03432228..79ef2a10e 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/ApplicationManifest.xml
@@ -16,7 +16,6 @@
-
@@ -86,33 +85,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -122,15 +94,6 @@
-
-
-
-
-
-
-
-
-
@@ -190,32 +153,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml
index 799704e9c..d67ae028d 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/BasketApiPkg/ServiceManifest.xml
@@ -24,7 +24,7 @@
-
+
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml
index d0898aa17..88a44bf5c 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/CatalogApiPkg/ServiceManifest.xml
@@ -23,7 +23,7 @@
-
+
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml
index 7a8f3a68b..5c01dd68b 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/LocationsApiPkg/ServiceManifest.xml
@@ -25,7 +25,7 @@
-
+
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml
index 866976819..8b022545c 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/MarketingApiPkg/ServiceManifest.xml
@@ -22,8 +22,8 @@
-
+
+
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml
index 44270b13d..1ddc3ce4d 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/OrderingApiPkg/ServiceManifest.xml
@@ -24,7 +24,7 @@
-
+
@@ -45,7 +45,7 @@
-
+
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationParameters/Cloud.xml b/ServiceFabric/eShopOnServiceFabric/ApplicationParameters/Cloud.xml
index 471bd22d9..712f180a1 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationParameters/Cloud.xml
+++ b/ServiceFabric/eShopOnServiceFabric/ApplicationParameters/Cloud.xml
@@ -8,12 +8,8 @@
-
-
-
-
diff --git a/ServiceFabric/eShopOnServiceFabric/PublishProfiles/Cloud.xml b/ServiceFabric/eShopOnServiceFabric/PublishProfiles/Cloud.xml
index 5daeaca59..26804a1fe 100644
--- a/ServiceFabric/eShopOnServiceFabric/PublishProfiles/Cloud.xml
+++ b/ServiceFabric/eShopOnServiceFabric/PublishProfiles/Cloud.xml
@@ -20,6 +20,6 @@
AzureActiveDirectory="true"
ServerCertThumbprint="0123456789012345678901234567890123456789" />
-->
-
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabric/eShopOnServiceFabric.sfproj b/ServiceFabric/eShopOnServiceFabric/eShopOnServiceFabric.sfproj
index cb52adafc..9dd120b9e 100644
--- a/ServiceFabric/eShopOnServiceFabric/eShopOnServiceFabric.sfproj
+++ b/ServiceFabric/eShopOnServiceFabric/eShopOnServiceFabric.sfproj
@@ -34,8 +34,6 @@
-
-
@@ -50,12 +48,6 @@
-
-
-
-
-
-
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml
new file mode 100644
index 000000000..4dc9c515a
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/ApplicationManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml
similarity index 100%
rename from ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml
rename to ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/Config/Settings.xml
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml
similarity index 83%
rename from ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml
rename to ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml
index d9554eed0..7ce014a27 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationPackageRoot/IdentityApiPkg/ServiceManifest.xml
@@ -19,20 +19,21 @@
+
-
-
-
+
+
-
+
+
-
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml
new file mode 100644
index 000000000..b8c621447
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Cloud.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml
new file mode 100644
index 000000000..e8623180a
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.1Node.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml
new file mode 100644
index 000000000..e8623180a
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/ApplicationParameters/Local.5Node.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml
new file mode 100644
index 000000000..26804a1fe
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Cloud.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml
new file mode 100644
index 000000000..6e1403e96
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.1Node.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml
new file mode 100644
index 000000000..f42d759c3
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/PublishProfiles/Local.5Node.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1
new file mode 100644
index 000000000..2897b10e8
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/Scripts/Deploy-FabricApplication.ps1
@@ -0,0 +1,258 @@
+<#
+.SYNOPSIS
+Deploys a Service Fabric application type to a cluster.
+
+.DESCRIPTION
+This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project.
+
+.NOTES
+WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary.
+
+.PARAMETER PublishProfileFile
+Path to the file containing the publish profile.
+
+.PARAMETER ApplicationPackagePath
+Path to the folder of the packaged Service Fabric application.
+
+.PARAMETER DeployOnly
+Indicates that the Service Fabric application should not be created or upgraded after registering the application type.
+
+.PARAMETER ApplicationParameter
+Hashtable of the Service Fabric application parameters to be used for the application.
+
+.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade
+Indicates whether to unregister any unused application versions that exist after an upgrade is finished.
+
+.PARAMETER OverrideUpgradeBehavior
+Indicates the behavior used to override the upgrade settings specified by the publish profile.
+'None' indicates that the upgrade settings will not be overridden.
+'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile.
+'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile.
+
+.PARAMETER UseExistingClusterConnection
+Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored.
+
+.PARAMETER OverwriteBehavior
+Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application.
+'Never' will not remove the existing application. This is the default behavior.
+'Always' will remove the existing application even if its Application type and Version is different from the application being created.
+'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created.
+
+.PARAMETER SkipPackageValidation
+Switch signaling whether the package should be validated or not before deployment.
+
+.PARAMETER SecurityToken
+A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory.
+
+.PARAMETER CopyPackageTimeoutSec
+Timeout in seconds for copying application package to image store.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug'
+
+Deploy the application using the default package location for a Debug build.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication
+
+Deploy the application but do not create the application instance.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'}
+
+Deploy the application by providing values for parameters that are defined in the application manifest.
+#>
+
+Param
+(
+ [String]
+ $PublishProfileFile,
+
+ [String]
+ $ApplicationPackagePath,
+
+ [Switch]
+ $DeployOnly,
+
+ [Hashtable]
+ $ApplicationParameter,
+
+ [Boolean]
+ $UnregisterUnusedApplicationVersionsAfterUpgrade,
+
+ [String]
+ [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')]
+ $OverrideUpgradeBehavior = 'None',
+
+ [Switch]
+ $UseExistingClusterConnection,
+
+ [String]
+ [ValidateSet('Never','Always','SameAppTypeAndVersion')]
+ $OverwriteBehavior = 'Never',
+
+ [Switch]
+ $SkipPackageValidation,
+
+ [String]
+ $SecurityToken,
+
+ [int]
+ $CopyPackageTimeoutSec
+)
+
+function Read-XmlElementAsHashtable
+{
+ Param (
+ [System.Xml.XmlElement]
+ $Element
+ )
+
+ $hashtable = @{}
+ if ($Element.Attributes)
+ {
+ $Element.Attributes |
+ ForEach-Object {
+ $boolVal = $null
+ if ([bool]::TryParse($_.Value, [ref]$boolVal)) {
+ $hashtable[$_.Name] = $boolVal
+ }
+ else {
+ $hashtable[$_.Name] = $_.Value
+ }
+ }
+ }
+
+ return $hashtable
+}
+
+function Read-PublishProfile
+{
+ Param (
+ [ValidateScript({Test-Path $_ -PathType Leaf})]
+ [String]
+ $PublishProfileFile
+ )
+
+ $publishProfileXml = [Xml] (Get-Content $PublishProfileFile)
+ $publishProfile = @{}
+
+ $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters")
+ $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment")
+ $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters")
+
+ if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment"))
+ {
+ $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters")
+ if ($publishProfile.UpgradeDeployment["Mode"])
+ {
+ $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true
+ }
+ }
+
+ $publishProfileFolder = (Split-Path $PublishProfileFile)
+ $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path)
+
+ return $publishProfile
+}
+
+$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path)
+
+if (!$PublishProfileFile)
+{
+ $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml"
+}
+
+if (!$ApplicationPackagePath)
+{
+ $ApplicationPackagePath = "$LocalFolder\..\pkg\Release"
+}
+
+$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath
+
+$publishProfile = Read-PublishProfile $PublishProfileFile
+
+if (-not $UseExistingClusterConnection)
+{
+ $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters
+ if ($SecurityToken)
+ {
+ $ClusterConnectionParameters["SecurityToken"] = $SecurityToken
+ }
+
+ try
+ {
+ [void](Connect-ServiceFabricCluster @ClusterConnectionParameters)
+ }
+ catch [System.Fabric.FabricObjectClosedException]
+ {
+ Write-Warning "Service Fabric cluster may not be connected."
+ throw
+ }
+}
+
+$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK"
+$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath
+Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1"
+
+$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade'
+
+$PublishParameters = @{
+ 'ApplicationPackagePath' = $ApplicationPackagePath
+ 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile
+ 'ApplicationParameter' = $ApplicationParameter
+ 'ErrorAction' = 'Stop'
+}
+
+if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec)
+{
+ $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec
+}
+
+if ($publishProfile.CopyPackageParameters.CompressPackage)
+{
+ $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage
+}
+
+# CopyPackageTimeoutSec parameter overrides the value from the publish profile
+if ($CopyPackageTimeoutSec)
+{
+ $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec
+}
+
+if ($IsUpgrade)
+{
+ $Action = "RegisterAndUpgrade"
+ if ($DeployOnly)
+ {
+ $Action = "Register"
+ }
+
+ $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters
+
+ if ($OverrideUpgradeBehavior -eq 'ForceUpgrade')
+ {
+ # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior.
+ $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true }
+ }
+
+ $PublishParameters['Action'] = $Action
+ $PublishParameters['UpgradeParameters'] = $UpgradeParameters
+ $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade
+
+ Publish-UpgradedServiceFabricApplication @PublishParameters
+}
+else
+{
+ $Action = "RegisterAndCreate"
+ if ($DeployOnly)
+ {
+ $Action = "Register"
+ }
+
+ $PublishParameters['Action'] = $Action
+ $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior
+ $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation
+
+ Publish-NewServiceFabricApplication @PublishParameters
+}
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj
new file mode 100644
index 000000000..a109faa28
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv.sfproj
@@ -0,0 +1,46 @@
+
+
+
+
+ 39b54901-d57d-416e-b51e-33c4017ca464
+ 1.7
+ 1.5
+ 1.6
+ v4.6.1
+
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config
new file mode 100644
index 000000000..3dc0a332b
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricIdSrv/eShopOnServiceFabricIdSrv/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml
new file mode 100644
index 000000000..8953cb000
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/ApplicationManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml
similarity index 100%
rename from ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml
rename to ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/Config/Settings.xml
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml
similarity index 89%
rename from ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml
rename to ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml
index 6eddc8c54..210bebe9e 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationPackageRoot/WebMVCPkg/ServiceManifest.xml
@@ -22,12 +22,11 @@
-
-
-
+
+
@@ -40,7 +39,7 @@
-
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml
new file mode 100644
index 000000000..81f48e8f9
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Cloud.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml
new file mode 100644
index 000000000..1d59af5a6
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.1Node.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml
new file mode 100644
index 000000000..1d59af5a6
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/ApplicationParameters/Local.5Node.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml
new file mode 100644
index 000000000..26804a1fe
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Cloud.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml
new file mode 100644
index 000000000..6e1403e96
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.1Node.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml
new file mode 100644
index 000000000..f42d759c3
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/PublishProfiles/Local.5Node.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1
new file mode 100644
index 000000000..2897b10e8
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/Scripts/Deploy-FabricApplication.ps1
@@ -0,0 +1,258 @@
+<#
+.SYNOPSIS
+Deploys a Service Fabric application type to a cluster.
+
+.DESCRIPTION
+This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project.
+
+.NOTES
+WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary.
+
+.PARAMETER PublishProfileFile
+Path to the file containing the publish profile.
+
+.PARAMETER ApplicationPackagePath
+Path to the folder of the packaged Service Fabric application.
+
+.PARAMETER DeployOnly
+Indicates that the Service Fabric application should not be created or upgraded after registering the application type.
+
+.PARAMETER ApplicationParameter
+Hashtable of the Service Fabric application parameters to be used for the application.
+
+.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade
+Indicates whether to unregister any unused application versions that exist after an upgrade is finished.
+
+.PARAMETER OverrideUpgradeBehavior
+Indicates the behavior used to override the upgrade settings specified by the publish profile.
+'None' indicates that the upgrade settings will not be overridden.
+'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile.
+'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile.
+
+.PARAMETER UseExistingClusterConnection
+Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored.
+
+.PARAMETER OverwriteBehavior
+Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application.
+'Never' will not remove the existing application. This is the default behavior.
+'Always' will remove the existing application even if its Application type and Version is different from the application being created.
+'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created.
+
+.PARAMETER SkipPackageValidation
+Switch signaling whether the package should be validated or not before deployment.
+
+.PARAMETER SecurityToken
+A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory.
+
+.PARAMETER CopyPackageTimeoutSec
+Timeout in seconds for copying application package to image store.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug'
+
+Deploy the application using the default package location for a Debug build.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication
+
+Deploy the application but do not create the application instance.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'}
+
+Deploy the application by providing values for parameters that are defined in the application manifest.
+#>
+
+Param
+(
+ [String]
+ $PublishProfileFile,
+
+ [String]
+ $ApplicationPackagePath,
+
+ [Switch]
+ $DeployOnly,
+
+ [Hashtable]
+ $ApplicationParameter,
+
+ [Boolean]
+ $UnregisterUnusedApplicationVersionsAfterUpgrade,
+
+ [String]
+ [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')]
+ $OverrideUpgradeBehavior = 'None',
+
+ [Switch]
+ $UseExistingClusterConnection,
+
+ [String]
+ [ValidateSet('Never','Always','SameAppTypeAndVersion')]
+ $OverwriteBehavior = 'Never',
+
+ [Switch]
+ $SkipPackageValidation,
+
+ [String]
+ $SecurityToken,
+
+ [int]
+ $CopyPackageTimeoutSec
+)
+
+function Read-XmlElementAsHashtable
+{
+ Param (
+ [System.Xml.XmlElement]
+ $Element
+ )
+
+ $hashtable = @{}
+ if ($Element.Attributes)
+ {
+ $Element.Attributes |
+ ForEach-Object {
+ $boolVal = $null
+ if ([bool]::TryParse($_.Value, [ref]$boolVal)) {
+ $hashtable[$_.Name] = $boolVal
+ }
+ else {
+ $hashtable[$_.Name] = $_.Value
+ }
+ }
+ }
+
+ return $hashtable
+}
+
+function Read-PublishProfile
+{
+ Param (
+ [ValidateScript({Test-Path $_ -PathType Leaf})]
+ [String]
+ $PublishProfileFile
+ )
+
+ $publishProfileXml = [Xml] (Get-Content $PublishProfileFile)
+ $publishProfile = @{}
+
+ $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters")
+ $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment")
+ $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters")
+
+ if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment"))
+ {
+ $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters")
+ if ($publishProfile.UpgradeDeployment["Mode"])
+ {
+ $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true
+ }
+ }
+
+ $publishProfileFolder = (Split-Path $PublishProfileFile)
+ $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path)
+
+ return $publishProfile
+}
+
+$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path)
+
+if (!$PublishProfileFile)
+{
+ $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml"
+}
+
+if (!$ApplicationPackagePath)
+{
+ $ApplicationPackagePath = "$LocalFolder\..\pkg\Release"
+}
+
+$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath
+
+$publishProfile = Read-PublishProfile $PublishProfileFile
+
+if (-not $UseExistingClusterConnection)
+{
+ $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters
+ if ($SecurityToken)
+ {
+ $ClusterConnectionParameters["SecurityToken"] = $SecurityToken
+ }
+
+ try
+ {
+ [void](Connect-ServiceFabricCluster @ClusterConnectionParameters)
+ }
+ catch [System.Fabric.FabricObjectClosedException]
+ {
+ Write-Warning "Service Fabric cluster may not be connected."
+ throw
+ }
+}
+
+$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK"
+$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath
+Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1"
+
+$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade'
+
+$PublishParameters = @{
+ 'ApplicationPackagePath' = $ApplicationPackagePath
+ 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile
+ 'ApplicationParameter' = $ApplicationParameter
+ 'ErrorAction' = 'Stop'
+}
+
+if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec)
+{
+ $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec
+}
+
+if ($publishProfile.CopyPackageParameters.CompressPackage)
+{
+ $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage
+}
+
+# CopyPackageTimeoutSec parameter overrides the value from the publish profile
+if ($CopyPackageTimeoutSec)
+{
+ $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec
+}
+
+if ($IsUpgrade)
+{
+ $Action = "RegisterAndUpgrade"
+ if ($DeployOnly)
+ {
+ $Action = "Register"
+ }
+
+ $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters
+
+ if ($OverrideUpgradeBehavior -eq 'ForceUpgrade')
+ {
+ # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior.
+ $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true }
+ }
+
+ $PublishParameters['Action'] = $Action
+ $PublishParameters['UpgradeParameters'] = $UpgradeParameters
+ $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade
+
+ Publish-UpgradedServiceFabricApplication @PublishParameters
+}
+else
+{
+ $Action = "RegisterAndCreate"
+ if ($DeployOnly)
+ {
+ $Action = "Register"
+ }
+
+ $PublishParameters['Action'] = $Action
+ $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior
+ $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation
+
+ Publish-NewServiceFabricApplication @PublishParameters
+}
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj
new file mode 100644
index 000000000..3225c22f2
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC.sfproj
@@ -0,0 +1,46 @@
+
+
+
+
+ 0cf895ff-3616-4d1f-8d2e-5d856cdf3612
+ 1.7
+ 1.5
+ 1.6
+ v4.6.1
+
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config
new file mode 100644
index 000000000..3dc0a332b
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebMVC/eShopOnServiceFabricWebMVC/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml
new file mode 100644
index 000000000..cf23a0779
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/ApplicationManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml
similarity index 100%
rename from ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml
rename to ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/Config/Settings.xml
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml
similarity index 83%
rename from ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml
rename to ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml
index 5bf2376d2..c60705576 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationPackageRoot/WebSPAPkg/ServiceManifest.xml
@@ -22,18 +22,17 @@
-
-
-
-
-
+
+
+
+
+
-
@@ -46,7 +45,7 @@
-
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml
new file mode 100644
index 000000000..44b9681b6
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Cloud.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml
new file mode 100644
index 000000000..92fe692c3
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.1Node.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml
new file mode 100644
index 000000000..92fe692c3
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/ApplicationParameters/Local.5Node.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml
new file mode 100644
index 000000000..26804a1fe
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Cloud.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml
new file mode 100644
index 000000000..6e1403e96
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.1Node.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml
new file mode 100644
index 000000000..f42d759c3
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/PublishProfiles/Local.5Node.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1
new file mode 100644
index 000000000..2897b10e8
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/Scripts/Deploy-FabricApplication.ps1
@@ -0,0 +1,258 @@
+<#
+.SYNOPSIS
+Deploys a Service Fabric application type to a cluster.
+
+.DESCRIPTION
+This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project.
+
+.NOTES
+WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary.
+
+.PARAMETER PublishProfileFile
+Path to the file containing the publish profile.
+
+.PARAMETER ApplicationPackagePath
+Path to the folder of the packaged Service Fabric application.
+
+.PARAMETER DeployOnly
+Indicates that the Service Fabric application should not be created or upgraded after registering the application type.
+
+.PARAMETER ApplicationParameter
+Hashtable of the Service Fabric application parameters to be used for the application.
+
+.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade
+Indicates whether to unregister any unused application versions that exist after an upgrade is finished.
+
+.PARAMETER OverrideUpgradeBehavior
+Indicates the behavior used to override the upgrade settings specified by the publish profile.
+'None' indicates that the upgrade settings will not be overridden.
+'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile.
+'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile.
+
+.PARAMETER UseExistingClusterConnection
+Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored.
+
+.PARAMETER OverwriteBehavior
+Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application.
+'Never' will not remove the existing application. This is the default behavior.
+'Always' will remove the existing application even if its Application type and Version is different from the application being created.
+'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created.
+
+.PARAMETER SkipPackageValidation
+Switch signaling whether the package should be validated or not before deployment.
+
+.PARAMETER SecurityToken
+A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory.
+
+.PARAMETER CopyPackageTimeoutSec
+Timeout in seconds for copying application package to image store.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug'
+
+Deploy the application using the default package location for a Debug build.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication
+
+Deploy the application but do not create the application instance.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'}
+
+Deploy the application by providing values for parameters that are defined in the application manifest.
+#>
+
+Param
+(
+ [String]
+ $PublishProfileFile,
+
+ [String]
+ $ApplicationPackagePath,
+
+ [Switch]
+ $DeployOnly,
+
+ [Hashtable]
+ $ApplicationParameter,
+
+ [Boolean]
+ $UnregisterUnusedApplicationVersionsAfterUpgrade,
+
+ [String]
+ [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')]
+ $OverrideUpgradeBehavior = 'None',
+
+ [Switch]
+ $UseExistingClusterConnection,
+
+ [String]
+ [ValidateSet('Never','Always','SameAppTypeAndVersion')]
+ $OverwriteBehavior = 'Never',
+
+ [Switch]
+ $SkipPackageValidation,
+
+ [String]
+ $SecurityToken,
+
+ [int]
+ $CopyPackageTimeoutSec
+)
+
+function Read-XmlElementAsHashtable
+{
+ Param (
+ [System.Xml.XmlElement]
+ $Element
+ )
+
+ $hashtable = @{}
+ if ($Element.Attributes)
+ {
+ $Element.Attributes |
+ ForEach-Object {
+ $boolVal = $null
+ if ([bool]::TryParse($_.Value, [ref]$boolVal)) {
+ $hashtable[$_.Name] = $boolVal
+ }
+ else {
+ $hashtable[$_.Name] = $_.Value
+ }
+ }
+ }
+
+ return $hashtable
+}
+
+function Read-PublishProfile
+{
+ Param (
+ [ValidateScript({Test-Path $_ -PathType Leaf})]
+ [String]
+ $PublishProfileFile
+ )
+
+ $publishProfileXml = [Xml] (Get-Content $PublishProfileFile)
+ $publishProfile = @{}
+
+ $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters")
+ $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment")
+ $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters")
+
+ if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment"))
+ {
+ $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters")
+ if ($publishProfile.UpgradeDeployment["Mode"])
+ {
+ $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true
+ }
+ }
+
+ $publishProfileFolder = (Split-Path $PublishProfileFile)
+ $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path)
+
+ return $publishProfile
+}
+
+$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path)
+
+if (!$PublishProfileFile)
+{
+ $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml"
+}
+
+if (!$ApplicationPackagePath)
+{
+ $ApplicationPackagePath = "$LocalFolder\..\pkg\Release"
+}
+
+$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath
+
+$publishProfile = Read-PublishProfile $PublishProfileFile
+
+if (-not $UseExistingClusterConnection)
+{
+ $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters
+ if ($SecurityToken)
+ {
+ $ClusterConnectionParameters["SecurityToken"] = $SecurityToken
+ }
+
+ try
+ {
+ [void](Connect-ServiceFabricCluster @ClusterConnectionParameters)
+ }
+ catch [System.Fabric.FabricObjectClosedException]
+ {
+ Write-Warning "Service Fabric cluster may not be connected."
+ throw
+ }
+}
+
+$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK"
+$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath
+Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1"
+
+$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade'
+
+$PublishParameters = @{
+ 'ApplicationPackagePath' = $ApplicationPackagePath
+ 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile
+ 'ApplicationParameter' = $ApplicationParameter
+ 'ErrorAction' = 'Stop'
+}
+
+if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec)
+{
+ $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec
+}
+
+if ($publishProfile.CopyPackageParameters.CompressPackage)
+{
+ $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage
+}
+
+# CopyPackageTimeoutSec parameter overrides the value from the publish profile
+if ($CopyPackageTimeoutSec)
+{
+ $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec
+}
+
+if ($IsUpgrade)
+{
+ $Action = "RegisterAndUpgrade"
+ if ($DeployOnly)
+ {
+ $Action = "Register"
+ }
+
+ $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters
+
+ if ($OverrideUpgradeBehavior -eq 'ForceUpgrade')
+ {
+ # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior.
+ $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true }
+ }
+
+ $PublishParameters['Action'] = $Action
+ $PublishParameters['UpgradeParameters'] = $UpgradeParameters
+ $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade
+
+ Publish-UpgradedServiceFabricApplication @PublishParameters
+}
+else
+{
+ $Action = "RegisterAndCreate"
+ if ($DeployOnly)
+ {
+ $Action = "Register"
+ }
+
+ $PublishParameters['Action'] = $Action
+ $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior
+ $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation
+
+ Publish-NewServiceFabricApplication @PublishParameters
+}
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj
new file mode 100644
index 000000000..3c5ee05fd
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA.sfproj
@@ -0,0 +1,46 @@
+
+
+
+
+ 1670de10-5626-429d-a74a-2dd8281cc0c9
+ 1.7
+ 1.5
+ 1.6
+ v4.6.1
+
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config
new file mode 100644
index 000000000..3dc0a332b
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebSPA/eShopOnServiceFabricWebSPA/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml
new file mode 100644
index 000000000..edc3824d0
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/ApplicationManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml
similarity index 100%
rename from ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml
rename to ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/Config/Settings.xml
diff --git a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml
similarity index 94%
rename from ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml
rename to ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml
index d11817796..64d2e335f 100644
--- a/ServiceFabric/eShopOnServiceFabric/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationPackageRoot/WebStatusPkg/ServiceManifest.xml
@@ -30,7 +30,6 @@
-
@@ -43,7 +42,7 @@
-
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml
new file mode 100644
index 000000000..25352d134
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Cloud.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml
new file mode 100644
index 000000000..9864bd050
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.1Node.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml
new file mode 100644
index 000000000..9864bd050
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/ApplicationParameters/Local.5Node.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml
new file mode 100644
index 000000000..26804a1fe
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Cloud.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml
new file mode 100644
index 000000000..6e1403e96
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.1Node.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml
new file mode 100644
index 000000000..f42d759c3
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/PublishProfiles/Local.5Node.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1 b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1
new file mode 100644
index 000000000..2897b10e8
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/Scripts/Deploy-FabricApplication.ps1
@@ -0,0 +1,258 @@
+<#
+.SYNOPSIS
+Deploys a Service Fabric application type to a cluster.
+
+.DESCRIPTION
+This script deploys a Service Fabric application type to a cluster. It is invoked by Visual Studio when deploying a Service Fabric Application project.
+
+.NOTES
+WARNING: This script file is invoked by Visual Studio. Its parameters must not be altered but its logic can be customized as necessary.
+
+.PARAMETER PublishProfileFile
+Path to the file containing the publish profile.
+
+.PARAMETER ApplicationPackagePath
+Path to the folder of the packaged Service Fabric application.
+
+.PARAMETER DeployOnly
+Indicates that the Service Fabric application should not be created or upgraded after registering the application type.
+
+.PARAMETER ApplicationParameter
+Hashtable of the Service Fabric application parameters to be used for the application.
+
+.PARAMETER UnregisterUnusedApplicationVersionsAfterUpgrade
+Indicates whether to unregister any unused application versions that exist after an upgrade is finished.
+
+.PARAMETER OverrideUpgradeBehavior
+Indicates the behavior used to override the upgrade settings specified by the publish profile.
+'None' indicates that the upgrade settings will not be overridden.
+'ForceUpgrade' indicates that an upgrade will occur with default settings, regardless of what is specified in the publish profile.
+'VetoUpgrade' indicates that an upgrade will not occur, regardless of what is specified in the publish profile.
+
+.PARAMETER UseExistingClusterConnection
+Indicates that the script should make use of an existing cluster connection that has already been established in the PowerShell session. The cluster connection parameters configured in the publish profile are ignored.
+
+.PARAMETER OverwriteBehavior
+Overwrite Behavior if an application exists in the cluster with the same name. Available Options are Never, Always, SameAppTypeAndVersion. This setting is not applicable when upgrading an application.
+'Never' will not remove the existing application. This is the default behavior.
+'Always' will remove the existing application even if its Application type and Version is different from the application being created.
+'SameAppTypeAndVersion' will remove the existing application only if its Application type and Version is same as the application being created.
+
+.PARAMETER SkipPackageValidation
+Switch signaling whether the package should be validated or not before deployment.
+
+.PARAMETER SecurityToken
+A security token for authentication to cluster management endpoints. Used for silent authentication to clusters that are protected by Azure Active Directory.
+
+.PARAMETER CopyPackageTimeoutSec
+Timeout in seconds for copying application package to image store.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug'
+
+Deploy the application using the default package location for a Debug build.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -DoNotCreateApplication
+
+Deploy the application but do not create the application instance.
+
+.EXAMPLE
+. Scripts\Deploy-FabricApplication.ps1 -ApplicationPackagePath 'pkg\Debug' -ApplicationParameter @{CustomParameter1='MyValue'; CustomParameter2='MyValue'}
+
+Deploy the application by providing values for parameters that are defined in the application manifest.
+#>
+
+Param
+(
+ [String]
+ $PublishProfileFile,
+
+ [String]
+ $ApplicationPackagePath,
+
+ [Switch]
+ $DeployOnly,
+
+ [Hashtable]
+ $ApplicationParameter,
+
+ [Boolean]
+ $UnregisterUnusedApplicationVersionsAfterUpgrade,
+
+ [String]
+ [ValidateSet('None', 'ForceUpgrade', 'VetoUpgrade')]
+ $OverrideUpgradeBehavior = 'None',
+
+ [Switch]
+ $UseExistingClusterConnection,
+
+ [String]
+ [ValidateSet('Never','Always','SameAppTypeAndVersion')]
+ $OverwriteBehavior = 'Never',
+
+ [Switch]
+ $SkipPackageValidation,
+
+ [String]
+ $SecurityToken,
+
+ [int]
+ $CopyPackageTimeoutSec
+)
+
+function Read-XmlElementAsHashtable
+{
+ Param (
+ [System.Xml.XmlElement]
+ $Element
+ )
+
+ $hashtable = @{}
+ if ($Element.Attributes)
+ {
+ $Element.Attributes |
+ ForEach-Object {
+ $boolVal = $null
+ if ([bool]::TryParse($_.Value, [ref]$boolVal)) {
+ $hashtable[$_.Name] = $boolVal
+ }
+ else {
+ $hashtable[$_.Name] = $_.Value
+ }
+ }
+ }
+
+ return $hashtable
+}
+
+function Read-PublishProfile
+{
+ Param (
+ [ValidateScript({Test-Path $_ -PathType Leaf})]
+ [String]
+ $PublishProfileFile
+ )
+
+ $publishProfileXml = [Xml] (Get-Content $PublishProfileFile)
+ $publishProfile = @{}
+
+ $publishProfile.ClusterConnectionParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("ClusterConnectionParameters")
+ $publishProfile.UpgradeDeployment = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment")
+ $publishProfile.CopyPackageParameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("CopyPackageParameters")
+
+ if ($publishProfileXml.PublishProfile.Item("UpgradeDeployment"))
+ {
+ $publishProfile.UpgradeDeployment.Parameters = Read-XmlElementAsHashtable $publishProfileXml.PublishProfile.Item("UpgradeDeployment").Item("Parameters")
+ if ($publishProfile.UpgradeDeployment["Mode"])
+ {
+ $publishProfile.UpgradeDeployment.Parameters[$publishProfile.UpgradeDeployment["Mode"]] = $true
+ }
+ }
+
+ $publishProfileFolder = (Split-Path $PublishProfileFile)
+ $publishProfile.ApplicationParameterFile = [System.IO.Path]::Combine($PublishProfileFolder, $publishProfileXml.PublishProfile.ApplicationParameterFile.Path)
+
+ return $publishProfile
+}
+
+$LocalFolder = (Split-Path $MyInvocation.MyCommand.Path)
+
+if (!$PublishProfileFile)
+{
+ $PublishProfileFile = "$LocalFolder\..\PublishProfiles\Local.xml"
+}
+
+if (!$ApplicationPackagePath)
+{
+ $ApplicationPackagePath = "$LocalFolder\..\pkg\Release"
+}
+
+$ApplicationPackagePath = Resolve-Path $ApplicationPackagePath
+
+$publishProfile = Read-PublishProfile $PublishProfileFile
+
+if (-not $UseExistingClusterConnection)
+{
+ $ClusterConnectionParameters = $publishProfile.ClusterConnectionParameters
+ if ($SecurityToken)
+ {
+ $ClusterConnectionParameters["SecurityToken"] = $SecurityToken
+ }
+
+ try
+ {
+ [void](Connect-ServiceFabricCluster @ClusterConnectionParameters)
+ }
+ catch [System.Fabric.FabricObjectClosedException]
+ {
+ Write-Warning "Service Fabric cluster may not be connected."
+ throw
+ }
+}
+
+$RegKey = "HKLM:\SOFTWARE\Microsoft\Service Fabric SDK"
+$ModuleFolderPath = (Get-ItemProperty -Path $RegKey -Name FabricSDKPSModulePath).FabricSDKPSModulePath
+Import-Module "$ModuleFolderPath\ServiceFabricSDK.psm1"
+
+$IsUpgrade = ($publishProfile.UpgradeDeployment -and $publishProfile.UpgradeDeployment.Enabled -and $OverrideUpgradeBehavior -ne 'VetoUpgrade') -or $OverrideUpgradeBehavior -eq 'ForceUpgrade'
+
+$PublishParameters = @{
+ 'ApplicationPackagePath' = $ApplicationPackagePath
+ 'ApplicationParameterFilePath' = $publishProfile.ApplicationParameterFile
+ 'ApplicationParameter' = $ApplicationParameter
+ 'ErrorAction' = 'Stop'
+}
+
+if ($publishProfile.CopyPackageParameters.CopyPackageTimeoutSec)
+{
+ $PublishParameters['CopyPackageTimeoutSec'] = $publishProfile.CopyPackageParameters.CopyPackageTimeoutSec
+}
+
+if ($publishProfile.CopyPackageParameters.CompressPackage)
+{
+ $PublishParameters['CompressPackage'] = $publishProfile.CopyPackageParameters.CompressPackage
+}
+
+# CopyPackageTimeoutSec parameter overrides the value from the publish profile
+if ($CopyPackageTimeoutSec)
+{
+ $PublishParameters['CopyPackageTimeoutSec'] = $CopyPackageTimeoutSec
+}
+
+if ($IsUpgrade)
+{
+ $Action = "RegisterAndUpgrade"
+ if ($DeployOnly)
+ {
+ $Action = "Register"
+ }
+
+ $UpgradeParameters = $publishProfile.UpgradeDeployment.Parameters
+
+ if ($OverrideUpgradeBehavior -eq 'ForceUpgrade')
+ {
+ # Warning: Do not alter these upgrade parameters. It will create an inconsistency with Visual Studio's behavior.
+ $UpgradeParameters = @{ UnmonitoredAuto = $true; Force = $true }
+ }
+
+ $PublishParameters['Action'] = $Action
+ $PublishParameters['UpgradeParameters'] = $UpgradeParameters
+ $PublishParameters['UnregisterUnusedVersions'] = $UnregisterUnusedApplicationVersionsAfterUpgrade
+
+ Publish-UpgradedServiceFabricApplication @PublishParameters
+}
+else
+{
+ $Action = "RegisterAndCreate"
+ if ($DeployOnly)
+ {
+ $Action = "Register"
+ }
+
+ $PublishParameters['Action'] = $Action
+ $PublishParameters['OverwriteBehavior'] = $OverwriteBehavior
+ $PublishParameters['SkipPackageValidation'] = $SkipPackageValidation
+
+ Publish-NewServiceFabricApplication @PublishParameters
+}
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj
new file mode 100644
index 000000000..76a0c36b2
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus.sfproj
@@ -0,0 +1,46 @@
+
+
+
+
+ 25f73fd9-b32f-401a-80e8-17c72606a7e1
+ 1.7
+ 1.5
+ 1.6
+ v4.6.1
+
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config
new file mode 100644
index 000000000..3dc0a332b
--- /dev/null
+++ b/ServiceFabric/eShopOnServiceFabricWebStatus/eShopOnServiceFabricWebStatus/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/eShopOnContainers-ServicesAndWebApps.sln b/eShopOnContainers-ServicesAndWebApps.sln
index 3d1072c76..6e42e4727 100644
--- a/eShopOnContainers-ServicesAndWebApps.sln
+++ b/eShopOnContainers-ServicesAndWebApps.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26730.12
+VisualStudioVersion = 15.0.26730.8
MinimumVisualStudioVersion = 10.0.40219.1
Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{FEA0C318-FFED-4D39-8781-265718CA43DD}"
EndProject
@@ -103,6 +103,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ServiceFabric", "ServiceFab
EndProject
Project("{A07B5EB6-E848-4116-A8D0-A826331D98C6}") = "eShopOnServiceFabric", "ServiceFabric\eShopOnServiceFabric\eShopOnServiceFabric.sfproj", "{983EAB84-65C5-4793-A300-08F97C791A15}"
EndProject
+Project("{A07B5EB6-E848-4116-A8D0-A826331D98C6}") = "eShopOnServiceFabricIdSrv", "ServiceFabric\eShopOnServiceFabricIdSrv\eShopOnServiceFabricIdSrv\eShopOnServiceFabricIdSrv.sfproj", "{39B54901-D57D-416E-B51E-33C4017CA464}"
+EndProject
+Project("{A07B5EB6-E848-4116-A8D0-A826331D98C6}") = "eShopOnServiceFabricWebMVC", "ServiceFabric\eShopOnServiceFabricWebMVC\eShopOnServiceFabricWebMVC\eShopOnServiceFabricWebMVC.sfproj", "{0CF895FF-3616-4D1F-8D2E-5D856CDF3612}"
+EndProject
+Project("{A07B5EB6-E848-4116-A8D0-A826331D98C6}") = "eShopOnServiceFabricWebSPA", "ServiceFabric\eShopOnServiceFabricWebSPA\eShopOnServiceFabricWebSPA\eShopOnServiceFabricWebSPA.sfproj", "{1670DE10-5626-429D-A74A-2DD8281CC0C9}"
+EndProject
+Project("{A07B5EB6-E848-4116-A8D0-A826331D98C6}") = "eShopOnServiceFabricWebStatus", "ServiceFabric\eShopOnServiceFabricWebStatus\eShopOnServiceFabricWebStatus\eShopOnServiceFabricWebStatus.sfproj", "{25F73FD9-B32F-401A-80E8-17C72606A7E1}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
@@ -1417,6 +1425,214 @@ Global
{983EAB84-65C5-4793-A300-08F97C791A15}.Release|x64.Build.0 = Release|x64
{983EAB84-65C5-4793-A300-08F97C791A15}.Release|x64.Deploy.0 = Release|x64
{983EAB84-65C5-4793-A300-08F97C791A15}.Release|x86.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|Any CPU.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|ARM.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|ARM.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|ARM.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|iPhone.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|iPhone.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|iPhone.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|x64.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|x64.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|x64.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|x86.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|x86.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Ad-Hoc|x86.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|Any CPU.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|Any CPU.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|Any CPU.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|ARM.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|ARM.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|ARM.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|iPhone.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|iPhone.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|iPhone.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|iPhoneSimulator.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|x64.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|x64.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|x64.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|x86.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|x86.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.AppStore|x86.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Debug|ARM.ActiveCfg = Debug|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Debug|iPhone.ActiveCfg = Debug|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Debug|iPhoneSimulator.ActiveCfg = Debug|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Debug|x64.ActiveCfg = Debug|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Debug|x64.Build.0 = Debug|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Debug|x64.Deploy.0 = Debug|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Debug|x86.ActiveCfg = Debug|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Release|Any CPU.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Release|ARM.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Release|iPhone.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Release|iPhoneSimulator.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Release|x64.ActiveCfg = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Release|x64.Build.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Release|x64.Deploy.0 = Release|x64
+ {39B54901-D57D-416E-B51E-33C4017CA464}.Release|x86.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|Any CPU.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|ARM.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|ARM.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|ARM.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|iPhone.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|iPhone.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|iPhone.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|x64.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|x64.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|x64.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|x86.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|x86.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Ad-Hoc|x86.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|Any CPU.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|Any CPU.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|Any CPU.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|ARM.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|ARM.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|ARM.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|iPhone.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|iPhone.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|iPhone.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|iPhoneSimulator.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|x64.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|x64.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|x64.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|x86.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|x86.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.AppStore|x86.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Debug|ARM.ActiveCfg = Debug|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Debug|iPhone.ActiveCfg = Debug|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Debug|iPhoneSimulator.ActiveCfg = Debug|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Debug|x64.ActiveCfg = Debug|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Debug|x64.Build.0 = Debug|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Debug|x64.Deploy.0 = Debug|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Debug|x86.ActiveCfg = Debug|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Release|Any CPU.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Release|ARM.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Release|iPhone.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Release|iPhoneSimulator.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Release|x64.ActiveCfg = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Release|x64.Build.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Release|x64.Deploy.0 = Release|x64
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612}.Release|x86.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|Any CPU.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|ARM.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|ARM.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|ARM.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|iPhone.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|iPhone.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|iPhone.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|x64.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|x64.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|x64.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|x86.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|x86.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Ad-Hoc|x86.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|Any CPU.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|Any CPU.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|Any CPU.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|ARM.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|ARM.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|ARM.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|iPhone.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|iPhone.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|iPhone.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|iPhoneSimulator.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|x64.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|x64.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|x64.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|x86.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|x86.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.AppStore|x86.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Debug|ARM.ActiveCfg = Debug|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Debug|iPhone.ActiveCfg = Debug|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Debug|iPhoneSimulator.ActiveCfg = Debug|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Debug|x64.ActiveCfg = Debug|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Debug|x64.Build.0 = Debug|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Debug|x64.Deploy.0 = Debug|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Debug|x86.ActiveCfg = Debug|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Release|Any CPU.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Release|ARM.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Release|iPhone.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Release|iPhoneSimulator.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Release|x64.ActiveCfg = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Release|x64.Build.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Release|x64.Deploy.0 = Release|x64
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9}.Release|x86.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|Any CPU.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|Any CPU.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|Any CPU.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|ARM.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|ARM.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|ARM.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|iPhone.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|iPhone.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|iPhone.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|x64.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|x64.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|x64.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|x86.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|x86.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Ad-Hoc|x86.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|Any CPU.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|Any CPU.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|Any CPU.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|ARM.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|ARM.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|ARM.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|iPhone.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|iPhone.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|iPhone.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|iPhoneSimulator.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|iPhoneSimulator.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|iPhoneSimulator.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|x64.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|x64.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|x64.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|x86.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|x86.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.AppStore|x86.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Debug|ARM.ActiveCfg = Debug|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Debug|iPhone.ActiveCfg = Debug|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Debug|iPhoneSimulator.ActiveCfg = Debug|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Debug|x64.ActiveCfg = Debug|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Debug|x64.Build.0 = Debug|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Debug|x64.Deploy.0 = Debug|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Debug|x86.ActiveCfg = Debug|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Release|Any CPU.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Release|ARM.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Release|iPhone.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Release|iPhoneSimulator.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Release|x64.ActiveCfg = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Release|x64.Build.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Release|x64.Deploy.0 = Release|x64
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1}.Release|x86.ActiveCfg = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1465,6 +1681,10 @@ Global
{768C887F-C229-4B94-ACD8-0C7F65686524} = {A81ECBC2-6B00-4DCD-8388-469174033379}
{969E793C-C413-490E-9C9D-B2B46DA5AF32} = {EF0337F2-ED00-4643-89FD-EE10863F1870}
{983EAB84-65C5-4793-A300-08F97C791A15} = {0D1E7D4E-12DD-4B67-9595-7C0BD347F8C8}
+ {39B54901-D57D-416E-B51E-33C4017CA464} = {0D1E7D4E-12DD-4B67-9595-7C0BD347F8C8}
+ {0CF895FF-3616-4D1F-8D2E-5D856CDF3612} = {0D1E7D4E-12DD-4B67-9595-7C0BD347F8C8}
+ {1670DE10-5626-429D-A74A-2DD8281CC0C9} = {0D1E7D4E-12DD-4B67-9595-7C0BD347F8C8}
+ {25F73FD9-B32F-401A-80E8-17C72606A7E1} = {0D1E7D4E-12DD-4B67-9595-7C0BD347F8C8}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9}