Я использую MSDeploy для создания артефакта на этапе сборки в NAnt. Этот конкретный шаг сборки вызывается при успешной компиляции. Затем артефакт используется для развертывания.
Вот шаг, указанный в моем файле сборки.
<target name="BuildMsDeployPackage" depends="StageForMsDeployPackaging">
<exec program="${msdeploy.exe}"
workingdir="${buildDirectory}"
verbose="true"
commandline="-verb:sync
-source:iisapp=${packagingDirectory}
-dest:package=${publishDirectory}\${webapp.artifact.zip}"/>
В source
вот мой веб-проект.
Я хочу иметь возможность указать доступ для записи к паре папок в созданном пакете. Это возможно? Я знаю что есть setAcl
поставщика для этой конкретной цели, но можно ли его использовать при создании пакета?
Вы можете использовать manifest
провайдер для включения нескольких поставщиков в синхронизацию, которые будут работать с пакетом:
msdeploy verb:sync -source:manifest=manifest.xml -dest:package=package.zip
msdeploy verb:sync -source:package=package.zip -dest:auto,computerName=...
затем manifest.xml
является:
<multipleAcls>
<iisApp path="local iis app or path" />
<setAcl path="remote iis site name/relative path1" setAclAccess="Write" />
<setAcl path="remote iis site name/relative path2" setAclAccess="Read" />
</multipleAcls>
Ты можешь использовать параметры или операторы замены в вызове dest: package, чтобы избежать необходимости динамически генерировать манифест, и вы можете использовать аналогичные операторы в вызове развертывания, чтобы изменить сайт / путь, на который вы развертываете. Вы можете установить свой dest в другой файл манифеста в качестве альтернативного решения последней проблемы.