powershell – 使用转换后的web.config post-publish更新Azure CSPKG

我的构建:

>使用msbuild构建(/ t:build)
>使用msbuild发布(/ t:发布)
>包含nuget
>用章鱼部署

生成包含以下文件的工件(nuget包):

> Azure.ccproj.cspkg
> ServiceConfiguration.Production.csfg
> Web.config
(将在部署期间通过八达通进行转换)

cspkg是一个有效的可部署包.问题是它包含一个预转换的web.config,因为转换发生在部署时.有关transformsvariable substitution的章程文件,请参阅.

如何使用驻留在部署包中的转换后的web.config覆盖cspkg中的web.config?

我有powershell和完整的.net框架供我使用.

或者,如果解压缩cspkg更有意义,覆盖文件然后重新打包,我认为这是可以接受的.我不知道该怎么做.

我知道Save-AzureServiceProjectPackage存在,但我无法运行它并且文档缺乏.

最佳答案 我有一个Octopus项目有两个步骤:首先是在IIS中托管的Dev,第二个是在Azure中托管的Prod. TeamCity推出了2个nuget包:一个是OctoPack for Dev,另一个是NuGet Pack for Prod with cspkg.

我在Azure.ccproj中有这个目标:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="Transform" BeforeTargets="BeforeBuild" Condition="'$(TEAMCITY_VERSION)' != ''">
  <PropertyGroup>
      <SourceTransformFile>..\Api\Web.config</SourceTransformFile>
      <TransformFile>..\Api\Web.Prod.config</TransformFile>
      <DestinationTransformFile>..\Api\Web.config</DestinationTransformFile>
  </PropertyGroup>
  <TransformXml
      Source="$(SourceTransformFile)"
      Transform="$(TransformFile)"
      Destination="$(DestinationTransformFile)" />
</Target>

条件允许仅在构建服务器上运行,而不是在本地运行.

点赞