Asp.net Web部署忽略MSBuild设置的SkipExtraFilesOnServer

Asp.net Web部署忽略MSBuild设置的SkipExtraFilesOnServer,asp.net,msbuild,package,msdeploy,Asp.net,Msbuild,Package,Msdeploy,我正在使用MSBuild在CruiseControl服务器上创建一个Web部署包来部署Web应用程序。部署时,包中未包含的所有内容都将在我们的服务器上删除 我尝试将SkipExtraFilesOnServer选项设置为true。但是它被Web部署所忽略 <Target Name="CreateDeploymentPackage"> <MSBuild Projects="$(Web)" Targets="Package" properties="Platfor

我正在使用MSBuild在CruiseControl服务器上创建一个Web部署包来部署Web应用程序。部署时,包中未包含的所有内容都将在我们的服务器上删除

我尝试将SkipExtraFilesOnServer选项设置为true。但是它被Web部署所忽略

<Target Name="CreateDeploymentPackage">
    <MSBuild Projects="$(Web)" Targets="Package"
      properties="Platform=$(Platform);
      Configuration=$(Configuration);
      DeployOnBuild=False;
      DeployTarget=Package;
      SkipExtraFilesOnServer=True;
      MSDeployUseChecksum=True;
      PackageLocation=$(DeployDirectory)\_PublishedWebsites\DeployPackage\$(CurrentProject).zip;
      PackageAsSingleFile=True;
      _PackageTempDir=$(PackageOutputDir)\temp;">
    </MSBuild>
</Target>


为什么这不起作用?我找到的每一份文档都说应该这样做。

我不是100%地关注你,但我想我理解这里发生的事情。这是我对你情况的理解

您已将生成服务器配置为执行以下操作

  • 使用msbuild.exe生成web部署包
  • 在创建包时,您已经设置了
    SkipExtraFilesOnServer=true
  • 使用msdeploy.exe发布web部署包

  • 您可能遇到的问题是将包发布到服务器时。当pass
    SkipExtraFilesOnServer=true
    被转换为msdeploy选项时
    -enableRule:DoNotDeleteRule
    。在您的案例中将发布到包时应用(且相关)。现在,您需要确保在包发布到服务器时设置该选项。无论如何,这个选项并没有嵌入到包中。

    我不是100%地关注你,但是,我想我理解这里发生的事情。这是我对你情况的理解

    您已将生成服务器配置为执行以下操作

  • 使用msbuild.exe生成web部署包
  • 在创建包时,您已经设置了
    SkipExtraFilesOnServer=true
  • 使用msdeploy.exe发布web部署包


  • 您可能遇到的问题是将包发布到服务器时。当pass
    SkipExtraFilesOnServer=true
    被转换为msdeploy选项时
    -enableRule:DoNotDeleteRule
    。在您的案例中将发布到包时应用(且相关)。现在,您需要确保在包发布到服务器时设置该选项。无论如何,该选项都不会嵌入到包中。

    我认为只有直接从MSBuild(DeployTarget=MSDeployPublish)部署时才使用“SkipExtraFilesOnServer”。该设置不包括在部署包中。@StevenLiekens不适用(尽管它的名称与包的大小写不符)。我想他遇到了别的事情,我在下面回答。@SayedIbrahimHashimi你不是创建web部署的人之一吗?@spankmaster79你使用生成的部署脚本吗,或者您是否直接从CruiseControl中的
    exec
    任务执行msdeploy.exe?@StevenLiekens我拥有Visual Studio中的Web发布体验,该体验构建在msdeploy以及其他技术之上,但我不直接在msdeploy上工作。我认为“SkipExtraFilesOnServer”仅在直接从MSBuild部署时使用(DeployTarget=MSDeployPublish)。该设置不包括在部署包中。@StevenLiekens不适用(尽管它的名称与包的大小写不符)。我想他遇到了别的事情,我已经在下面回答了。@SayedIbrahimHashimi你不是创建web部署的人之一吗?@spankmaster79你是使用生成的部署脚本,还是直接从CruiseControl中的
    exec
    任务执行msdeploy.exe?@StevenLiekens我拥有Visual Studi中的web发布体验o它构建在MSDeploy和其他技术之上,但我不直接使用MSDeploy。如果在IIS管理器中导入包而不是使用生成的帮助脚本,您会如何处理这种情况?@StevenLiekens我使用了UI,但不是最近,是否有保留其他文件的选项?如果没有,那就不好了。看起来s使用MSBuild创建包时不应用DoNotDelete规则。手动将其添加到executed.cmd时,实际上works@SayedIbrahimHashimi.cmd文件是否应该包含
    -enableRule:DoNotDeleteRule
    命令选项?我在那里看不到它。手动添加规则有效。因此,我建议使用此解决方案d您是否处理在IIS管理器中导入包而不是使用生成的帮助程序脚本的情况?@StevenLiekens我使用了UI,但不是最近,是否有保留其他文件的选项?如果没有,则不好。在使用MSBuild创建包时,似乎未应用DoNotDelete规则。手动将其添加到实际上,executed.cmdworks@SayedIbrahimHashimi.cmd文件是否应该包含
    -enableRule:DoNotDeleteRule
    命令选项?我在那里看不到它。手动添加规则有效。因此,我建议使用此解决方案