С Помощью MSBuild.exe для "публикации" a ASP.NET проект MVC 4 с линией cmd
Я ищу команду для запуска против MSBuild.exe
это просто берет проект MVC 4 и публикует его в заданном каталоге.
например,
MSBuild <solution>/<project>.csproj -publish -output=c:/folder
Это, очевидно, неправильный синтаксис. Я пытаюсь упростить свой вопрос.
этот вопрос говорит о построении XML, но я не пытаюсь ничего делать с такой детализацией.
Я просто пытаюсь сделать развертывание.
далее в этом вопросе, кто-то говорит о "MSDeploy". Я могу посмотреть на это, но это единственный вариант? У меня нет возможности установить web deploy на сервере. В этом случае все, что мне действительно нужно сделать, это "опубликовать" и отправить содержимое опубликованного проекта в заданный каталог на сервере/файловой системе.
у кого-нибудь есть один лайнер, который я могу использовать?
должен ли я использовать MSDeploy?
есть ли средства msdeploy требуется веб-развертывания для установки на сервер?
не настраивает веб развертывание на сервере требует настройки некоторых портов, разрешений и установки некоторых надстроек IIS?
Я хотел бы просто выполнить что-то простое.
4 ответа:
в VS 2012 (а также публиковать обновления, доступные в Azure SDK для VS 2010) мы упростили публикацию командной строки для веб-проектов. Мы сделали это с помощью публикации профилей.
в VS для веб-проекта вы можете создать профиль публикации с помощью диалогового окна публикации. При создании этого профиля он автоматически сохраняется в проекте в разделе свойства\PublishProfiles. Созданный профиль можно использовать для публикации из командной строки с помощью командная строка следующее.
msbuild mysln.sln /p:DeployOnBuild=true /p:PublishProfile=<profile-name>
Если вы хотите сохранить профиль публикации (.pubxml file) в каком-то другом месте вы можете передать путь к PublishProfile.
профили публикации-это файлы MSBuild. Если вам нужно настроить процесс публикации, вы можете сделать это прямо изнутри .pubxml файл.
Если ваша конечная цель-передать свойства из командной строки. Я бы рекомендовал следующее. Создание образца публикации профиль в против. Проверьте, что опубликовать профиль, чтобы определить, какие свойства MSBuild необходимо передать в командной строке. FYI не все методы публикации поддерживают публикацию командной строки (например, FTP/FPSE).
к вашему сведению, если вы строите .csproj/.vbproj вместо своего .sln и вы используете VS 2012 вы также должны пройти в
/p:VisualStudioVersion=11.0
. Для получения более подробной информации о том, почему см. http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx.
создать строить.xml-файл, который выглядит как ниже
запустить командную строку Visual Studio
выполнить сборку msbuild.xml
<?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Build"> <PropertyGroup> <Build>$(MSBuildProjectDirectory)\Build</Build> <ProjectFile>MyProject.csproj</ProjectFile> <ProjectName>MyProjectNameInVisualStudio</ProjectName> <CopyTo>$(MSBuildProjectDirectory)\CopyTo</CopyTo> </PropertyGroup> <Target Name="Build"> <RemoveDir Directories="$(Build)"/> <MSBuild Projects="$(ProjectFile)" Properties="Configuration=Release;OutputPath=$(Build);OutDir=$(Build)/"></MSBuild> <Exec Command="robocopy.exe $(Build)\_PublishedWebsites$(ProjectName) $(CopyTo) /e /is if %errorlevel% leq 4 exit 0 else exit %errorlevel%"/> </Target> </Project>
С веб-проектами вам нужно построить, как указано выше, но тогда вам также нужно упаковать/скопировать. Мы используем копию файла, а не "опубликовать"...
также; мы используем DEBUG / RELEASE для создания веб-сайта; но затем фактические среды, т. е. "QA" или "PROD" для обработки веб-сайта.конфигурация трансформируется.
Итак, мы строим его изначально с RELEASE, а затем упаковываем его с QA - в примере ниже.
<PropertyGroup> <SolutionName>XXX.Website</SolutionName> <ProjectName>XXX.Website</ProjectName> <IisFolderName>XXX</IisFolderName> <SolutionConfiguration>QA</SolutionConfiguration> <!--Configuration will be set based on user selection--> <SolutionDir>$(MSBuildThisFileDirectory)..</SolutionDir> <OutputLocation>$(SolutionDir)\bin\</OutputLocation> <WebServer>mywebserver.com</WebServer> </PropertyGroup> <Target Name="BuildPackage"> <MSBuild Projects="$(SolutionDir)$(SolutionName).sln" ContinueOnError="false" Targets="Clean;Rebuild" Properties="Configuration=Release" /> <MSBuild Projects="$(SolutionDir)$(ProjectName)$(ProjectName).csproj" ContinueOnError="false" Targets="Package" Properties="Configuration=$(SolutionConfiguration);AutoParameterizationWebConfigConnectionStrings=False" /> </Target> <Target Name="CopyOutput"> <ItemGroup> <PackagedFiles Include="$(SolutionDir)$(ProjectName)\obj$(SolutionConfiguration)\Package\PackageTmp\**\*.*"/> </ItemGroup> <Copy SourceFiles="@(PackagedFiles)" DestinationFiles="@(PackagedFiles->'\$(WebServer)$(IisFolderName)$(SolutionConfiguration)\%(RecursiveDir)%(Filename)%(Extension)')"/> </Target>
Так,
- настройки свойства
- вызов цели BuildPackage
- вызов цели CopyOutput И вуаля!