我的构建:
>使用msbuild构建(/ t:build)
>使用msbuild发布(/ t:发布)
>包含nuget
>用章鱼部署
生成包含以下文件的工件(nuget包):
> Azure.ccproj.cspkg
> ServiceConfiguration.Production.csfg
> Web.config
(将在部署期间通过八达通进行转换)
cspkg是一个有效的可部署包.问题是它包含一个预转换的web.config,因为转换发生在部署时.有关transforms和variable 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>
条件允许仅在构建服务器上运行,而不是在本地运行.