я получил следующий NANT скрипт, который делает сборки и развертывания:Visual Studio Web Deploy удаление библиотек в процессе выпуска публиковать
<msbuild project=".\Code\Code.sln" target="Build">
<property name="Configuration" value="${Build.Configuration}" />
<property name="Platform" value="${build.platform}" />
<property name="CreatePackageOnPublish" value="true" />
<property name="DeployOnBuild" value="true" />
<property name="DeployIISAppPath" value="Default Web Site\${Web.Path}" />
</msbuild>
<exec program=".\Code\CodeWeb\obj\${Build.Configuration}\Package\CodeWeb.deploy.cmd" commandline="/y /m:webhost.mycompany.com /u:DOMAIN\user /p:password"/>
Моя проблема заключается в следующем: когда я раскрываю в Debug или RC конфигураций сборки, все работает отлично. Все файлы присутствуют в каталоге публикации, и код обновляется. Однако при развертывании в конфигурации выпуска процесс публикации удаляет три DLL-файла, которые мне нужны для работы моего сайта.
Этот же код является построением и публикацией для всех конфигураций сборки, поэтому я не думаю, что это может быть проблемой. Кроме того, я не знаю, является ли какой-либо из моих профилей публикации источником проблемы, но, если это так, единственные заметные отличия в том, что Production.pubxml.user содержит элемент <ItemGroup>
со всей связью <File>
дочерних элементов, перечисляющих файлы, в которых Development.pubxml.user не содержит этого. Однако я скопировал <ItemGroup>
из Production.pubxml.user в Development.pubxml.user, и он не нарушил процесс публикации разработки.
Мой msdeploy.exe журнал начинается, как это для производства публиковать
SetParameters from:
"C:\Shared\Code\CodeWeb\obj\Release\Package\CodeWeb.SetParameters.xml"
You can change IIS Application Name, Physical path, connectionString
or other deploy parameters in the above file.
-------------------------------------------------------
Start executing msdeploy.exe
-------------------------------------------------------
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package='C:\Shared\Code\CodeWeb\obj\Release\Package\CodeWeb.zip' -dest:auto,computerName="webhost.mycompany.com",userName="DOMAIN\user",password="password",includeAcls="False" -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"C:\Shared\Code\CodeWeb\obj\Release\Package\CodeWeb.SetParameters.xml"
Info: Using ID '52641dbe-b1e5-4ff5-9962-01386a7fe513' for connections to the remote server.
Info: Deleting file (Default Web Site\CodeStaging\bin\System.Net.Http.Formatting.dll).
Info: Deleting file (Default Web Site\CodeStaging\bin\System.Web.Http.dll).
Info: Deleting file (Default Web Site\CodeStaging\bin\System.Web.Http.WebHost.dll).
В разработчика публиковать, он просто не удалить эти файлы. Я разложил файлы .deploy.cmd, созданные msbuild, а также сделанные на уровне папок сравнения пакетов .zip. Развертывание файлов .deploy.cmd, но я не могу найти никаких различий, о которых стоит говорить.
При дальнейших исследованиях файлы удаляются только при создании пакета msdeploy с моей производственной машины. Если я проверю trunk/на обеих моих производственных и Dev-машинах и запустим код сборки и развертывания ниже, развертывание в любой среде из машины Dev работает правильно и развертывание в любой среде с производственной машины удалит мои необходимые сборки. Есть ли какие-то глобальные параметры msdeploy где-то, что перепуталось? Кроме того, если вы можете ответить на этот вопрос, возможно, взгляните на мой other, similar one.
Может ли кто-нибудь объяснить, почему один и тот же код нарушает мое развертывание при запуске с моей производственной машины, но отлично работает при запуске с моей машины dev, независимо от среды, в которую я развертываю?
Это странно, хотя. Действительно ли я использую эти профили публикации, так как я создаю скрипт развертывания с помощью msbuild?Кроме того, в моем профиле «Профиль» есть «Удалить дополнительные файлы в месте назначения», но так же работает моя разработка. – sirdank