Web 部署忽略 MSBuild 设置的 SkipExtraFilesOnServer
Web Deploy ignores SkipExtraFilesOnServer set by MSBuild
我正在使用 MSBuild 在我们的 CruiseControl 服务器上创建一个 Web 部署包来部署我们的 Web 应用程序。部署时,所有不在包中的内容都将在我们的服务器上删除。
我尝试将 SkipExtraFilesOnServer 选项设置为 true。但是它被 Web Deploy
忽略了
<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
构建网络部署包
- 您在创建包时设置了
SkipExtraFilesOnServer=true
- 使用 msdeploy.exe
发布网络部署包
您可能 运行 遇到的问题是将包发布到服务器的时间。当 pass SkipExtraFilesOnServer=true
被翻译成 msdeploy 选项 -enableRule:DoNotDeleteRule
。在您的案例中将 发布到包 时应用(并且相关)。现在您需要确保在将包发布到服务器 时设置该选项。该选项无论如何都没有嵌入到包中。
您可以通过设置不同的属性来影响生成的 .publish.cmd
文件。如果您想将 SkipExtraFilesOnServer
属性 翻译成 -enableRule:DotNotDeleteRule
,您可以将其添加到您的 .csproj
-文件:
<PropertyGroup>
<_GenerateSampleDeployScript_AfterSet_Destination
Condition="$(SkipExtraFilesOnServer) == 'True'">
set _MsDeployAdditionalFlags=%_MsDeployAdditionalFlags% -enableRule:DoNotDeleteRule
</_GenerateSampleDeployScript_AfterSet_Destination>
</PropertyGroup>
它将 -enableRule:DoNotDeleteRule
参数添加到 msdeply,每当生成包时 SkipExtraFilesOnServer
属性 设置为 True
。
我正在使用 MSBuild 在我们的 CruiseControl 服务器上创建一个 Web 部署包来部署我们的 Web 应用程序。部署时,所有不在包中的内容都将在我们的服务器上删除。
我尝试将 SkipExtraFilesOnServer 选项设置为 true。但是它被 Web Deploy
忽略了<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 构建网络部署包
- 您在创建包时设置了
SkipExtraFilesOnServer=true
- 使用 msdeploy.exe 发布网络部署包
您可能 运行 遇到的问题是将包发布到服务器的时间。当 pass SkipExtraFilesOnServer=true
被翻译成 msdeploy 选项 -enableRule:DoNotDeleteRule
。在您的案例中将 发布到包 时应用(并且相关)。现在您需要确保在将包发布到服务器 时设置该选项。该选项无论如何都没有嵌入到包中。
您可以通过设置不同的属性来影响生成的 .publish.cmd
文件。如果您想将 SkipExtraFilesOnServer
属性 翻译成 -enableRule:DotNotDeleteRule
,您可以将其添加到您的 .csproj
-文件:
<PropertyGroup>
<_GenerateSampleDeployScript_AfterSet_Destination
Condition="$(SkipExtraFilesOnServer) == 'True'">
set _MsDeployAdditionalFlags=%_MsDeployAdditionalFlags% -enableRule:DoNotDeleteRule
</_GenerateSampleDeployScript_AfterSet_Destination>
</PropertyGroup>
它将 -enableRule:DoNotDeleteRule
参数添加到 msdeply,每当生成包时 SkipExtraFilesOnServer
属性 设置为 True
。