asp.net - настройка - web deploy что это




Как публиковать Web с помощью msbuild? (6)

Вы должны настроить среду

  • <Имя веб-сайта>
  • <домен>

и ссылку на мой блог. (извините, был корейский)

  • http://xyz37.blog.me/50124665657
  • http://blog.naver.com/PostSearchList.nhn?SearchText=webdeploy&blogId=xyz37&x=25&y=7

    @ECHO OFF
    :: http://stackoverflow.com/questions/5598668/valid-parameters-for-msdeploy-via-msbuild
    ::-DeployOnBuild -True
    :: -False
    :: 
    ::-DeployTarget -MsDeployPublish
    :: -Package
    :: 
    ::-Configuration -Name of a valid solution configuration
    :: 
    ::-CreatePackageOnPublish -True
    :: -False
    :: 
    ::-DeployIisAppPath -<Web Site Name>/<Folder>
    :: 
    ::-MsDeployServiceUrl -Location of MSDeploy installation you want to use
    :: 
    ::-MsDeployPublishMethod -WMSVC (Web Management Service)
    :: -RemoteAgent
    :: 
    ::-AllowUntrustedCertificate (used with self-signed SSL certificates) -True
    :: -False
    :: 
    ::-UserName
    ::-Password
    SETLOCAL
    
    IF EXIST "%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" SET FXPath="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727"
    IF EXIST "%SystemRoot%\Microsoft.NET\Framework\v3.5" SET FXPath="%SystemRoot%\Microsoft.NET\Framework\v3.5"
    IF EXIST "%SystemRoot%\Microsoft.NET\Framework\v4.0.30319" SET FXPath="%SystemRoot%\Microsoft.NET\Framework\v4.0.30319"
    
    SET targetFile=<web site fullPath ie. .\trunk\WebServer\WebServer.csproj
    SET configuration=Release
    SET msDeployServiceUrl=https://<domain>:8172/MsDeploy.axd
    SET msDeploySite="<WebSite name>"
    SET userName="WebDeploy"
    SET password=%USERNAME%
    SET platform=AnyCPU
    SET msbuild=%FXPath%\MSBuild.exe /MaxCpuCount:%NUMBER_OF_PROCESSORS% /clp:ShowCommandLine
    
    %MSBuild% %targetFile% /p:configuration=%configuration%;Platform=%platform% /p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=False /p:DeployIISAppPath=%msDeploySite% /p:MSDeployPublishMethod=WMSVC /p:MsDeployServiceUrl=%msDeployServiceUrl% /p:AllowUntrustedCertificate=True /p:UserName=%USERNAME% /p:Password=%password% /p:SkipExtraFilesOnServer=True /p:VisualStudioVersion=12.0
    
    IF NOT "%ERRORLEVEL%"=="0" PAUSE 
    ENDLOCAL
    

Visual Studio 2010 имеет команду «Опубликовать», которая позволяет публиковать проект веб-приложения в месте расположения файловой системы. Я хотел бы сделать это на моем сервере сборки TeamCity, поэтому мне нужно сделать это с помощью runner или msbuild. Я попытался использовать цель публикации, но я думаю, что это может быть для ClickOnce:

msbuild Project.csproj /t:Publish /p:Configuration=Deploy

Я в основном хочу сделать то, что делает проект веб-развертывания, но без надстройки. Мне нужно это для компиляции WAP, удаления любых ненужных файлов для выполнения, выполнения любых преобразований web.config и копирования вывода в указанное место.

Мое решение , основанное на ответе Джеффа Сивера

<Target Name="Deploy">
    <MSBuild Projects="$(SolutionFile)" 
             Properties="Configuration=$(Configuration);DeployOnBuild=true;DeployTarget=Package" 
             ContinueOnError="false" />
    <Exec Command="&quot;$(ProjectPath)\obj\$(Configuration)\Package\$(ProjectName).deploy.cmd&quot; /y /m:$(DeployServer) -enableRule:DoNotDeleteRule" 
          ContinueOnError="false" />
</Target>

Используя профили развертывания, представленные в VS 2012, вы можете опубликовать их со следующей командной строкой:

msbuild MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=<profile-name> /p:Password=<insert-password> /p:VisualStudioVersion=11.0

Для получения дополнительной информации о параметрах см. Это .


Этот мой командный файл

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe C:\Projects\testPublish\testPublish.csproj  /p:DeployOnBuild=true /property:Configuration=Release
if exist "C:\PublishDirectory" rd /q /s "C:\PublishDirectory"
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p C:\Projects\testPublish\obj\Release\Package\PackageTmp -c C:\PublishDirectory
cd C:\PublishDirectory\bin 
del *.xml
del *.pdb

Я не знаю TeamCity, поэтому надеюсь, что это сработает для вас.

Лучший способ, которым я нашел это, - это MSDeploy.exe. Это часть проекта WebDeploy, выполняемого Microsoft. Вы можете скачать бит здесь .

С помощью WebDeploy вы запускаете командную строку

msdeploy.exe -verb:sync -source:contentPath=c:\webApp -dest:contentPath=c:\DeployedWebApp

Это делает то же, что и команда VS Publish, копируя только необходимые биты в папку развертывания.


Я придумал такое решение, отлично работает для меня:

msbuild /t:ResolveReferences;_WPPCopyWebApplication /p:BuildingProject=true;OutDir=C:\Temp\build\ Test.csproj

Секретный соус - цель _WPPCopyWebApplication.


нашел два разных решения, которые работали несколько иначе:

1. Это решение вдохновлено ответом от alexanderb [link] . К сожалению, это не сработало для нас - некоторые dll не были скопированы в OutDir. Мы выяснили, что замена решения ResolveReferences на Build решает проблему - теперь все необходимые файлы копируются в местоположение OutDir.

msbuild /target:Build;_WPPCopyWebApplication  /p:Configuration=Release;OutDir=C:\Tmp\myApp\ MyApp.csproj
Недостатком этого решения было то, что OutDir содержал не только файлы для публикации.

2. Первое решение работает хорошо, но не так, как мы ожидали. Мы хотели иметь функциональность публикации, как и в Visual Studio IDE, - то есть только файлы, которые должны быть опубликованы, будут скопированы в каталог Output. Как уже упоминалось, первое решение копирует гораздо больше файлов в OutDir - веб-сайт для публикации затем сохраняется в _PublishedWebsites/{ProjectName} . Следующая команда решает эту проблему - только файлы для публикации будут скопированы в нужную папку. Итак, теперь у вас есть каталог, который можно опубликовать напрямую - по сравнению с первым решением вы сэкономите некоторое место на жестком диске.

msbuild /target:Build;PipelinePreDeployCopyAllFilesToOneFolder /p:Configuration=Release;_PackageTempDir=C:\Tmp\myApp\;AutoParameterizationWebConfigConnectionStrings=false MyApp.csproj
AutoParameterizationWebConfigConnectionStrings=false гарантирует, что строки подключения не будут обрабатываться как специальные артефакты и будут правильно сгенерированы - для получения дополнительной информации см. link .





msdeploy