Использование MSBuild.exe для «публикации» проекта ASP.NET MVC 4 с помощью строки cmd

Я ищу команду для запуска MSBuild.exe, которая просто берет проект MVC 4 и публикует его в заданном каталоге .

Например,

MSBuild <solution>/<project>.csproj -publish -output=c:/folder

Это явно неправильный синтаксис. Я пытаюсь упростить свой вопрос.

Этот вопрос говорит о сборке XML, но я не пытаясь сделать что-нибудь с таким большим количеством деталей.

Я просто пытаюсь выполнить развертывание.

Далее в этом вопросе кто-то говорит о «MSDeploy». Я могу посмотреть на это, но это единственный вариант? У меня нет возможности установить веб-развертывание на сервере. В этом случае все, что мне действительно нужно, это «Опубликовать» и отправить содержимое опубликованного проекта в заданный каталог на сервере /файловой системе.

У кого-нибудь есть один лайнер, который я могу использовать?

Должен ли я использовать MSDeploy?

Требуется ли MSDeploy для веб-развертывания на сервере?

Разве настройка веб-развертывания на сервере не требует настройки некоторых портов, разрешений и установки некоторых надстроек IIS?

Я хотел бы просто выполнить что-то простое.

72 голоса | спросил Erik5388 17 MonEurope/Moscow2012-12-17T22:44:15+04:00Europe/Moscow12bEurope/MoscowMon, 17 Dec 2012 22:44:15 +0400 2012, 22:44:15

4 ответа


0

В VS 2012 (а также в публикации обновлений, доступных в Azure SDK для VS 2010 ) мы упростили публикацию командной строки для веб-проектов. Мы сделали это с помощью публикации профилей.

В VS для веб-проекта вы можете создать профиль публикации с помощью диалога публикации. Когда вы создаете этот профиль, он автоматически сохраняется в вашем проекте в папке Properties \ PublishProfiles. Созданный профиль можно использовать для публикации из командной строки с помощью командной строки следующего.

msbuild mysln.sln /p:DeployOnBuild=true /p:PublishProfile=<profile-name>

Если вы хотите сохранить профиль публикации (файл .pubxml) в другом месте, вы можете указать путь к PublishProfile.

Профили публикации - это файлы MSBuild. Если вам нужно настроить процесс публикации, вы можете сделать это прямо в файле .pubxml.

Если ваша конечная цель - передать свойства из командной строки. Я бы порекомендовал следующее. Создать образец профиля публикации в VS. Проверьте этот профиль публикации, чтобы определить, какие свойства MSBuild необходимо передать в командной строке. К вашему сведению, не все публикации поддерживают поддержку командной строки (т.е. FTP /FPSE).

К вашему сведению, если вы создаете .csproj /.vbproj вместо .sln и используете VS 2012, вы также должны передать /p:VisualStudioVersion=11.0. Подробнее о том, почему, см. http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.asx.

ответил Sayed Ibrahim Hashimi 19 WedEurope/Moscow2012-12-19T11:44:03+04:00Europe/Moscow12bEurope/MoscowWed, 19 Dec 2012 11:44:03 +0400 2012, 11:44:03
0

Создайте файл build.xml, который будет выглядеть ниже

Запустите командную строку Visual Studio

Запустите msbuild build.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>
ответил nils 18 TueEurope/Moscow2012-12-18T18:00:07+04:00Europe/Moscow12bEurope/MoscowTue, 18 Dec 2012 18:00:07 +0400 2012, 18:00:07
0

С веб-проектами вам нужно создавать, как указано выше, но затем вам также нужно упаковать /скопировать. Мы используем копию файла, а не «публиковать» ...

Также; мы используем DEBUG /RELEASE для создания сайта; но затем фактические среды, то есть "QA" или "PROD" для обработки преобразований web.config.

Итак, мы сначала собираем его с помощью 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>

Итак,

  1. Настройте свои свойства
  2. Вызовите цель BuildPackage
  3. Вызовите цель CopyOutput И вуаля!
ответил James Joyce 21 PM00000040000004131 2016, 16:39:41
0

Команда ниже работает отлично:

msbuild Myproject.sln  /t:Rebuild /p:outdir="c:\outproject\\" /p:Configuration=Release /p:Platform="Any CPU"
ответил jamilir 25 Maypm15 2015, 20:51:01

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132