Публикация профиля не работает при создании проекта веб-сайта

Я понял, что Web Deployment Projects не поддерживаются в Visual Studio 2012. После прочтения эту статью я пытался заставить Publish Profiles работать.

После установки Visual Studio Web Publish Update я смог публиковать проекты веб-сайтов и проекты веб-приложений с помощью нового диалогового окна публикации в Visual Studio 2012. .

Поскольку мы используем TFS 2010 Team Build, я попытался использовать профиль публикации с параметрами MSBuild. Но следующее утверждение работает только для публикации проектов веб-приложений.

MSBuild.exe MyWebs.sln /p:Configuration=Release /p:DeployOnBuild=true;PublishProfile=DeployToDirectory.pubxml

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

Есть идеи?


person Thomas Jeitner    schedule 18.01.2013    source источник
comment
Можете попробовать добавить VisualStudioVersion=11.0 в список свойств? Если это не сработает, если вы можете отправить мне подробный журнал по электронной почте, я могу вам помочь. Мой адрес электронной почты sayedha [at] {MicrosoftDOTcom}. Дополнительные сведения о VisualStudioVersion см. на странице sedodream.com/2012/08/19/.   -  person Sayed Ibrahim Hashimi    schedule 19.01.2013
comment
Хорошо, теперь у меня та же проблема, за исключением того, что я заметил, что в сводке сборки говорится, что он не может найти профиль публикации xml там, где он ожидает его на сервере сборки. Когда я захожу в это место, я нахожу СТАРУЮ ВЕРСИЮ (другое имя), но не новый профиль публикации. Любая подсказка, почему старый продолжает появляться? Я удалил его из решения и файловой системы.   -  person Ian    schedule 26.02.2013
comment
@Ian - не уверен, поможет ли это, но я нашел ошибку (я думаю), из-за которой msbuild будет искать не в том месте ваш профиль публикации. Попробуйте удалить .pubxml из аргумента PublishProfile. Дополнительную информацию см. здесь: discens .blogspot.co.uk/2013/02/   -  person gregpakes    schedule 26.02.2013
comment
@Dicens - Спасибо, но без игральных костей. Я не уточнил. Что я сделал, так это добавил новый профиль публикации в решение, проверил это в отдельном файле, собрал, удалил весь каталог продукта сборки, а затем проверил остальные мои вещи. Код все еще не опубликован и не работает. тихо, но, по крайней мере, решение не ломается при сборке.   -  person Ian    schedule 26.02.2013
comment
Только что понял, что это для проекта веб-сайта. В этом случае вы должны: собрать файл .sln, а затем собрать сайт.publishproj и передать параметры в сборку при вызове веб-сайта.publishproj.   -  person Sayed Ibrahim Hashimi    schedule 24.06.2014
comment
У меня точно такая же проблема. Я поддерживаю большой проект в одном .sln со многими устаревшими проектами веб-сайтов. Я бы хотел использовать для них профили публикации, но они просто не работают. @SayedIbrahimHashimi, единственная причина, по которой нужно создавать каждый веб-сайт.publishproj независимо, как вы предлагаете?   -  person Ryan Taylor    schedule 16.07.2014
comment
Для проекта веб-сайта да   -  person Sayed Ibrahim Hashimi    schedule 16.07.2014


Ответы (2)


Я провел около 3 недель, борясь с этим в своей среде, и думаю, что у меня есть решение.

Я думаю, проблема в том, что файл website.publishproj никогда не создается, когда вы передаете решение. Мне удалось решить эту проблему, выполнив следующие действия:

  1. Убедитесь, что вы используете новое обновление ASP.Net и Tools 2012.2. Загрузить здесь.
  2. Создайте файл рядом с файлом решения с именем after.MyWebs.sln.targets. Этот файл должен выглядеть следующим образом:

    <!--?xml version="1.0" encoding="utf-8"?-->
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <Target Name="Deploy Website" AfterTargets="Build">
            <Message Text="Starting Website deployment" Importance="high">
            </Message>
            <MSBuild Projects="$(MSBuildProjectDirectory)\MyWebs\website.publishproj" 
            BuildInParallel="true" /> 
        </Target>
    </Project>
    

Это означает, что когда MSBuild начинает сборку файла решения, он фактически создает в памяти файл MSBuild с расширением metaproj. Есть способы заставить MSBuild сохранить этот файл на диск, чтобы вы могли его проверить, но это легко найти в Google. Файл, созданный на первом этапе, внедряется в файл metaproj и запускается после сборки.

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

Предупреждение: если вы хотите использовать это в сборке TFS, то в этом сценарии вы получите папку _PublishedWebsites в месте размещения независимо от PublishUrl, указанного в файле pubxml. Это то, что я пытаюсь решить, но пока не получаю большой радости.

person gregpakes    schedule 28.02.2013
comment
Когда я использую приведенную выше логику для tfs. Получение ошибки типа ##[error]\Microsoft.Common.CurrentVersion.targets(724,5): Ошибка: свойство OutputPath не задано для проекта 'BO.AnalytixCase.vbproj'. Убедитесь, что вы указали допустимую комбинацию конфигурации и платформы для этого проекта. Конфигурация = «Отладка» Платформа = «любой процессор». Возможно, вы видите это сообщение, потому что пытаетесь создать проект без файла решения и указали нестандартную конфигурацию или платформу, которая не существует для этого проекта. Есть ли какое-нибудь решение? - person Dharti Sutariya; 23.06.2020

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

**<Content Include="website.publishproj" />**
person Nishanth Marathe    schedule 24.06.2016