我们目前通过MSDeploy发布我们的Web应用程序,以创建.ZIP文件(文件部署)。
我发布时,我想要应用的一些.config文件转换为。所以我创建了appSettings.test.config
和appSettings.live.config
。
为方便起见,我已将此添加到我们的网络应用程序的csproj中,该应用程序应用了变换:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="ApplyConfigTransforms" BeforeTargets="TransformWebConfigCore">
<TransformXml Source="appSettings.config" Transform="appSettings.$(Configuration).config" Destination="appSettings.config" />
<TransformXml Source="connectionStrings.config" Transform="connectionStrings.$(Configuration).config" Destination="connectionStrings.config" />
</Target>
这会挂钩TransformWebConfigCore
目标并完成工作。但是,它将变换应用于我的web文件夹中的appSettings文件(正如目标所期望的那样)。我想要做的是将转换应用于输出pacakge中的文件。
我该怎么做?我不知道如何处理发布时创建的临时文件夹..
答案 0 :(得分:0)
当你在发布后约10分钟找到答案时,难道你不讨厌它。
我攻击了目的地,修复了问题。如果我在一个属性中有这个,那会很好,但我找不到一个使用,所以我做了:
<Target Name="ApplyConfigTransforms" AfterTargets="CopyAllFilesToSingleFolderForMsdeploy">
<TransformXml Source="appSettings.config" Transform="appSettings.$(Configuration).config" Destination="obj\Test\Package\PackageTmp\appSettings.config" />
<TransformXml Source="connectionStrings.config" Transform="connectionStrings.$(Configuration).config" Destination="obj\Test\Package\PackageTmp\connectionStrings.config" />
</Target>
注意,我也更改了目标,以确保它在我的所有文件被复制后发生