Проект веб-сайта Visual Studio 2013 — изменение конфигурации в диспетчере конфигураций

У меня есть проект веб-сайта в Visual Studio 2013. У меня есть два профиля публикации, один для подготовки, а другой для производства. В диспетчере конфигураций я могу создавать новые конфигурации Active Solution, но не могу добавлять новые конфигурации в раскрывающийся список, единственный вариант — «Отладка».

Итак, теперь, когда я пытаюсь опубликовать, используя свой производственный профиль, web.config преобразуется как Web.Debug.Config, так и моим web.Production.Config.

Как добавить новые конфигурации в раскрывающийся список?

введите здесь описание изображения


person MyNameIsKo    schedule 12.02.2015    source источник
comment
Вы делаете какие-либо существенные преобразования в Web.Debug.Config?   -  person Chris O'Neill    schedule 24.02.2015
comment
Я бы не сказал, что существенные, но они жизненно важны. Основными изменениями являются перезапись URL-адреса и строка подключения к базе данных.   -  person MyNameIsKo    schedule 24.02.2015


Ответы (3)


Как добавить новые конфигурации в раскрывающийся список?

Вы не можете. По крайней мере, не для той цели, для которой вам нужно использовать эти новые конфигурации.

Я сделаю предположение, что вам действительно нужно это знать:

Как я могу опубликовать веб-сайт без применения флага debug к web.config преобразованием отладки?

Это уже происходит, просто запутанным образом.


Когда вы публикуете сайт с помощью мастера публикации веб-сайта, он применяет соответствующие преобразования к файлу web.config. В вашем случае Web.Debug.Config и Web.Production.Config.

А теперь о запутанной части:

По умолчанию web.debug.config фактически удаляет атрибут debug из файла web.config.

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

Это происходит по устаревшим причинам, связанным с отсутствующим файлом проекта веб-сайта и базовыми инструментами сборки.


Если вы хотите остановить применяемое преобразование отладки, и в нем нет пользовательской конфигурации, вы можете удалить web.debug.config. Только не забудьте добавить

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

внутри элемента <system.web> каждого из конкретных преобразований вашей среды (web.Production.Config и т. д.).


Моя рекомендация:

  • Оставьте web.debug.config нетронутым. В состоянии по умолчанию.
  • Создайте профиль публикации для каждой среды.
  • Добавьте преобразование для каждого профиля публикации (web.<configuration>.config)
  • Поместите любую конфигурацию среды в соответствующий файл преобразования.
person Chris O'Neill    schedule 24.02.2015
comment
Дело в том, что я использую конфигурацию отладки для перезаписи URL-адресов при подготовке, которая мне не нужна для локальной. В моем файле release.config мне нужны новые перезаписи и новая строка подключения. Так как у меня это есть, мне нужны как отладочные, так и релизные конфиги. Вы подразумеваете, что я мог бы удалить файл debug.config и добавить, скажем, файл staging.config? Таким образом, у меня все еще есть две конфигурации для подготовки и выпуска, без выпуска также получая преобразования отладки. - person MyNameIsKo; 24.02.2015
comment
Что я, вероятно, сделал бы в этом случае, так это использовал бы web.config для локальной разработки и отладки. Создайте новые конфигурации решения для каждой имеющейся у вас среды, UAT, Staging, Production и т. д. Добавьте web.<configuration>.config преобразований с настройками, которые будут использоваться при публикации в каждой среде. Удалите все из web.debug.config, кроме его содержимого по умолчанию. - person Chris O'Neill; 25.02.2015

Чтобы мои настройки публикации работали так, как я хотел, мне пришлось:

  • Вернуть web.debug.config обратно к его содержимому по умолчанию (здесь у меня были некоторые преобразования, которые я использовал для своей промежуточной среды)
  • Для каждого профиля публикации в /App_Data/PublishProfiles/ щелкните правой кнопкой мыши и выберите «Добавить преобразование конфигурации», чтобы создать новый файл конфигурации в корне сайта (обратите внимание, что он не будет вложен в файл web.config по умолчанию, если профиль не называется «Отладка»). или выпустить, как-то странно, если вы спросите меня)
  • Добавьте любые соответствующие преобразования в каждую из этих новых конфигураций.

Поскольку все профили публикации в проекте веб-сайта, похоже, застряли в конфигурации отладки, у меня не было возможности избежать преобразования web.debug.config моего web.config по умолчанию. В этом решении мы просто не используем web.config для публикации конкретных преобразований.

Я хотел бы поблагодарить Криса О'Нила за его полезный, хотя и многословный ответ, который подсказал мне это решение.

person MyNameIsKo    schedule 24.02.2015
comment
Спасибо за кредит и обратную связь. Я все еще работаю над своим стилем ответа, я попытаюсь отредактировать его до чего-то более компактного. - person Chris O'Neill; 25.02.2015
comment
Мой Web.Debug.config вложен под Web.config, а Web.Release.config - нет. :-( - person Rhyous; 12.11.2015
comment
Я потерял некоторое время, пытаясь понять это, еще раз спасибо SO за помощь. Что бы это ни стоило, я разместил отдельное сообщение по этой теме, пытаясь разобраться во всем этом. -config-transforms-tied-to-publish-profiles" title="visual studio 2015 почему некоторые преобразования конфигурации привязаны к профилям публикации"> stackoverflow.com/questions/35703040/ - person ewitkows; 29.02.2016

Вы можете изменить/создать конфигурацию проекта FSUResearch вручную. Шаги:

В обозревателе решений: щелкните правой кнопкой мыши проект -> Выгрузить проект -> Щелкните правой кнопкой мыши FSUResearch (недоступно) -> Щелкните "Изменить FSUResearch.csproj".

В этом файле вы увидите много тегов 'PropertyGroup'. Эти группы свойств состоят из различных комбинаций конфигурации и платформы. Поэтому создайте новую группу свойств и задайте свои собственные конфигурации проекта. Обязательно укажите имя конфигурации проекта, которое уже является именем конфигурации решения (понимание конфигурации сборки ).

Например:

<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 и перезагрузите проект.

person Utsav Dawn    schedule 23.02.2015
comment
Спасибо за отзыв, но помните, что это Проект веб-сайта, поэтому он не содержит файла .csproj и не имеет возможности выгрузить проект. У меня есть файл .publishproj, но есть комментарий, который настаивает на том, чтобы я не редактировал этот файл. Я предполагаю, что он хочет быть отредактированным диалогом VS. Тем не менее, это похоже на файл .csproj, когда дело доходит до <propertygroups>. Я просто не уверен, что нужно отредактировать, чтобы добавить конфигурацию выпуска. - person MyNameIsKo; 24.02.2015
comment
Просто скопируйте одну из групп свойств и замените конфигурацию своей. Попробуйте и посмотрите, работает это или нет. - person Utsav Dawn; 24.02.2015
comment
К сожалению, здесь нет кубиков :( Я скопировал группу свойств отладки и изменил конфигурацию на «Выпуск», но у меня нет дополнительных параметров в диспетчере конфигурации даже после перестроения сайта. Возможно, я пропустил шаг, чтобы заставить его распознать изменение. К счастью , я могу найти обходной путь. В любом случае спасибо за помощь! - person MyNameIsKo; 25.02.2015