【问题标题】:WebAPI project doesn't seem to post transformed web.config to bin folder?WebAPI 项目似乎没有将转换后的 web.config 发布到 bin 文件夹?
【发布时间】:2013-08-06 20:49:43
【问题描述】:

我在 .NET 配置转换方面做得很好。我现在将它们放在用于数据使用的类库和 WPF 应用程序中。

但是,当我尝试使用 ASP.NET WebAPI 项目设置它们时,似乎发生了一些奇怪的事情。

配置文件永远不会出现在我的 bin 目录中,因此 web.config 始终显示为预先形成的配置文件。

如果我在 csproj 上使用“/t:TransformWebConfig /pConfiguration=Test”参数运行 MSbuild,我会看到以下内容:

CollectWebConfigsToTransform:为 Config 找到以下内容 转换:Areas\HelpPage\Views\Web.config、Web.config、 Views\Web.config、bin\Web.config PreTransformWebConfig:跳过复制 Web.config 到 obj\Test\TransformWebConfig\original\Web.config,文件 obj\Test\TransformWebConfig\original\Web.config 是最新的 跳过 复制 C:\Users\killesj1\Repositories\MRP Trunk\Macro Projects\VEUploader\src\app\VEUploader.WebAPI\Web.config 到 obj\Test\TransformWebConfig\original\bin\Web.config,文件 obj\Test\TransformWebConfig\original\bin\Web。配置是最新的 TransformWebConfigCore:跳过目标“TransformWebConfigCore” 因为所有输出文件相对于输入都是最新的 文件。 TransformWebConfigCore:跳过目标 “TransformWebConfigCore”,因为所有输出文件都是最新的 关于输入文件。 PostTransformWebConfig:已转换 Web.config 使用 Web.Test.config 进入 obj\Test\TransformWebConfig\transformed\Web.config。变身 C:\Users\killesj1\Repositories\MRP Trunk\Macro Projects\VEUploader\src\app\VEUploader.WebAPI\Web.config 使用 C:\Users\killesj1\Repositories\MRP Trunk\Macro Projects\VEUploader\src\app\VEUploader.WebAPI\Web.Test .config 到 obj\Test\TransformWebConfig\transformed\bin\Web.config.

似乎转换正在转换文件,但不知何故,它没有返回到 bin 目录,旧的 Web.config 保留在那里。

这正常吗?我怎样才能让它的行为类似于其他网络转换?

【问题讨论】:

  • 我想一个更好的表达方式是“这个没有输出到 bin 目录有问题吗?”当我在 Visual Studio 中进行“预览转换”时,它似乎完美地显示出来。在我在这里等待专业知识的同时,我将编写一个快速方法来查看它是否指的是新值。
  • 好的,所以我尝试了一种只返回配置设置的快速方法,看起来它仍在使用未转换的 web.config。不知道为什么除了原始文件的最终副本之外一切都可以正常工作?

标签: msbuild asp.net-web-api web-config web-config-transform slowcheetah


【解决方案1】:

web.config 通常位于根目录中,不会复制到 bin 子文件夹中。要应用转换,您需要有一些模板 web.config 并将其转换为根 web.config。 例如。见https://stackoverflow.com/a/16239488/52277Use Visual Studio web.config transform for debugging

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,在未转换的 Appveyor 上部署测试项目,并按照下面链接中的建议进行操作,现在一切正常。我将所有项目设置为在 [Target Name="AfterBuild"] 中进行 xxx.config 转换,并且它在我的本地开发机器上运行良好,但是在将代码推送到 Appveyor 时,由于未转换的文件等,测试会失败. 基本上,将所有内容移至 [Target Name="BeforeBuild"] 看看是否有帮助。

    MSBuild - how to force "AfterBuild" target when I do deployment?

    【讨论】:

      猜你喜欢
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2018-11-17
      • 1970-01-01
      • 2021-06-24
      相关资源
      最近更新 更多