visual studio发布选择错误的web.config转换

时间:2014-03-17 22:48:47

标签: .net visual-studio-2012 visual-studio-2013 transform msdeploy

根据我读到的内容,只要您有一个与发布配置文件的名称相匹配的转换,就应该应用它,但对我来说情况并非如此。

发布个人资料

PublisProfiles
    dev.pubxml
    local.pubxml

变换

 Web.Config
     Web.Debug.config
     Web.local.config
     Web.Release.config

当我使用本地配置发布时,我看到了:

Transformed Web.config using  C:\...\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.

所以它使用了Release.config ..我打开了local.pubxml并试图改变这个

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>

为:

<LastUsedBuildConfiguration>local</LastUsedBuildConfiguration>

然后它使用Web.Debug.config转换。

dev,release,局部变换除了少数转换属性外是相同的。

6 个答案:

答案 0 :(得分:6)

似乎是一个错误,因为我终于得到了它的工作:

  1. 删除Web.Debug.config

  2. 发布本地(我的Web.local.config正在应用)

  3. 右键单击Web.Config“添加配置转换”以恢复Web.Debug.config

  4. 确认转换仍然有效

答案 1 :(得分:4)

发布管道应该使用 您的配置文件的转换和构建配置转换。

这样做的逻辑是您的配置文件转换可能具有特定于目标的设置(例如,在生产与暂存中使用哪些连接字符串),但您的构建配置具有特定于构建的设置(例如,Debug具有与调试相关的设置,但是发布把它们关掉)。允许您混合和匹配这些可以提供更大的灵活性(需要在启用调试设置的情况下发布到Staging?只需将Debug构建配置与Staging配置文件一起使用)。来自web.YourProfile.config的设置将始终否决任何先前的转换。

答案 2 :(得分:3)

我的问题与平台配置有关:

在Configuration Manager窗口中,您可以选择配置名称(&#34; Active solution configuration&#34; combobox)和目标平台(&#34; Active solution platform&#34; combobox)。我正确地为每个项目设置了我的新配置(&#34; MyStagingConfig&#34;,比如说),但忘记了平台 - 所以我在&#34;混合平台&#34;中配置了所有配置。

当我使用&#34; MyStagingConfig - 任何CPU&#34;发布项目时,它使用Web.Staging.config文件而不是Web.MyStagingConfig.config转换了配置。有点头疼之后,我意识到&#34;任何CPU&#34;平台,我没有配置,默认配置为使用&#34; Staging&#34; config(因为我在创建&#34; MyStagingConfig&#34时从&#34; Staging&#34; config中导入了设置。)。

答案 3 :(得分:1)

在Configuration Manager中,检查每个&#34; Active解决方案配置&#34;并确保&#34;配置&#34;列对每个项目都是正确的。 (就我而言,开发人员不小心改变了其中一个值。)

答案 4 :(得分:1)

在你的csproj中,你会发现看起来像......的代码。

  <Target Name="BeforeBuild" Condition="'$(PublishProfileName)' == '' And '$(WebPublishProfileFile)' == ''">
    <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
  </Target>

这是默认值。注意,你可以修改它,但我不推荐这个。

我建议您检查构建配置设置。从菜单中选择Build > Configuration Manager。验证为项目选择的配置是否是要使用的配置。 I.E.如果您为web.config所在的主构建项目选择了Release,则在第二列中,即使您的解决方案配置标题为Release,也会进行Debug转换。将Release更改为Debug(或相应的设置),它将解决您的问题。

答案 5 :(得分:0)

在VS2015中还有一个错误,但差别很小:在我的情况下,我看到当我在解决方案级别创建新的配置文件时,它不适用于mvc项目。它甚至没有出现在下拉列表中。

但是,当我从mvc项目中单击New时(带有复选框&#34;创建新的解决方案配置&#34;选中),只有那时我的mvc项目才会出现新的配置文件。