TeamCity - проблема с Публикует на сайте ASP.net

Я пытаюсь настроить TeamCity 5.0 для выполнения, "Публикуют" цель на одном из моих проектов.

Когда я загружаю решение в VS, 2008 и щелчок публикуют на проекте, веб-сайт является сборкой приятно - файлы на сервере, появляющемся собой и т.д. Все же, когда я выполняю sln файл через бегуна TeamCity Sln2008 возвраты TeamCity:

[Проект "Portal.csproj" (Публикуют цель (цели)):] Пропуск непригодного для печати проекта.

У кого-либо была та же проблема?

Filip

13
задан Filip 5 January 2010 в 16:03
поделиться

6 ответов

Вы можете создать свой собственный простой файл сборки. Например:

<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

    <PropertyGroup>
        <PackageFolder>C:\Builds\AppServer\Actual</PackageFolder>
    </PropertyGroup>

    <Target Name="Build" DependsOnTargets="BeforeBuild">
        <MSBuild Projects="TeamWork-AppServer.sln"
                 Targets="Rebuild"
                 Properties="Configuration=Debug;OutDir=$(PackageFolder)\;"></MSBuild>
    </Target>
</Project>

Или вы можете использовать Проект веб-развертывания VS 2008 . Вот отличный турториал .

4
ответ дан 2 December 2019 в 00:03
поделиться

У меня такая же проблема, вот что я пробовал:

У меня есть файл решения в Visual Studio 2010, зафиксированный в репозитории Mercurial.

Я настроил FTP-сервер для корневого каталога сайта для публикации, и публикация из Visual Studio 2010 локально работает хорошо, он подключается и загружает все, как ожидалось, и сайт работает.

Теперь, я хотел автоматизировать это при каждом запуске в центральный репозиторий Mercurial, и поскольку я использую TeamCity, я обнаружил, что поле для указания цели сборки, обычно "Rebuild", может также принимать значение "Publish", поэтому я указал "Rebuild;Publish", согласно документации и справке.

Я убедился, что после публикации в Visual Studio и фиксации новых файлов, файл с именем ProjectName.Publish.xml сопровождает мой ProjectName.csproj файл, и этот файл сносится в каталог сервера при сборке TeamCity.

Тем не менее, публикации не происходит, и когда я проверяю журнал сборки, в нем говорится:

[19:01:02]: [Project "Test.sln" (Rebuild;Publish target(s)):] Project "Test.UI.Web.csproj" (Publish target(s)):
[19:01:02]: [Project "Test.UI.Web.csproj" (Publish target(s)):] Skipping unpublishable project.

Именно так, как написано в вопросе.

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

Примечание: мне не важно, каким способом будут опубликованы файлы, мне просто нужен один шаг сборки TeamCity, чтобы сделать это, так что если у кого-то есть MSBuild-подобное решение, которое просто обходит TeamCity, то я буду доволен

2
ответ дан 2 December 2019 в 00:03
поделиться

Если это веб-проект, вы можете использовать Microsoft.WebApplication.targets. Если вы не установили Windows SDK в свой агент сборки, вам нужно будет скопировать целевой файл в систему управления версиями и сослаться на него из своего веб-проекта, добавив:

<Import Project="{path to your tools}\Microsoft.WebApplication.targets" />

Вы можете найти целевой файл здесь (в зависимости от вашей ОС):

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v9.0\WebApplications

Теперь вам просто нужно обновить задачу msbuild, чтобы указать правильные цели:

<MSBuild Projects="{path to your web project file}"
         Targets="Build;ResolveReferences;_CopyWebApplication"
         Properties="Configuration=Release;Architecture=Any;WebProjectOutputDir={your web root};OutDir={your web root}\bin\" />
3
ответ дан 2 December 2019 в 00:03
поделиться

Может ли TeamCity опубликовать веб-проект с помощью средства выполнения сборки sln2008 Может ли TeamCity опубликовать веб-проект с помощью средства выполнения сборки sln2008?

Проект какого типа вы пытаетесь опубликовать?

http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/7ec0d942-6354-41c3-9c97-7e7d1f461c29 Взято из ссылки выше:

   What I discovered is that "Shared-addins" are not publishable 
and are distinct and different from document and application level 
VSTO addins, which are deployable.
    When I rebuilt my application as an application level 
VSTO addin, the publish option was available.

http://www.automise.com/Default.aspx?tabid=53&aft=9813 Взято из ссылки выше:

      Assuming you're using Visual Studio 2008, we're unable to execute the web site 
    publish feature from FinalBuilder as it's partially implemented by the VS IDE. 
    You'll need to use to the MSBuild action to compile the application and then 
    use one of the other actions (FTP, File Copy, etc) in FinalBuilder to perform 
    the deployment. Visual Studio 2010 has fixed this problem by performing the 
    entire publish using MSBuild, see this post for more info: 
http://www.finalbuilder.com/forums....&afv=topic 

Два потока, которые могут помочь

http://devnet.jetbrains.net/thread/280420;jsessionid=5E8948AE810FFFF251996D85E7EB3FE3

Visual Studio. Опубликовать проект из командной строки

1
ответ дан 2 December 2019 в 00:03
поделиться

Пытались ли вы запустить Visual Studio напрямую, а не полагаться на MSBuild для прямой публикации проекта? MSBuild не может выполнять определенные виды проектов. У меня была аналогичная проблема с созданием MSI из Team City. Я предполагаю точные настройки командной строки для этого, так как я не знаю ваших точных настроек.

<PropertyGroup>    
    <buildconfiguration>Release</buildconfiguration>
    <DevEnv>C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.com</DevEnv>
</PropertyGroup>
<Exec Command="%22$(DevEnv)%22  /build $(buildconfiguration) $(teamcity_build_checkoutDir)\Test.sln /project Test.UI.Web.csproj"/>

Если вы используете средство выполнения решений Team City в качестве средства выполнения сборки, вам придется переключиться на MSBuild.

Если вы хотите остаться с раннером Team City, вы всегда можете попробовать добавить в свое решение проект, который будет построен последним (или сделать это для проекта, который в настоящее время создается последним), и выполнить порождение уловка в виде командной строки после сборки проекта.

2
ответ дан 2 December 2019 в 00:03
поделиться

Вот как я изменил файл .csproj для проекта ASP.NET MVC для развертывания через TeamCity 5.1.2. В файле .csproj замените цель AfterBuild на этот XML (если в вашем существующем AfterBuild уже есть команды, вам придется объединить их с этими целями):

<PropertyGroup>
    <DeployTarget>0</DeployTarget>
    <PublishTarget>0</PublishTarget>
    <PublishFolder>..\Deployment\YourWebsiteName</PublishFolder>
</PropertyGroup>
<Target Name="PublishProperties">
    <CreateProperty Value="$(PublishFolder)">
    <Output TaskParameter="Value" PropertyName="WebProjectOutputDir"/>
    </CreateProperty>
    <CreateProperty Value="$(PublishFolder)\bin\">
    <Output TaskParameter="Value" PropertyName="OutDir"/>
    </CreateProperty>
</Target>
<Target Name="WebPublish" DependsOnTargets="BeforeBuild;PublishProperties">
    <RemoveDir Directories="$(PublishFolder)"
            ContinueOnError="true" />
    <CallTarget Targets="ResolveReferences;_CopyWebApplication" />
</Target>
<Target Name="Deploy" DependsOnTargets="WebPublish">
    <CreateProperty Value="Path\To\Your\Server" Condition="$(DeployFolder) == ''">
    <Output TaskParameter="Value" PropertyName="DeployFolder"/>
    </CreateProperty>
    <RemoveDir Directories="$(DeployFolder)" Condition="$(CleanDeploy) == 1" />
    <ItemGroup>
    <DeploymentFiles Include="$(PublishFolder)\**\*.*" />
    </ItemGroup>
    <Copy SourceFiles="@(DeploymentFiles)"
        DestinationFolder="$(DeployFolder)\%(RecursiveDir)" />
</Target>
<Target Name="AfterBuild">
    <CallTarget Targets="WebPublish" Condition="$(PublishTarget) == 1" />
    <CallTarget Targets="Deploy" Condition="$(DeployTarget) == 1" />
</Target>

В этом сценарии используются $(PublishTarget) и $(DeployTarget ) для запуска дополнительных шагов после создания проекта. Группа свойств в начале устанавливает значения по умолчанию равными 0, поэтому дополнительные цели не выполняются. Вы можете переопределить значение по умолчанию в TeamCity, перейдя на страницу «Свойства и переменные среды» вашей конфигурации сборки и добавив имена системных свойств «PublishTarget» и «DeployTarget» и установив для них значение 1.

Цель публикации содержит большую часть магии. . Это вызывает вызов цели Visual Studio _CopyWebApplication для вывода веб-сайта в папку PublishFolder. По умолчанию папка публикации — это «..\Deployment\YourWebsiteName» относительно файла проекта, но это также можно переопределить с помощью системного свойства. Цель Deploy принимает файлы, выводимые целью Publish, и копирует их в папку DeployFolder. DeployFolder можно установить с помощью системного свойства в TeamCity или заменить путь «Путь\к\вашему\серверу» в цели развертывания.

Вы также можете пропустить дополнительный шаг развертывания, просто задав для PublishFolder любое место назначения развертывания. Этот скрипт зависит от "Microsoft.WebApplication.Build.Tasks.Dll" и "Microsoft.WebApplication.target», установленные Visual Studio, но вы можете просто скопировать файлы с рабочей станции разработчика на сервер сборки. Расположение по умолчанию — «C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications».

3
ответ дан 2 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: