【问题标题】:VS2013 Publish using WebDeploy isn't transforming additional files使用 WebDeploy 的 VS2013 发布不会转换其他文件
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 抱歉这么晚才回复。我已经尝试过SlowCheetah,但它没有转换位于单独文件()中的 appSettings。我添加了变换,但是当我尝试预览它们时,没有任何变化。
    • 您能否提供您的 appSettings 和转换示例?
    • 很抱歉造成混乱,但它看起来工作正常。我刚刚创建了新项目并尝试了 SlowCheetah,一切正常。就我而言,问题是我安装了两个类似的扩展Configuration TransformSlowCheetah。我已经先卸载了,现在一切正常。遗憾的是,这不是内置的,但希望很快就会 - visualstudio.uservoice.com/forums/121579-visual-studio-ide/…
    • 没问题。很高兴为您提供帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多