Непрерывное развертывание нескольких проектов из одного решения c#

#c# #wcf #asp.net-mvc-4 #tfs #continuous-deployment

#c# #wcf #asp.net-mvc-4 #tfs #непрерывное развертывание

Вопрос:

У меня есть одно решение с несколькими проектами внутри:

Проект 1 — Библиотека классов Проект 2 — MVC проект 3 — Библиотека классов Проект 4 — WCF

Теперь я хочу, чтобы TFS создавала все проекты, а также автоматически развертывала проект MVC http://somehost/MVC и WCF http://somehost/WCF .

Я пытался изменить свое определение сборки, но развертывается только MVC.

Кстати: в TFS включена закрытая регистрация.

Комментарии:

1. Просто настройте две сборки, одну для проекта MVC и одну для службы WCF. Обе сборки могут запускаться при возврате решения.

Ответ №1:

У меня была именно эта проблема, и я решил ее, вручную отредактировав файлы проекта.

Таким образом, TFS развернет оба проекта при сборке. Обратите внимание на имена конфигураций сборки — я создал их специально для того, чтобы указывать на мои определения сборки TFS (у меня есть 2 определения сборки: Dev amp; QA). Применение группы свойств к этим определениям означает, что проекты не развертываются каждый раз, когда вы создаете проекты в своей среде разработки при запуске конфигурации отладки. Это также означает, что я могу развертывать в разных местах в зависимости от того, выполняю ли я сборку QA или Dev.

Пример:

 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DEV-BUILD-|AnyCPU'">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <DeployOnBuild>true</DeployOnBuild>
    <DeployTarget>MsDeployPublish</DeployTarget>
    <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
    <MSDeployServiceUrl>http://DEV-SERVER-ADDRESS</MSDeployServiceUrl>
    <DeployIisAppPath>PROJECTminder.API-MAINTENANCE</DeployIisAppPath>
    <UserName><MACHINE-NAME>BuildUser</UserName>
    <Password>*****</Password>
    <AuthType>Basic</AuthType>
    <AllowUntrustedCertificate>true</AllowUntrustedCertificate>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'QA-BUILD|AnyCPU'">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <DeployOnBuild>true</DeployOnBuild>
    <DeployTarget>MsDeployPublish</DeployTarget>
    <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
    <MSDeployServiceUrl>http://QA-SERVER-ADDRESS</MSDeployServiceUrl>
    <DeployIisAppPath>PROJECTminder.API</DeployIisAppPath>
    <UserName><MACHINE-NAME>BuildUser</UserName>
    <Password>*****</Password>
    <AuthType>Basic</AuthType>
    <AllowUntrustedCertificate>true</AllowUntrustedCertificate>
  </PropertyGroup>
 

Обновить:

Я должен добавить, что это было мое решение для VS2010. Я считаю, что в более новых версиях (2012 ) вы действительно можете определить профили публикации для каждого проекта (.pubxml), которые будет получать TFS.

Комментарии:

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

Ответ №2:

Для этого я использую Octopus Deploy. Используя шаблон процесса сборки по умолчанию, вы можете запустить сценарий Powershell после сборки. В этом скрипте вы можете создавать пакеты NuGet, создавать релиз и развертывать их на нескольких серверах. В документации Octopus Deploy есть способ создания пакетов для развертывания Создания пакетов с помощью TFS. Здесь есть сообщение в блоге об интеграции TFS и Octopus Deploy .

Комментарии:

1. Я бы согласился, что развертывание octopus — гораздо лучший способ справиться с развертываниями