Сборка проекта Visual Studio через командную строку

#c# #build #windows-server-2008 #command #cmd

#c# #сборка #windows-server-2008 #команда #cmd

Вопрос:

Я запускаю ASP.NET веб-сайт из установки Windows Server 2008, и мне нравится редактировать страницы через командную строку, поскольку я подключаюсь к серверу по ssh.

Я установил Vim на сервере, чтобы я мог легко редактировать файлы. Если я редактирую страницы HTML и CSS и .aspx, обновления выполняются успешно. Но если я захочу отредактировать исходный код, мне придется перестроить проект. При перестройке проекта все перекомпилируется должным образом и обновляется копия в Интернете. Это сервер разработки, поэтому обновления для всего в порядке, поскольку никто не видит этот сервер.

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

Проект написан на C #, и все файлы находятся в wwwroot папке, поэтому после сборки не требуется перемещать файлы.

Ответ №1:

Создайте файл .bat с именем: Manual_MSBuild_ReleaseVersion.bat

Поместите это в файл .bat.

 REM you'll have to find the "latest" version of where msbuild.exe resides on your machine.. here are some popular versions/locations
REM set msBuildDir=%WINDIR%Microsoft.NETFrameworkv2.0.50727
REM set msBuildDir=%WINDIR%Microsoft.NETFrameworkv3.5
REM set msBuildDir=%WINDIR%Microsoft.NETFrameworkv4.0.30319
REM set msBuildDir=C:Program Files (x86)MSBuild12.0Bin
set msBuildDir=C:Program Files (x86)MSBuild14.0Bin

call "%msBuildDir%msbuild.exe"  MySolution.sln /p:Configuration=Release /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_ReleaseVersion_LOG.log
set msBuildDir=
  

Вы можете создать файл .sln или файл .csproj.
MySolution.sln или MyProject.csproj

Смотрите Как: Использовать MSBuild для создания веб-пакета для получения дополнительной информации.

Вы можете сделать еще один шаг вперед:

 rd .BuildResults /S /Q
md .BuildResults
rd .MyProjectBinRelease  /S /Q

REM you'll have to find the "latest" version of where msbuild.exe resides on your machine.. here are some popular versions/locations
REM set msBuildDir=%WINDIR%Microsoft.NETFrameworkv2.0.50727
REM set msBuildDir=%WINDIR%Microsoft.NETFrameworkv3.5
REM set msBuildDir=%WINDIR%Microsoft.NETFrameworkv4.0.30319
REM set msBuildDir=C:Program Files (x86)MSBuild12.0Bin
set msBuildDir=C:Program Files (x86)MSBuild14.0Bin
call "%msBuildDir%msbuild.exe"  MySolution.sln /p:Configuration=Release /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_ReleaseVersion_LOG.log
set msBuildDir=

XCOPY .MyProjectBinRelease*.* .BuildResults
  

Таким образом, вы удаляете каталог (просто чтобы убедиться, что вы получаете суперчистую сборку), создаете его, создаете решение / проект, а затем копируете результаты сборки в новый каталог.

Каждый раз все очень свежо. И если сборка завершается неудачно, каталог BuildResults пуст.

И еще один тонкий индикатор: дата-время каталога BuildResults — это время, когда вы в последний раз создавали (или пытались создать) решение / проект. Тонкая, но иногда полезная.

Комментарии:

1. используя командную строку Visual Studio, я смог создать свое решение без создания файла .bat. MSBuild "MySolution.sln" /P:Configuration=Debug

2. Файл granadaCoder на самом деле .bat потрясающий, поэтому не нужно постоянно заходить в командную строку Visual Studio. также приятно иметь этот файл журнала. Спасибо

3. еще одна полезная настройка — /t:Clean,Build это приведет к очистке и перестроению msbuild.exe MySolution.sln /t:Clean,Build

4. Отличная находка при очистке и сборке!

5. Я добавил RD . MyProjectBin Release / S / Q к ответу, чтобы решить эту проблему. Хороший момент, спасибо,.

Ответ №2:

Возможно, с помощью этой команды:

   >> devenv myproject.sln /Build "Release|x86"
  

Вы можете найти devenv в «C:Program Файлы (x86) Microsoft Visual Studio 10.0Common7IDEdevenv.exe «путь.

Комментарии:

1. С помощью командной строки Visual Studio (командная строка разработчика) нет необходимости искать путь к devenv.exe

Ответ №3:

Я использовал модификацию ответа от @granadaCoder выше.

Для .NET версии 4.5 и более поздних версий нет соответствующего каталога сборки в

%WINDIR%Microsoft.NETFramework

и использование MSBuild для более старой платформы не позволит вам компилировать новые конструкции, такие как интерполированные строки.

ЧТОБЫ обойти это, вам нужно установить последнюю версию MS Build Tools (на данный момент 2015) и использовать MSBuild.exe в

%programfiles(x86)%MSBuild14.0Bin

Комментарии:

1. Спасибо за обновление ответа ……. с изменением местоположения для msbuild.exe .

2. Вы также должны заключить %msBuildDir%msbuild.exe в двойные кавычки

Ответ №4:

Установите .NET SDK и используйте MsBuild.exe инструмент командной строки. Это то, что Visual Studio использует при сборке проекта или решения.

Комментарии:

1. Не обязательно. По крайней мере, Visual Studio может создавать некоторые типы проектов, которые не может MSBuild (например, setup projects). Однако для компиляции можно вызвать devenv .

2. Я считаю msbuild.exe поставляется с установкой ~~ Framework ~~ (только), а не с ~ SDK. Смотрите csharp411.com/where-to-find-msbuild-exe . Он начал включаться в версии 2.0 и далее. Иначе говоря, установка SDK может оказаться ненужной.

3. Джоуи прав, msbuild.exe будет создавать ~ большинство приложений. Вот пример, с которым я столкнулся, где msbuild.exe не будет работать. Тип «.rulep» является пользовательским приложением IBM (project) и должен быть создан с использованием devenv.exe ibm.com/developerworks/forums /…

4. я установил .net sdk, но переменная среды по-прежнему не регистрируется при вводе msbuild или msbuild.exe в cmd

5. Вы смотрели или пробовали файловое решение .bat, указанное далее в этом сообщении?