Ответ 1
Я также начинаю изучать возможности того, как это сделать.
У меня еще есть какое-то исследование, но я могу дать вам следующие указатели:
-
IncludeAppPool = true включает приложение AppPoolExtension, которое также копирует пул приложений при синхронизации веб-сайта из одного места в другое. Я думаю, это не будет иметь эффекта при создании пакета. Если, может быть, если вы используете WAP через локальный IIS, и вы включаете параметры IIS в свой пакет.
-
Parameters.xml действительно существует в zip. Но если вы поместите файл Parameters.xml в корень вашего WAP, вы можете указать свои собственные параметры, которые будут объединены с одним VS, созданным при упаковке.
-
Вы действительно можете проверить "Включить настройки пула приложений, используемые этим веб-проектом" (на самом деле: это устанавливает свойство msbuild IncludeAppPool равным true). Затем манифест будет содержать запись для создания приложения. Однако это возможно только в том случае, если вы создаете пакет с машины, которая также локально запускает WAP. Это не вариант при работе с сервером сборки, который является моим случаем
-
Можно было бы сделать пакетный пакет script для запуска msdeploy из командной строки и использовать поставщик AppPool для создания приложения. Хотя это кажется немного неуклюжим для меня, поскольку я хотел бы включить создание приложения в манифест моего сгенерированного пакета VS (или сборки)
-
Я сейчас исследую, можно ли вставить apppoolconfig в свой манифест, используя файл wpp.targets(подробнее здесь и здесь
Я могу вернуться к вам, если найду, как это сделать.
Edit:
Я выяснил, что вы не можете упаковать создание нового пула приложений с помощью поставщика appPoolConfig. Я был вынужден написать собственный провайдер. Я сделал это на основе некоторых (очень простых) примеров, которые я нашел, и путем обратного проектирования некоторых из существующих поставщиков. В основном я создал класс-оболочку, который вызывает c:\windows\system32\inetsrv\appcmd и раскрыл эту функцию как поставщик MSDeploy. appcmd - это инструмент командной строки для настройки iis, с ним вы можете создавать приложения... Если кому-то интересно, я мог бы поделиться некоторыми из кода...
Привет, другое редактирование
Мне жаль, что это заняло у меня столько времени, но я поместил часть своего кода в свой собственный AppPoolConfigProvider на своем skydrive, вы можете получить к нему доступ здесь Или здесь - это репозиторий gist для доступа к нему.
Чтобы использовать этого провайдера, следует поместить вашу скомпилированную dll в папку расширения (вы должны создать ее самостоятельно в разделе "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>
Извините, я не могу более подробно описать это, но прошло некоторое время с тех пор, как я написал этот код, и у меня просто нет времени. Вы можете найти некоторую информацию в Интернете о создании пользовательских поставщиков. Если у вас есть дополнительные вопросы, я постараюсь ответить, когда у меня будет время.
Надеюсь, что это поможет