Visual Studio 2012 Web Deploy Publish игнорирует выбранную конфигурацию для преобразования и сборки

Когда я создаю профиль публикации, у меня есть возможность выбрать, какую конфигурацию я хочу использовать для публикации для этого профиля. Доступны такие параметры, как Debug, Release или любой другой, определенный пользователем, например Staging. Проблема в том, что если я выбираю любую конфигурацию, кроме Release или Debug, скажем, Staging, Visual Studio полностью игнорирует мой выбор и использует Web.Release.config для преобразования и сборки. Я что-то не так делаю или так задумано? Кажется, что Publish распознает только выпуск и отладку как приемлемую конфигурацию. Есть мысли по этому вопросу?

Я использую Visual Studio 2012 RTM.

Обновление 1 :: Выбрана конфигурация "NightlyLive — Любой ЦП":

Здесь я выбираю свою собственную конфигурацию «NightlyLive»:

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

И вот что происходит, когда я публикую:

6>------ Build started: Project: UI.Next, Configuration: Release Any CPU ------
7>------ Publish started: Project: UI.Next, Configuration: Release Any CPU ------
7>Transformed Web.config using [...]\UI.Next\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.

Как видите, он строит проект с помощью Release Any CPU (вместо NightlyLive — Any CPU), а также преобразует Web.config с помощью Web.Release.config (вместо Web.NightlyLive.config).

Обновление 2 :: Имя профиля переименовано в "NightlyLive":

Здесь я переименовываю имя профиля с «test» на «NightlyLive».

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

Вот вывод консоли:

6>------ Build started: Project: UI.Next, Configuration: Release Any CPU ------
7>------ Publish started: Project: UI.Next, Configuration: Release Any CPU ------
7>Transformed Web.config using [...]\UI.Next\Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
7>[...]\UI.Next\Web.NightlyLive.config(23,18): Warning : Argument 'debug' did not match any attributes
7>[...]\UI.Next\obj\Release\TransformWebConfig\transformed\Web.config(78,6): Warning : No attributes found to remove
7>Transformed obj\Release\TransformWebConfig\transformed\Web.config using [...]\UI.Next\\Web.NightlyLive.config into obj\Release\ProfileTransformWebConfig\transformed\Web.config.

Так вот, он все еще строится с использованием Release Any CPU.

Но для Web.config он сначала преобразуется с помощью Web.Release.config, а затем выполняет второе преобразование поверх предыдущего с помощью Web.NightlyLive.config.

Я думаю, что двойное преобразование задумано и имеет смысл. Но тот факт, что вам нужно переименовать имя вашего профиля в имя конфигурации, чтобы принудительно использовать ваш пользовательский файл преобразования, выглядит неправильно.

Обновление 3 :: добавлено TestSolution

Упрощенное решение можно загрузить здесь.

Сначала я создал совершенно новое решение vs2012, и все работало нормально. Поэтому я решил разобрать свое текущее решение и загрузить его в качестве тестового примера.

Обратите внимание, что мое решение изначально было решением vs2010, которое я открыл в vs2012, и vs2012 внес необходимые изменения в решение.

Обновление 4 :: Вердикт

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

Проблема решена.


person kaptan    schedule 17.08.2012    source источник


Ответы (3)


Я испытал точно такое же поведение.

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

Попробуйте следующее:

  1. Щелкните правой кнопкой мыши решение и введите свойства
  2. Выберите пользовательскую конфигурацию в верхнем левом раскрывающемся списке.
  3. Разверните Свойства конфигурации и выберите Конфигурация.
  4. Убедитесь, что ваш веб-проект имеет правильную пользовательскую конфигурацию, выбранную в таблице.

После этого веб-развертывание с пользовательской конфигурацией заработало правильно.

person Andreas Presthammer    schedule 23.05.2013
comment
Спасибо, что поделились своим ответом, но в моем решении VS это было не так. Я думаю, что преобразование из VS 2010 -> VS 2012 было не совсем успешным для моего решения и все испортило: › - person kaptan; 29.05.2013
comment
+1 Это подло. У меня была правильная конфигурация сборки на панели инструментов, представление свойств проекта также имело правильную конфигурацию. Однако, когда я зашел в свойства решения и расширил конфигурацию, в одном из проектов была выбрана другая конфигурация. Большое спасибо, это сработало для меня. - person Ryan Anderson; 21.07.2013

Я также преобразовал решение VS2010 в VS2012 и столкнулся с той же проблемой. С помощью некоторых из этих ответов, которые дали мне подсказки, на которых следует сосредоточиться, я смог точно определить виновника сочетания моего профиля издателя и диспетчера конфигураций.

В моем диспетчере конфигураций у меня было три «активные платформы решений» для промежуточной конфигурации: любой ЦП, смешанные платформы и x86. Представлением по умолчанию для моего промежуточного диспетчера конфигурации была смешанная платформа, в которой была настроена промежуточная конфигурация. Когда я пошел, чтобы создать свой профиль издателя, я выбрал «Staging — Any CPU», который по незнанию для меня изначально использовал конфигурацию выпуска. Как только я начал менять платформы в диспетчере конфигураций, проблема стала очевидной, и я смог правильно настроить конфигурацию для каждой комбинации конфигурации/платформы в решении.

Короче говоря, убедитесь, что вы проверили каждую активную платформу решения (измените через раскрывающийся список) в конфигурации, которую хотите опубликовать, и убедитесь, что каждый проект использует правильную конфигурацию в диспетчере конфигураций. Кроме того, убедитесь, что в вашем профиле издателя используется правильное сочетание конфигурации и платформы.

person Ellesedil    schedule 27.08.2013

В диалоговом окне веб-публикации мы теперь позволяем вам указать конфигурацию сборки на вкладке «Настройки». По умолчанию это Релиз.

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

В вашем случае вы можете убедиться, что вы выбрали Staging. К вашему сведению, если вы не видите Staging в качестве пункта меню, это значит, что вы создали конфигурацию сборки Solution, но не конфигурацию Project. В раскрывающемся списке используются значения конфигурации сборки проекта, а не конфигурации сборки решения. Вы можете редактировать конфигурации Solution/Project Build с помощью Configuration Manager.

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

person Sayed Ibrahim Hashimi    schedule 19.08.2012
comment
tnx Сайед. Я выбираю свою конфигурацию из выпадающего списка. но преобразование сборки и web.config выполняется с использованием конфигурации Release. пожалуйста, посмотрите на обновленную информацию, которую я добавил в свой пост. - person kaptan; 20.08.2012
comment
кстати, единственный способ заставить мой профиль публикации использовать мою настроенную конфигурацию (например, NightlyLive) — это переименовать имя профиля публикации точно в то же имя, что и моя конфигурация (то есть NightlyLive). - person kaptan; 20.08.2012
comment
Вы не должны называть их одинаково. Можете ли вы загрузить пример проекта на SkyDrive/Dropbox и поделиться здесь ссылкой, чтобы я мог посмотреть? - person Sayed Ibrahim Hashimi; 21.08.2012
comment
Сайед, пожалуйста, взгляните на мое обновление 3. Я думаю, что мое решение испорчено. Я думаю, что мне нужно удалить все свои пользовательские конфигурации и создать их заново, чтобы решить проблему :› - person kaptan; 21.08.2012
comment
@Sayed Ibrahim Hashimi У меня такое же поведение, как и в обновлении 2. Вы когда-нибудь находили решение для этого (кроме использования решения, предложенного в обновлении 3). Мое решение - более старая версия VS 2010, которая теперь управляется с помощью VS 2012. - person Redeemed1; 01.05.2013
comment
@SayedIbrahimHashimi У меня была та же проблема, и единственным решением было переименовать мой профиль на то же имя, что и в конфигурации. Это также был проект VS2010, который был обновлен до 2012 года. Похоже, где-то скрывается ошибка. - person Britton; 13.12.2013
comment
Та же проблема здесь. Я не могу вспомнить, был ли проект изначально создан в VS2012 или перенесен из VS2010. Я не мог заставить его работать, пока не переименовал профиль точно так же, как конфигурацию проекта, теперь он выбирает правильное преобразование. - person Wasp; 18.12.2013