2013-04-04 4 views
0

Существует веб-проект с пакетным файлом, который генерирует все файлы, необходимые на сервере целей, и помещает их в папку «/ Deployable».Используйте MSDeploy для копирования buildresult в targeterver

Пакетный файл весьма востребован, потому что проект содержит плагиновую систему, и все плагины должны быть скопированы в определенное место.

Когда я использую webdeploy для развертывания на сервере целей, происходит то, что вы ожидаете: некоторые из необходимых сборок скопированы, но не файлы, как указано в пакетном файле.

Мой план состоит в том, чтобы сначала выполнить пакетный файл, а затем использовать webdeploy для копирования папки «/ Deployable» в сервер целей. Можно ли это сделать с помощью webdeploy?

Это то, что я вижу в Visual Studio развертывания Menue: enter image description here

Это результирующий профиль публикации

<?xml version="1.0" encoding="utf-8"?> <publishData> 
<publishProfile publishUrl="http://myserver/msdeployagentservice" 
deleteExistingFiles="False" 
ftpAnonymousLogin="False" 
ftpPassiveMode="True" 
msdeploySite="mysite/" 
msdeploySiteID="" 
msdeployRemoteSitePhysicalPath="" 
msdeployAllowUntrustedCertificate="False" 
msdeploySkipExtraFilesOnServer="False" 
msdeployMarkAsApp="False" 
profileName="publish_to_myserver" 
publishMethod="MSDeploy" 
replaceMatchingFiles="True" 
userName="myuser" 
savePWD="True" userPWD="xxx" SelectedForPublish="True" /> 
</publishData>> 

ответ

1

Я думаю, что есть возможность добавлять сторонние файлы в webdeploy пакет, изменив файл .csproj, однако мне никогда не приходилось его использовать.


Альтернативно, вы можете легко достигнуть того же результата с помощью command-line client и его sync глагола MSDeploy, в указав папку /Deployable в качестве -source аргумента и обслуживание MSDeploy вашего целевого сервера в качестве -dest, например:

$(WebDeployToolPath)\msdeploy -verb:sync -source:dirPath='Deployable\' -dest:dirPath='$(DeployDirectoryLocalPath)',computerName=$(DeployTargetURL),userName='$(DeployUserName)',password='$(Password)',authType='Basic' -verbose -allowUntrusted 

Замены:

  • $(WebDeployToolPath) - полный путь к папке с исполняемым программным обеспечением msdeploy (например, c:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe)
  • Deployable\ - полный путь к папке, которую вы хотите скопировать на целевой сервер.
  • $(DeployDirectoryLocalPath) - полный местный путь к целевой папке на целевом сервере.
  • $(DeployTargetURL) - веб-развертывания службы URL (например https://192.168.142.55:8172/MsDeploy.axd или http://myserver/msdeployagentservice)
  • $(DeployUserName) - имя пользователя, который будет использоваться для развертывания (должно быть администратора для Win 2003)
  • $(Password) - пароль пользователя.

Вот это - эта команда будет синхронизировать Deployable\ папку с $(DeployDirectoryLocalPath) папку (т.е. сделать содержание точно соответствовать).

Вы можете обернуть его в MSBuild цели в файле .csproj:

<PropertyGroup> 
    <DeployTargetURL Condition="'$(DeployTargetURL)'==''">https://192.168.142.55:8172/MsDeploy.axd</DeployTargetURL> 
    <DeployUserName Condition="'$(DeployUserName)'==''">tergetServer\Administrator</DeployUserName> 
    <Password Condition="'$(Password)'==''">AdminPassword</Password> 
    <WebDeployToolPath Condition="'$(WebDeployToolPath)'==''">c:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe</WebDeployToolPath> 

<Target Name="Deploy"> 
<Exec Command="&quot;$(WebDeployToolPath)&quot;\msdeploy -verb:sync -source:dirPath='Deployable\' -dest:dirPath='$(DeployDirectoryLocalPath)',computerName=$(DeployTargetURL),userName='$(DeployUserName)',password='$(Password)',authType='Basic' -verbose -allowUntrusted " /> 
</Target> 

И чем запустить его из командной строки следующим образом:

%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe MyProject.proj /t:Deploy*