Подтвердить что ты не робот

Версия VS2010 Web Publish версии командной строки для развертывания файловой системы

Люди,

Вкратце, я хочу повторить этот диалог: alt text

Это проект MVC Visual Studio 2010 ASP.Net. Если я выполню эту команду, я получу все файлы, которые я хочу, включая преобразованные web.configs в каталоге "C:\ToDeploy".

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

Я видел различные статьи о том, как это сделать в командной строке для Remote Deploys, но я просто хочу сделать это для развертывания файловой системы.

Я знаю, что могу реплицировать эту функциональность с помощью nAnt-задач или графических скриптов, но я хочу сделать это с помощью этого механизма, чтобы я не повторялся.

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

Спасибо заранее!

4b9b3361

Ответ 1

Хорошо, наконец понял это.

Необходимая командная строка:

msbuild path/to/your/webdirectory/YourWeb.csproj /p:Configuration=Debug;DeployOnBuild=True;PackageAsSingleFile=False

Вы можете изменить, куда проект выводится, добавив свойство outdir=c:\wherever\ в раздел /p:.

Это создаст выход с помощью:

path/to/your/webdirectory/obj/Debug/Package/PackageTmp/

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

У меня все работает как задача ruby ​​rake, используя Albacore. Я пытаюсь сделать все это, поэтому я могу на самом деле выразить это как вклад в проект. Но если кто-то хочет код до этого, дайте мне знать.

Еще одна морщина, которую я обнаружил, заключалась в том, что она помещала Tokenized Parameters в Web.config. Если вам не нужна эта функция, убедитесь, что вы добавили:

/p:AutoParameterizationWebConfigConnectionStrings=false

Ответ 2

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

Это похоже на Опубликовать веб-приложение из командной строки, но просто очистил и добавил файл журнала. также проверьте исходный источник http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

Создайте MSBuild_publish_site.bat(укажите его как угодно) в корневом проекте вашего веб-приложения

set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319
set destPath=C:\Publish\MyWebBasedApp\

:: clear existing publish folder
RD /S /Q "%destPath%"

call %msBuildDir%\msbuild.exe  MyWebBasedApp.csproj "/p:Configuration=Debug;PublishDestination=%destPath%;AutoParameterizationWebConfigConnectionStrings=False" /t:PublishToFileSystem /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_Publish_LOG.log

set msBuildDir=
set destPath=

Обновите файл проекта веб-приложения MyWebBasedApp.csproj, добавив следующий тег в тег <Import Project=

<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
<Error Condition="'$(PublishDestination)'==''" Text="The PublishDestination property must be set to the intended publishing destination." />
    <MakeDir Condition="!Exists($(PublishDestination))" Directories="$(PublishDestination)" />

    <ItemGroup>
        <PublishFiles Include="$(_PackageTempDir)\**\*.*" />
    </ItemGroup>

    <Copy SourceFiles="@(PublishFiles)" DestinationFiles="@(PublishFiles->'$(PublishDestination)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="True" />
</Target>

это работает лучше для меня, чем другие решения.

Ознакомьтесь со следующими сведениями для получения дополнительной информации:

1) http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

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

3) Построить проект Visual Studio через командную строку

Ответ 3

Мое решение для CCNET с преобразованием Web.config:

<tasks>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>E:\VersionesCC\Trunk_4\SBatz\Gertakariak_Orokorrak\GertakariakMS\Web</workingDirectory>
        <projectFile>GertakariakMSWeb2.vbproj</projectFile>
        <targets>Build</targets>
        <timeout>600</timeout>
        <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
        <buildArgs>
            /noconsolelogger /p:Configuration=Release /v:diag
            /p:DeployOnBuild=true
            /p:AutoParameterizationWebConfigConnectionStrings=false
            /p:DeployTarget=Package
            /p:_PackageTempDir=E:\Aplicaciones\GertakariakMS2\Web
        </buildArgs>
        </msbuild>
</tasks>

Ответ 4

В VS2012 и выше вы можете ссылаться на существующие публиковать профили в своем проекте с помощью msbuild 12.0, это было бы эквивалентно щелчку правой кнопкой мыши и публиковать... выбирая профиль публикации ( "MyProfile" в этом примере):

msbuild C:\myproject\myproject.csproj "/P:DeployOnBuild=True;PublishProfile=MyProfile"

Ответ 5

У меня есть решение для Visual Studio 2012: fooobar.com/questions/34291/...

Однако он работает без установки Visual Studio вообще! (см. ОБНОВЛЕНИЕ). Я еще не проверял, можно ли получить все необходимые материалы из Visual Studio Express 2012 для веб-установки.

Ответ 6

Полный файл msbuild с вдохновением от CubanX

    <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Publish">
        <RemoveDir Directories="..\build\Release\Web\"
                     ContinueOnError="true" />        
       <MSBuild Projects="TheWebSite.csproj"
                Targets="ResolveReferences;_CopyWebApplication"
                Properties="Configuration=Release;WebProjectOutputDir=..\build\Release\Web;OutDir=..\build\Release\Web\bin\"
        />  
    </Target>
    <Target
        Name="Build"
        DependsOnTargets="Publish;">
    </Target>   
</Project>

Это помещает опубликованный веб-сайт в веб-каталог..\build\Release