Я также начинаю искать возможности для достижения этой цели.
У меня еще есть кое-какие исследования, но я могу дать вам следующие указания:
IncludeAppPool = true включить AppPoolExtension, которое также копирует пул приложений при синхронизации веб-сайта из одного местоположения в другое.
Я думаю, это не повлияет на создание пакета. Если, возможно, если ваш WAP запущен через локальный IIS, и вы включили в свой пакет настройки IIS.
Parameters.xml действительно существует в zip. Но если вы поместите файл Parameters.xml в корень вашего WAP, вы можете указать свои собственные параметры, которые будут объединены с тем, который VS создает при упаковке.
Вы действительно можете установить флажок «Включить параметры пула приложений, используемые этим веб-проектом» (фактически: для свойства msbuild для IncludeAppPool устанавливается значение true). Манифест будет содержать запись для создания пула приложений. Однако это возможно только в том случае, если вы создаете пакет с компьютера, на котором также выполняется WAP локально. Это не вариант при работе с сервером сборки, что в моем случае
Можно создать пакетный скрипт для запуска msdeploy из командной строки и использовать поставщик AppPool для создания пула приложений. Хотя это кажется мне немного неуклюжим, поскольку я хотел бы включить создание apppool в манифест моего сгенерированного пакета VS (или сервера сборки)
Сейчас я занимаюсь выяснением, можно ли вставить предоставленный apppoolconfig в мой манифест, используя файл wpp.targets (дополнительная информация здесь и здесь
Я могу вернуться к вам, если найду, как это сделать.
Edit:
Я обнаружил, что нет способа упаковать создание нового пула приложений с помощью поставщика appPoolConfig. Я был вынужден написать свой собственный провайдер. Я сделал это на основе некоторых (очень простых) примеров, которые я нашел, и путем обратного инжиниринга некоторых существующих провайдеров. В основном я создал класс-обёртку, который вызывает c: \ windows \ system32 \ inetsrv \ appcmd и раскрыл эту функциональность как провайдер MSDeploy. appcmd - это инструмент командной строки для настройки iis, с его помощью вы можете создавать apppools ... Если кому-то интересно, я мог бы поделиться некоторым кодом ...
Привет, еще одно редактирование
Извините, это заняло у меня так много времени, но я поместил часть своего кода, мой собственный AppPoolConfigProvider, на мой переходник, вы можете получить к нему доступ здесь
Или здесь - это репозиторий для доступа к нему.
Чтобы использовать этого провайдера, следует поместить скомпилированную dll в папку Extensibility (вы должны создать ее самостоятельно в «c: \ Program Files (x86) \ IIS \ Microsoft Web Deploy V2 \»). Вы можете найти больше информации об этом онлайн.
Я использую провайдера в моем файле xxx.wpp.targets, например:
<Target Name="AddConfigAppPool" Condition="'$(RunConfigAppPool)'">
<Message Text="Adding configAppPool provider" />
<ItemGroup>
<MsDeploySourceManifest Include="configAppPool">
<path>@(__DefaultDeployEnvironmentSetting->'%(AppPoolName)')</path><!-- Represents the name of the AppPool, required-->
<managedRuntimeVersion>$(DeployManagedRuntimeVersion)</managedRuntimeVersion>
<managedPipelineMode>$(DeployManagedPipelineMode)</managedPipelineMode>
<processModel_identityType>@(__DefaultDeployEnvironmentSetting->'%(AppPoolIdentyType)')</processModel_identityType>
<processModel_userName>@(__DefaultDeployEnvironmentSetting->'%(AppPoolUserName)')</processModel_userName>
<processModel_password>@(__DefaultDeployEnvironmentSetting->'%(AppPoolUserPassword)')</processModel_password>
<processModel_idleTimeout>00:00:00</processModel_idleTimeout>
<AdditionalProviderSettings>managedRuntimeVersion;managedPipelineMode;processModel_identityType;processModel_userName;processModel_password;processModel_idleTimeout</AdditionalProviderSettings>
<!--Possible additional provider settings: queueLength,autoStart,enable32BitAppOnWin64,managedRuntimeVersion,managedRuntimeLoader,enableConfigurationOverride,managedPipelineMode,CLRConfigFile,passAnonymousToken,startMode,processModel_identityType,processModel_userName,processModel_password,processModel_loadUserProfile,processModel_logonType,processModel_manualGroupMembership,processModel_idleTimeout,processModel_maxProcesses,processModel_shutdownTimeLimit,processModel_startupTimeLimit,processModel_pingingEnabled,processModel_pingInterval,processModel_pingResponseTime,recycling_disallowOverlappingRotation,recycling_disallowRotationOnConfigChange,recycling_logEventOnRecycle,recycling_periodicRestart_memory,recycling_periodicRestart_privateMemory,recycling_periodicRestart_requests,recycling_periodicRestart_time,recycling_periodicRestart_schedule_[value='timespan']_value,failure_loadBalancerCapabilities,failure_orphanWorkerProcess,failure_orphanActionExe,failure_orphanActionParams,failure_rapidFailProtection,failure_rapidFailProtectionInterval,failure_rapidFailProtectionMaxCrashes,failure_autoShutdownExe,failure_autoShutdownParams,cpu_limit,cpu_action,cpu_resetInterval,cpu_smpAffinitized,cpu_smpProcessorAffinityMask,cpu_smpProcessorAffinityMask2-->
</MsDeploySourceManifest>
</ItemGroup>
Извините, я не могу больше об этом говорить, но прошло уже много времени с тех пор, как я написал этот код, и у меня просто нет времени. Вы можете найти некоторую информацию онлайн о создании пользовательских провайдеров. Если у вас есть дополнительные вопросы, я постараюсь ответить, когда у меня будет свободное время.
Надеюсь, это поможет