9

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

我正在使用 Visual Studio 2012 RTM。

更新 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

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

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

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

更新 4 :: 判决

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

问题解决了。

4

3 回答 3

13

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

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

尝试以下操作:

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

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

于 2013-05-23T18:38:08.303 回答
3

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

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

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

于 2013-08-27T19:09:33.550 回答
2

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

在此处输入图像描述

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

在此处输入图像描述

于 2012-08-19T19:01:22.043 回答