Профили публикации не публикуют желаемую конфигурацию сборки (.pubxml.user)

Рассмотрим следующий сценарий:

  • Алиса создает веб-приложение (ASP.NET MVC или WebForms) с помощью Visual Studio 2012.
  • Алиса создает профиль публикации под названием «ПРОИЗВОДСТВО» и выбирает конфигурацию «Выпуск» на вкладке «Настройки» (в мастере публикации).
  • Алиса публикует приложение, используя профиль публикации под названием «ПРОИЗВОДСТВО».
  • Алиса сохраняет решение в системе управления версиями.

Обратите внимание, что по умолчанию файл «*.pubxml.user» не включен в систему управления версиями: http://msdn.microsoft.com/en-us/library/ff398069.aspx

  • Боб выполняет проверку решения из системы управления версиями.
  • Боб открывает решение и запускает Мастер публикации.
  • Боб видит, что выбранный профиль публикации называется «ПРОИЗВОДСТВО».
  • Боб нажимает на вкладку «Настройки» (в мастере публикации) и видит, что отображается конфигурация «Выпуск».
  • Боб публикует приложение.
  • Боб понимает, что приложение было опубликовано с использованием конфигурации "Отладка" вместо конфигурации "Выпуск".

Причина в том, что информация о конфигурации сборки хранится в файле «*.pubxml.user» (см. Узел с именем <LastUsedBuildConfiguration>).

Такое поведение проблематично, особенно при использовании преобразований веб-конфигурации («Web.Release.config») для изменения строк подключения.

=> Как я могу решить эту проблему, если я не хочу сохранять файл "*.pubxml.user" в системе управления версиями (потому что этот файл может содержать другую информацию, не подходящую, например, для общедоступного репозитория)?

Статьи по Теме:


person Ubikuity    schedule 21.03.2013    source источник


Ответы (2)


У этого есть два аспекта; совместное использование значения в раскрывающемся списке диалогового окна публикации и поддержка командной строки. Ниже мои комментарии к обоим.

Обмен профилями с членами команды

Когда мы выпустили биты публикации в VS2012 RTM, мы записывали LastUseBuildConfiguraiton в файл .pubxml.user. С тех пор мы переместили его в сам файл .pubxml, чтобы он был доступен другим членам команды. Вы можете получить последнюю сборку по адресу:

  1. ASP.NET 2012.2
  2. Последний пакет SDK для Azure

Если вы установили один из них, но все еще наблюдаете поведение, при котором конфигурация не используется совместно, вероятно, потому, что .pubxml был создан с помощью более старой версии. Решение состоит в том, чтобы удалить файлы .pubxml и .pubxml.user и создать их снова с последней версией.

Сценарии командной строки

Для сценариев командной строки необходимо явно указать свойство Configuration. Файл .pubxml (или .pubxml.user) не может переопределить это значение. Дополнительные сведения см. В моем блоге по адресу http://sedodream.com/2012/10/27/MSBuildHowToSetTheConfigurationProperty.aspx.

person Sayed Ibrahim Hashimi    schedule 21.03.2013
comment
Спасибо. Установка ASP.NET 2012.2 устранила проблему. Теперь свойство LastUsedBuildConfiguration хранится в .pubxml (вместо .pubml.user). - person Ubikuity; 22.03.2013

Если у вас есть резервная копия этого проекта, не беспокойтесь об этой ошибке. Просто запустите проект резервного копирования в VS 2012 OR 2013 и откройте узел свойств, а затем опубликуйте папку профиля, и тогда вы увидите там единственный файл с именем «Your project name.xml», теперь перейдите в меню проводника решений, нажмите кнопку "показать все файлы", и вы увидите другой файл с именем "pubxml.user". Теперь щелкните правой кнопкой мыши опубликовать профиль и выберите вариант «открыть папку в проводнике файлов», скопируйте файл и замените его поврежденным файлом.

Теперь перестройте проект и опубликуйте его.

У меня сегодня возникла эта проблема с этим проектом Hajj and Umrah Project, теперь вы можете видеть, что он вживую.

person Herry    schedule 24.06.2015