【问题标题】:Visual Studio 2013 Website Project - Change Configuration in Configuration ManagerVisual Studio 2013 网站项目 - 在配置管理器中更改配置
【发布时间】:2015-02-26 01:14:14
【问题描述】:

我在 Visual Studio 2013 中有网站项目。我有两个发布配置文件,一个用于暂存,另一个用于生产。在配置管理器中,我可以创建新的活动解决方案配置,但无法将新配置添加到我的下拉列表中,调试是唯一的选项。

所以现在当我尝试使用我的生产配置文件发布时,web.config 正在被 Web.Debug.Config 和我的 web.Production.Config 转换。

如何向下拉菜单添加新配置?

【问题讨论】:

  • 您是否在Web.Debug.Config 中进行任何重要的转换?
  • 我不会说重要,但它们是至关重要的。主要更改是 url 重写和数据库连接字符串。

标签: visual-studio-2013 configurationmanager


【解决方案1】:

如何向下拉菜单添加新配置?

你不能。至少不是为了您需要使用这些新配置的目的。

我会假设您确实需要知道这一点:

如何在不通过调试转换将debug 标志应用于web.config 的情况下发布网站?

这已经发生了,只是以一种令人困惑的方式。


当您使用发布网站向导发布网站时,它会将适当的转换应用到web.config。在你的情况下,Web.Debug.ConfigWeb.Production.Config

现在是令人困惑的部分:

默认情况下,web.debug.config 实际上从web.config删除 debug 属性。

<compilation xdt:Transform="RemoveAttributes(debug)" />

发生这种情况的原因与缺少网站项目文件和底层构建工具有关。


如果您想停止应用调试转换并且您没有自定义配置,您可以删除web.debug.config。请务必添加

<compilation xdt:Transform="RemoveAttributes(debug)" />

在每个环境特定转换(web.Production.Config 等)的 &lt;system.web&gt; 元素内。


我的建议是:

  • 保持web.debug.config 不变。处于默认状态。
  • 为每个环境创建一个发布配置文件。
  • 为每个发布配置文件添加转换 (web.&lt;configuration&gt;.config)
  • 将任何特定于环境的配置放入适当的转换文件中。

【讨论】:

  • 事情是,我正在使用调试配置进行 url 重写,我不需要本地。在我的 release.config 中,我需要新的重写和新的连接字符串。所以我有它,我需要调试和发布配置。您是否暗示我可以删除 debug.config 并添加一个 staging.config?这样我仍然有两个用于暂存和发布的配置,没有发布也可以获得调试转换。
  • 在这种情况下我可能会做的是,使用web.config 进行本地开发和调试。为您拥有的每个环境、UAT、暂存、生产等创建新的解决方案配置。添加 web.&lt;configuration&gt;.config 转换以及发布到每个环境时要使用的自定义。从web.debug.config 中取出除默认内容之外的所有内容。
【解决方案2】:

为了让我的发布设置按我想要的方式工作,我必须:

  • 将 web.debug.config 恢复为默认内容(我在此处进行了一些转换,用于我的暂存环境)
  • 对于 /App_Data/PublishProfiles/ 中的每个发布配置文件,右键单击并选择添加配置转换以在站点的根目录下创建一个新配置文件(请注意,它不会嵌套在默认 web.config 下,除非配置文件标题为调试或发布,如果你问我有点奇怪)
  • 为每个新配置添加任何相关的转换

由于网站项目中的所有发布配置文件似乎都停留在调试配置上,因此我无法避免 web.debug.config 转换我的默认 web.config。有了这个解决方案,我们根本不使用 web.config 来发布特定的转换。

我想感谢 Chris O'Neill 的帮助,如果他很冗长,他的回答让我了解了这个解决方案。

【讨论】:

  • 感谢您的信任和反馈。我仍在研究我的答案风格,我会尝试将其编辑为更紧凑的内容。
  • 我的 Web.Debug.config 嵌套在 Web.config 下,但 Web.Release.config 没有。 :-(
  • 我花了一些时间试图弄清楚这一点,再次感谢 SO 的救援。对于它的价值,我在这个主题上发布了一条单独的消息,试图理解这一切。stackoverflow.com/questions/35703040/…
【解决方案3】:

您可以手动修改/创建项目 FSUResearch 的配置。步骤是:

在解决方案资源管理器中: 右键单击项目->卸载项目->右键单击FSUResearch(不可用)->单击编辑FSUResearch.csproj

在这个文件中你会看到很多'PropertyGroup' 标签。这些 PropertyGroups 由配置和平台的不同组合组成。所以创建一个新的 PropertyGroup 并给出你自己的项目配置。确保提供已经是解决方案配置名称的项目配置名称(了解build configurations)。

例如:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Production|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>

保存更改,然后再次右键单击 .csproj 文件并重新加载项目。

【讨论】:

  • 感谢您的输入,但请记住这是一个网站项目,因此不包含.csproj 文件,也没有卸载项目的选项。我确实有一个.publishproj 文件,但有一条评论坚持我不编辑此文件。我想它想通过一些 VS 对话来编辑。尽管如此,当涉及到&lt;propertygroups&gt; 时,这似乎类似于.csproj 文件。我只是不确定要编辑什么来添加发布配置。
  • 只需复制其中一个属性组并将配置替换为您自己的。试试看它是否有效。
  • 没有骰子,遗憾的是:(我复制了调试属性组并将配置更改为发布,但即使在重建站点后我在配置管理器中也没有额外的选项。我可能错过了一个步骤让它识别更改。幸运的是,我可能会找到解决方法。无论如何,感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
相关资源
最近更新 更多