Версия VS2010 Web Publish версии командной строки для развертывания файловой системы
Люди,
Вкратце, я хочу повторить этот диалог:
![alt text]()
Это проект MVC Visual Studio 2010 ASP.Net. Если я выполню эту команду, я получу все файлы, которые я хочу, включая преобразованные web.configs в каталоге "C:\ToDeploy".
Я хочу реплицировать это в командной строке, чтобы я мог использовать его для сборки среды QA.
Я видел различные статьи о том, как это сделать в командной строке для Remote Deploys, но я просто хочу сделать это для развертывания файловой системы.
Я знаю, что могу реплицировать эту функциональность с помощью nAnt-задач или графических скриптов, но я хочу сделать это с помощью этого механизма, чтобы я не повторялся.
Я исследовал это еще несколько, и я нашел эти ссылки, но ни один из них не решил его чисто:
Спасибо заранее!
Ответы
Ответ 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