【问题标题】:Visual Studio 2012 Web Deploy Publish ignores selected Configuration for transform and buildVisual Studio 2012 Web 部署发布忽略了转换和构建的选定配置
【发布时间】:2012-08-14 06:16:26
【问题描述】:

当我创建发布配置文件时,我可以选择我希望发布用于此配置文件的配置。这些选项类似于 Debug、Release 或任何自定义的选项,例如 Staging。 问题是,如果我选择 Release 或 Debug 以外的任何配置,比如 Staging,Visual Studio 将完全忽略我的选择并使用 Web.Release.config 进行转换和构建。 我做错了什么还是设计使然?似乎 Publish 仅将 Release 和 Debug 识别为可接受的配置。对这个问题有什么想法吗?

我正在使用 Visual Studio 2012 RTM。

Update 1 :: "NightlyLive - Any CPU" 选择配置:

这里我选择了我自己的自定义配置“NightlyLive”:

当我发布时会发生以下情况:

6>------ Build started: Project: UI.Next, Configuration: Release Any CPU ------
7>------ Publish started: Project: UI.Next, Configuration: Release Any CPU ------
7>Transformed Web.config using [...]\UI.Next\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.

如您所见,它使用 Release Any CPU(而不是 NightlyLive - Any CPU)构建项目,还使用 ​​Web.Release.config(而不是 Web.NightlyLive.config)转换 Web.config。

更新 2 :: 个人资料名称重命名为“NightlyLive”:

在这里,我将配置文件名称从“test”重命名为“NightlyLive”。

这是控制台输出:

6>------ Build started: Project: UI.Next, Configuration: Release Any CPU ------
7>------ Publish started: Project: UI.Next, Configuration: Release Any CPU ------
7>Transformed Web.config using [...]\UI.Next\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
7>[...]\UI.Next\Web.NightlyLive.config(23,18): Warning : Argument 'debug' did not match any attributes
7>[...]\UI.Next\obj\Release\TransformWebConfig\transformed\Web.config(78,6): Warning : No attributes found to remove
7>Transformed obj\Release\TransformWebConfig\transformed\Web.config using [...]\UI.Next\\Web.NightlyLive.config into obj\Release\ProfileTransformWebConfig\transformed\Web.config.

所以在这里,它仍然是使用 Release Any CPU 构建的。

但对于 Web.config,它首先使用 Web.Release.config 进行转换,然后使用 Web.NightlyLive.config 在前一个转换的基础上进行第二次转换。

我认为双重转换是有意设计的,而且是有道理的。但是,您必须将配置文件名称重命名为配置名称以强制使用您的自定义转换文件,这看起来不对。

更新 3 :: 添加了 TestSolution

您可以从here 下载精简的解决方案。

首先我创建了一个全新的 vs2012 解决方案,一切正常。所以我决定剥离我当前的解决方案并作为测试用例上传。

请注意,我的解决方案最初是我在 vs2012 中打开的 vs2010 解决方案,vs2012 对解决方案进行了必要的修改。

更新 4 :: 判决

我猜我的解决方案配置都搞砸了。所以基本上为了解决这个问题,我删除了所有自定义的解决方案和项目配置,并与 web.config 转换文件一起再次创建它们。

问题已解决。

【问题讨论】:

    标签: configuration visual-studio-2012 msdeploy webdeploy


    【解决方案1】:

    我经历了完全相同的行为。

    对我来说,问题是自定义解决方案配置没有正确引用我尝试部署的 Web 项目中的自定义配置。

    尝试以下方法:

    1. 右键单击解决方案并输入属性
    2. 从左上角的下拉菜单中选择您的自定义配置
    3. 展开配置属性并选择配置
    4. 确保您的 Web 项目在表格中选择了正确的自定义配置。

    完成此操作后,使用自定义配置的 Web 部署工作正常。

    【讨论】:

    • 感谢您分享您的答案,但在我的 VS 解决方案中并非如此。我认为从 VS 2010 -> VS 2012 的转换对于我的解决方案来说并不是很成功并且搞砸了:>
    • +1 这是偷偷摸摸的。我在工具栏上正确设置了构建配置,项目属性视图也具有正确的配置。但是,当我进入解决方案属性并扩展配置时,其中一个项目选择了不同的配置。非常感谢,这对我有用。
    【解决方案2】:

    我还将 VS2010 解决方案转换为 VS2012 并且遇到了同样的问题。借助其中一些答案为我提供了重点关注的线索,我能够将罪魁祸首归咎于我的发布者资料和配置管理器的组合。

    在我的配置管理器中,我有三个“活动解决方案平台”用于我的暂存配置:任何 CPU、混合平台和 x86。我的登台配置管理器的默认视图是混合平台,它全部设置为登台配置。当我去创建我的发布者配置文件时,我选择了“Staging - Any CPU”,它最初对我来说是不知情的,正在使用发布配置。一旦我开始在配置管理器中更改平台,问题就很明显了,我能够为解决方案中的每个配置/平台组合正确设置配置。

    因此,长话短说,请确保检查要在其中发布的配置中的每个活动解决方案平台(通过下拉列表更改),并验证每个项目是否在配置管理器中使用正确的配置。此外,请确保您的发布者资料使用正确的配置/平台组合。

    【讨论】:

      【解决方案3】:

      在网络发布对话框中,我们现在允许您在“设置”选项卡上指定构建配置。默认为发布。

      在您的情况下,您能否确保在此处选择了 Staging。仅供参考,如果您没有将 Staging 视为菜单选项,那是因为您创建了 Solution 构建配置,而不是 Project 配置。下拉列表是由项目构建配置值驱动的,而不是解决方案构建配置。您可以使用配置管理器编辑解决方案/项目构建配置。

      【讨论】:

      • tnx 赛义德。我确实从下拉列表中选择了我的配置。但是 build 和 web.config 转换是使用 Release 配置执行的。请查看我添加到帖子中的更新信息。
      • 顺便说一句,我可以强制我的发布配置文件使用我的自定义配置(如 NightlyLive)的唯一方法是将发布配置文件名称重命名为与我的配置完全相同的名称(即 NightlyLive。)
      • 您不必将它们命名为相同的名称。您可以将示例项目上传到 skydrive/dropbox 并在此处分享链接以便我查看吗?
      • 说,请看看我的更新 3。我认为我的解决方案搞砸了。我想我必须删除所有自定义配置并重新创建它们以解决问题:>
      • @Sayed Ibrahim Hashimi 我的行为与更新 2 中的行为相同。您有没有找到解决方案(除了使用更新 3 中建议的解决方案)。我的解决方案是现在使用 VS 2012 管理的旧 VS 2010。
      猜你喜欢
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      相关资源
      最近更新 更多