private static EnvironmentInfo ConvertToEnvironmentInfo(EnvironmentInfoXml environmentInfoXml)
 {
     return
     new EnvironmentInfo(
       environmentInfoXml.Name,
       environmentInfoXml.IsVisibleToClients,
       environmentInfoXml.ConfigurationTemplateName,
       environmentInfoXml.AppServerMachineName,
       environmentInfoXml.FailoverClusterMachineName,
       environmentInfoXml.WebServerMachineNames,
       environmentInfoXml.TerminalServerMachineName,
       environmentInfoXml.SchedulerServerTasksMachineNames,
       environmentInfoXml.SchedulerServerBinariesMachineNames,
       environmentInfoXml.NtServicesBaseDirPath,
       environmentInfoXml.WebAppsBaseDirPath,
       environmentInfoXml.SchedulerAppsBaseDirPath,
       environmentInfoXml.TerminalAppsBaseDirPath,
       environmentInfoXml.EnableFailoverClusteringForNtServices,
       environmentInfoXml.EnvironmentUsers.Select(
     e =>
       new EnvironmentUser(
         e.Id,
         e.UserName)),
       environmentInfoXml.AppPoolInfos.Select(
     e =>
       new IisAppPoolInfo(
         e.Name,
         e.Version,
         e.Mode)),
       environmentInfoXml.DatabaseServers.Select(
     e =>
       new DatabaseServer(
         e.Id,
         e.MachineName,
         e.DataDirPath,
         e.LogDirPath,
         ConvertSqlPakcageVariables(e.SqlPackageVariables))),
       environmentInfoXml.ProjectToFailoverClusterGroupMappings.Select(
     e =>
       new ProjectToFailoverClusterGroupMapping(
         e.ProjectName,
         e.ClusterGroupName)),
       environmentInfoXml.WebAppProjectConfigurationOverrides.Select(
     e =>
       new WebAppProjectConfigurationOverride(
         e.ProjectName,
         e.AppPoolId,
         e.WebSiteName,
         e.WebAppDirName,
         e.WebAppName)),
       environmentInfoXml.DbProjectConfigurationOverrides.Select(
     e =>
       new DbProjectConfigurationOverride(
         e.ProjectName,
         e.DatabaseServerId)),
       environmentInfoXml.TerminalAppsShortcutFolder,
       environmentInfoXml.ManualDeploymentPackageDirPath,
       environmentInfoXml.DomainName,
       environmentInfoXml.CustomEnvMachines.Select(
     e =>
       new CustomEnvMachine(
         e.Id,
         e.MachineName)));
 }
 private static EnvironmentInfo ConvertToEnvironmentInfo(EnvironmentInfoXml environmentInfoXml)
 {
     return
         (new EnvironmentInfo(
              environmentInfoXml.Name,
              environmentInfoXml.IsVisibleToClients,
              environmentInfoXml.ConfigurationTemplateName,
              environmentInfoXml.AppServerMachineName,
              environmentInfoXml.FailoverClusterMachineName,
              environmentInfoXml.WebServerMachineNames,
              environmentInfoXml.TerminalServerMachineName,
              environmentInfoXml.SchedulerServerTasksMachineNames,
              environmentInfoXml.SchedulerServerBinariesMachineNames,
              environmentInfoXml.NtServicesBaseDirPath,
              environmentInfoXml.WebAppsBaseDirPath,
              environmentInfoXml.SchedulerAppsBaseDirPath,
              environmentInfoXml.TerminalAppsBaseDirPath,
              environmentInfoXml.EnableFailoverClusteringForNtServices,
              environmentInfoXml.EnvironmentUsers.Select(
                  e =>
                  new EnvironmentUser(
                      e.Id,
                      e.UserName)),
              environmentInfoXml.AppPoolInfos.Select(
                  e =>
                  new IisAppPoolInfo(
                      e.Name,
                      e.Version,
                      e.Mode)),
              environmentInfoXml.DatabaseServers.Select(
                  e =>
                  new DatabaseServer(
                      e.Id,
                      e.MachineName,
                      e.DataDirPath,
                      e.LogDirPath,
                      ConvertSqlPakcageVariables(e.SqlPackageVariables))),
              environmentInfoXml.ProjectToFailoverClusterGroupMappings.Select(
                  e =>
                  new ProjectToFailoverClusterGroupMapping(
                      e.ProjectName,
                      e.ClusterGroupName)),
              environmentInfoXml.WebAppProjectConfigurationOverrides.Select(
                  e =>
                  new WebAppProjectConfigurationOverride(
                      e.ProjectName,
                      e.AppPoolId,
                      e.WebSiteName,
                      e.WebAppDirName,
                      e.WebAppName)),
              environmentInfoXml.DbProjectConfigurationOverrides.Select(
                  e =>
                  new DbProjectConfigurationOverride(
                      e.ProjectName,
                      e.DatabaseServerId)),
              environmentInfoXml.TerminalAppsShortcutFolder,
              environmentInfoXml.ManualDeploymentPackageDirPath,
              environmentInfoXml.DomainName,
              environmentInfoXml.CustomEnvMachines.Select(
                  e =>
                  new CustomEnvMachine(
                      e.Id,
                      e.MachineName))));
 }