MSDeploy - синхронизация с удаленной папкой с использованием манифеста
Я видел много ответов на вопросы, которые, как представляется, именно то, что я ищу, например (MSDeploy) Развертывание содержимого папки на удаленном сервере IIS, но эти ответы не делают то, что мне нужно. Я не хочу устанавливать агент MSDeploy на удаленный компьютер или указывать учетные данные для использования.
Эта команда делает именно то, что я хочу, но не использует манифест, поэтому мой скрипт установки должен знать место назначения для каждого пакета.
MSDeploy -verb:sync -disableRule:BackupRule ^
-source:package=pkg.zip ^
-dest:contentPath=\\server\share\path
Если я использую манифест для dest, и в этом манифесте указан один поставщик contentPath (или dirPath), например:
<sitemanifest>
<contentPath path="\\server\share\path">
</sitemanifest>
Я получаю сообщение об ошибке, что источник (пакет) не совместим с dest (contentPath).
Я пробовал варианты, такие как использование полного локального пути в манифесте и ",computerName=server" после спецификации dest. Этот хочет агент MSDeploy на удаленном компьютере и для меня, чтобы указать учетные данные.
Я не могу найти подробную документацию по использованию MSDeploy, только множество примеров, которые не соответствуют моим потребностям.
Я думаю, что первый пример того, что я попробовал выше, вероятно, правильный путь, но мне нужно выяснить, как упаковать исходный код или собрать манифест, чтобы сделать два совместимых.
1 ответ
Я считаю, что ваша проблема в том, что манифест назначения не совпадает с манифестом, использованным для создания пакета, или пакет не был создан из манифеста. Манифесты должны совпадать. Если вы позволили VS/MSBuild создать пакет, вы можете открыть его с помощью утилиты zip и найти файл манифеста (файл с именем archive.xml), который использовался для создания пакета. Сделайте копию этого файла и отрегулируйте значения для каждой строки манифеста соответствующим образом.
Вот пара постов в блоге, которые должны помочь.
http://www.dotnetcatch.com/2016/02/25/the-anatomy-of-a-webdeploy-package/
Это о создании пакета вручную. Если вы создали пакет вручную, вам, вероятно, потребуется изменить его, чтобы создать из исходного манифеста.
http://www.dotnetcatch.com/2016/06/23/deploy-an-asp-net-website-not-web-application-with-msdeploy/