Configuration Visual Studio 2012 Web Deploy发布忽略转换和生成的选定配置

Configuration Visual Studio 2012 Web Deploy发布忽略转换和生成的选定配置,configuration,visual-studio-2012,msdeploy,webdeploy,Configuration,Visual Studio 2012,Msdeploy,Webdeploy,创建发布配置文件时,我可以选择希望发布用于此配置文件的配置。这些选项类似于Debug、Release或任何自定义定义的选项,如Staging。 问题是,如果我选择了Release或Debug之外的任何配置,比如Staging,visual studio会完全忽略我的选择,并使用Web.Release.config进行转换和生成。 我做错了什么,还是故意的?发布似乎只将发布和调试识别为可接受的配置。对这个问题有什么想法吗 我正在使用Visual Studio 2012 RTM 更新1::“Nigh

创建发布配置文件时,我可以选择希望发布用于此配置文件的配置。这些选项类似于Debug、Release或任何自定义定义的选项,如Staging。 问题是,如果我选择了Release或Debug之外的任何配置,比如Staging,visual studio会完全忽略我的选择,并使用Web.Release.config进行转换和生成。 我做错了什么,还是故意的?发布似乎只将发布和调试识别为可接受的配置。对这个问题有什么想法吗

我正在使用Visual Studio 2012 RTM

更新1::“NightlyLive-任何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.
所以在这里,它仍然使用任何CPU来构建

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

我认为这种双重转变是经过设计的,是有意义的。但是,您必须将配置文件名重命名为配置名称才能强制使用自定义转换文件,这一事实看起来并不正确

更新3::添加了TestSolution

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

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

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

更新4::判决

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


问题已解决。

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

在您的情况下,您可以确保您已经在那里选择了Staging。仅供参考,如果您不将登台视为菜单选项,则其原因是您创建了解决方案构建配置,而不是项目配置。该下拉列表不包含项目生成配置值,而不是解决方案生成配置。您可以使用Configuration Manager编辑解决方案/项目生成配置


我经历了完全相同的行为

我遇到的问题是,自定义解决方案配置没有正确引用我试图部署的web项目中的自定义配置

请尝试以下操作:

  • 在解决方案上单击鼠标右键,然后输入“属性”
  • 从左上角的下拉列表中选择自定义配置
  • 展开配置属性并选择配置
  • 确保您的web项目在表中选择了正确的自定义配置

  • 完成此操作后,带有自定义配置的web部署工作正常。

    我还将VS2010解决方案转换为VS2012,并且遇到了相同的问题。在这些答案的帮助下,我找到了需要关注的线索,我找到了我的发布者配置文件和配置管理器组合的罪魁祸首

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


    因此,长话短说,请确保检查要发布的配置中的每个活动解决方案平台(通过下拉菜单进行更改),并验证每个项目在configuration Manager中使用的配置是否正确。此外,请确保您的发布者配置文件使用了正确的配置/平台组合。

    tnx Sayed。我确实从下拉列表中选择了我的配置。但是build和web.config转换是使用发布配置执行的。请查看我添加到我的帖子中的更新信息。顺便说一句,我可以强制我的发布配置文件使用自定义配置(如NightlyLive)的唯一方法是将发布配置文件名称重命名为与我的配置(即NightlyLive)完全相同的名称。您不应该将它们命名为相同的名称。你能把一个示例项目上传到skydrive/dropbox并在这里共享链接吗?Sayed,请看我的更新3。我想我的解决方案搞砸了。我想我必须删除所有自定义配置并重新创建它们来解决问题:>@Sayed Ibrahim Hashimi我的行为与更新2中的相同。您有没有找到解决方案(除了使用更新3中建议的解决方案)。我的解决方案是一个较旧的VS 2010,现在由VS 2012管理。感谢分享您的答案,但我的VS解决方案并非如此。我认为从VS 2010->VS 2012的转换对我的解决方案来说不是很成功,并且把事情搞砸了:>+1这太狡猾了。