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

Son*_*oul 9 .net transform msdeploy visual-studio-2012 visual-studio-2013

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

发布个人资料

PublisProfiles
    dev.pubxml
    local.pubxml
Run Code Online (Sandbox Code Playgroud)

变换

 Web.Config
     Web.Debug.config
     Web.local.config
     Web.Release.config
Run Code Online (Sandbox Code Playgroud)

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

Transformed Web.config using  C:\...\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
Run Code Online (Sandbox Code Playgroud)

所以它正在使用Release.config ..我打开了local.pubxml并尝试更改它

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
Run Code Online (Sandbox Code Playgroud)

至:

<LastUsedBuildConfiguration>local</LastUsedBuildConfiguration>
Run Code Online (Sandbox Code Playgroud)

但后来它正在使用Web.Debug.config转换.

开发,发布,局部变换除了一些转换属性外是相同的.

Son*_*oul 6

看起来像一个bug,因为我终于得到了它的工作:

  1. 删除Web.Debug.config

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

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

  4. 确认转换仍然有效


Jim*_*mmy 5

发布管道应该使用这两种个人资料的改造和构建配置变换。

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