Опубликовать профиль не работает при создании веб-сайта

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

После установки Обновление веб-публикации Visual Studio я смог опубликовать проекты веб-сайтов и проекты веб-приложений с новым диалогом публикации в 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.

Любая идея?

Ответ 1

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

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

  • Пожалуйста, убедитесь, что вы используете новое обновление ASP.Net и Tools 2012.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 в памяти с расширением метаприем. Есть способы заставить MSBuild сохранить этот файл на диск, чтобы вы могли его осмотреть, но это легко найти в Google. Файл, созданный на первом шаге, вводится в файл metaproj и запускается после сборки.

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

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

Ответ 2

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

**<Content Include="website.publishproj" />**