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

时间:2016-10-12 09:06:57

标签: asp.net visual-studio-2013 webdeploy microsoft-web-deploy

我已经构建了简单的WebAPI项目,而不是我尝试使用Visual Studio 2013内置的发布机制(BUILD> Publish)发布它 我选择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 - ;将所有文件复制到下面的临时位置以进行包/发布: 2 - ; OBJ \调试\包\ PackageTmp。 2 - ;将bin \ Api.dll复制到obj \ Debug \ Package \ PackageTmp \ bin \ Api.dll。 2 - ;将Settings.config复制到obj \ Debug \ Package \ PackageTmp \ Settings.config。

1 个答案:

答案 0 :(得分:1)

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

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