使用 WebDeploy 的 VS2013 发布不会转换其他文件

VS2013 Publish using WebDeploy isn't transforming additional files

我已经构建了简单的 WebAPI 项目,而不是我正在尝试使用 Visual Studio 2013 内置发布机制(构建>发布)
来发布它 我选择 Web Deploy 作为发布方法,一切正常,除了转换文件。

我有 Web.config 和 Settings.config,每个都有两个转换。 当我在 bin 文件夹中对我的项目进行标准构建时,我看到单个 Web.config 和 Settings.config 应用了转换,但是当我发布而不是转换后的 Settings.config 文件时,我看到一个没有应用转换。

看起来 Visual Studio 中的发布机制只是在转换 Web.config 并且它会跳过其他文件。

下面是我负责应用转换的 csproj 的一部分:

<Target Name="AfterBuild">
  <TransformXml Condition="Exists('Settings.$(Configuration).config')" Source="Settings.config" Destination="$(OutputPath)Settings.config" Transform="Settings.$(Configuration).config" />
  <TransformXml Condition="Exists('Web.$(Configuration).config')" Source="Web.config" Destination="$(OutputPath)Web.config" Transform="Web.$(Configuration).config" />
</Target>

我的问题是我应该如何设置我的发布配置文件,而不是复制干净 Settings.config 它会应用正确的转换并发布它。

编辑: 我设法找到了可能有助于解决此问题的一件事。如果我将 UseMsdeployExe 添加到 pubxml,我可以在输出中看到我的 Settings.config 已转换并保存到 bin 文件夹,但稍后它会被原始文件覆盖。

我的 AfterBuild 目标被正确调用,但在它之后我可以在输出中看到这些行:

2> 正在将所有文件复制到下面 package/publish 的临时位置: 2>obj\Debug\Package\PackageTmp。 2> 复制bin\Api.dll 到obj\Debug\Package\PackageTmp\bin\Api.dll。 2> 复制Settings.config到obj\Debug\Package\PackageTmp\Settings.config.

使用 SlowCheetah 转换文件,它会为您处理部署。

https://www.nuget.org/packages/SlowCheetah