Visual Studio 2013 年网站项目 - 在配置管理器中更改配置

Visual Studio 2013 Website Project - Change Configuration in Configuration Manager

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

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

如何向下拉列表中添加新配置?

您可以modify/create手动配置 FSUResearch 项目。步骤是:

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

在这个文件中你会看到很多'PropertyGroup' tags. These PropertyGroups consists of different combinations of configuration and platform. So create a new PropertyGroup and give your own project configurations. Make sure to give the project configuration name that is already a solution configuration name (Understand 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 文件并重新加载项目。

How do I add new Configurations to the dropdown?

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

我假设你真的需要知道这个:

How can I publish a web site without the debug flag being applied to the web.config by the debug transform?

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


当您使用“发布网站”向导发布网站时,它会将适当的转换应用到 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 等)的 <system.web> 元素内。


我的建议是:

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

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

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

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

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