Как я могу скомпилировать проект .NET без установленной Visual Studio?


36

Я хочу скомпилировать проект .NET / C #, но я не хочу устанавливать Visual Studio для этого.

Какие инструменты мне нужны и как я могу скомпилировать проект?


Visual Studio Express не будет работать для вас?
svick

1
@svick: Если мне понадобится его для компиляции проекта, я бы использовал его. Но в этом случае в этом нет необходимости, поэтому мне не нужно устанавливать его на каждую машину, на которой я хочу развернуть проект. Я могу просто вытащить копию из VCS, скомпилировать ее и запустить. Установка VS Express усложнила бы весь процесс.
Der Hochstapler

В этом случае более простым решением может быть развертывание скомпилированной сборки. Таким образом, вам не нужно выполнять компиляцию на каждой машине.
svick

@svick: Спасибо за вашу проницательность, но развертывание бинарных файлов кратко пришло мне в голову. Если бы я считал это выгодной альтернативой в этом случае, я бы сделал это. При этом, этот вопрос и ответ были опубликованы, чтобы просто описать процесс. Решение, является ли этот процесс подходом для пользователей, остается за ними.
Der Hochstapler

Ответы:


37
  1. Загрузите и установите последнюю версию .NET Framework.
    Например, вы можете использовать установщик для .NET Framework 4.5 .

  2. Откройте командную строку и перейдите в каталог установки .NET Framework.
    Например:

    cd \Windows\Microsoft.NET\Framework\v4*
    
  3. Используйте MSBuild.exeдля компиляции вашего решения.
    Например:

    msbuild "C:\Users\Oliver\Documents\My Project\My Project.sln" /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU"

Если в проекте используются пакеты NuGet, вы можете выполнить следующие шаги для их получения:

  1. Загрузите загрузчик NuGet.exe из командной строки и, например, поместите его в каталог решений.

  2. Откройте командную строку и перейдите в каталог решений.
    Например:

    cd "C:\Users\Oliver\Documents\My Project"
    
  3. Вызовите NuGet.exeдля обновления пакетов, необходимых для этого решения:

    NuGet.exe install "My Project/packages.config" -o packages/
    

Ницца! Есть ссылки на документацию MSBuild? Кроме того, это для проекта VS, который уже есть, верно? Как насчет компиляции кода в .CS или других исходных файлах?
Каран

2
@ Каран - Кто-нибудь хочет ответить на эту статью ? Msdn.microsoft.com/en-us/library/vstudio/78f4aasd.aspx ?
Ramhound

@Ramhound: Я думаю, что кто-то знающий может также включить все это в один ответ типа FAQ. Также некоторые дополнительные вопросы, на которые можно ответить. Csc.exe также входит в комплект установки .NET Framework для конечного пользователя? Включено ли это, если вы устанавливаете только профиль клиента?
Каран

1
@Karan: я добавил ссылку на MSBuild.exeдокументацию аргумента командной строки. Да, это для проекта, который уже находится на локальном компьютере (возможно, загружен с GitHub). Как упоминает Ramhound, csc.exeэто будет инструмент для компиляции отдельных файлов. csc.exeтакже поставляется в комплекте с .NET Framework. Это основной компилятор C #, и MSBuild, вероятно, просто вызывает его. Не уверен насчет профиля клиента, но я бы предположил, что они включены в него.
Der Hochstapler

1
Одна из причин, которая csc.exeдолжна быть включена, состоит в том, что Профиль клиента включает в себя XmlSerializerкласс. Этот класс генерирует сборки сериализации (используя csc.exe) во время выполнения.
тяжело

3

Если вы хотите избежать установки Visual Studio, вы можете попробовать Mono , кросс-платформенную среду разработки .NET и среду разработки с открытым исходным кодом. Mono основан на опубликованном стандарте ECMA для C # и напрямую совместим с предварительно скомпилированными приложениями C #.

Mono также включает в себя инструмент под названием XBuild, который может полностью заменить MSBuild. См. Эту статью из проекта Mono относительно переноса проекта из MSBuild в XBuild. Однострочное описание XBuild из вики:

xbuild - это реализация Monbuild от Mono, позволяющая компилировать проекты, содержащие файл msbuild, в Linux.

Обратите внимание, что в дополнение к Linux, Windows и Mac OS X также поддерживаются.


1
Есть ли какая-либо причина, которую можно использовать monoна Windows?
Ришав

2
@Rishav Политические соображения? Возможно, для того, кто должен использовать Windows, но хочет использовать как можно меньше других технологий Microsoft. Просто спекулировать, хотя.
Джейми
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.