【发布时间】:2017-02-21 00:34:41
【问题描述】:
我已经构建了简单的 WebAPI 项目,而不是尝试使用 Visual Studio 2013 内置发布机制(BUILD>发布)发布它
我选择了 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\Debug\Package\PackageTmp。 2> 将 bin\Api.dll 复制到 obj\Debug\Package\PackageTmp\bin\Api.dll。 2> 将 Settings.config 复制到 obj\Debug\Package\PackageTmp\Settings.config。
【问题讨论】:
标签: asp.net visual-studio-2013 webdeploy microsoft-web-deploy