Скомпилируйте несколько проектов ядра dotnet за один шаг, используя dotnet cli

Предполагая эту структуру папок

SampleApp
        global.json
        Src  
            Web             
                project.json
                Startup.cs
                ...
            Model
                project.json
                Startup.cs
                ...

как скомпилировать оба проекта с помощью dotnet? (из командной строки, а не в визуальной студии)

Если вы запустите dotnet build на уровне корневой папки, вы получите

Не удалось найти файл.. project.json

Я вижу, что это выдающееся улучшение в репозитории CLI, но это с 2 февраля.

Любые script должны будут учитывать зависимости, прежде чем просто вслепую вызывать dotnet во всех подпапках src.

Ответ 1

Нет такого инструмента еще. Даже KoreBuild, инструмент, который использует команда ASP.NET, слепо идет в каждой папке и вызывает dotnet build/pack.

Самое приятное, что dotnet build теперь достаточно умен, чтобы не перекомпилировать зависимости, если они не изменились, поэтому больше не проблема.

Ответ 2

Команда dotnet build принимает шаблоны glob. Итак, вы можете сделать это:

dotnet build Src/**/project.json

Ответ 3

У меня было аналогичное требование. Это моё решение:

@echo off
for /D %%d in (*) do (
    cd %%d  
    cd  
    dotnet restore
    dotnet build
    cd ..
)
exit /b

Ответ 4

Используйте GNU Make. Я использую его для создания своих проектов. все, что вам нужно сделать, создать Makefile в корневой папке проекта. Вы можете вставлять Makefile в каталоги и иметь Makefile верхнего уровня, который запускает подкаталоги. затем вы создаете Makefiles для каждой из ваших папок "Sub Projects" и запускаете любой инструмент comandline. с ядром dotnet является dotnet.

Подождите... GNU - "GNU не Unix", что приложение Unix/Linux... Я запускаю окна. Хорошая новость заключается в том, что вы можете это сделать в окнах. Я использую make.exe через мою установку git - bash (git для окон). Вам нужно будет найти киргинский порт. (google: "make for git - bash" ) Затем установите его в каталог bin в папке cygwin. Вы также можете просто установить cygwin, если хотите.

Хорошая вещь об использовании Gnu-Make - универсальная. Поскольку ядро ​​dotnet является агностическим для платформы, каждая среда Mac/FreeBSD/Linux имеет "скорее всего", которая уже установлена. Добавление его на ваш компьютер с Windows и проекты для меня имеют большой смысл. Так как проект теперь может быть построен всеми одинаково.

некоторые из моих проектов должны строить контейнеры докеров с док файлами или оснащать пакеты, развертывать для тестирования и т.д. Сделать (простить каламбуру) упрощает.

Вот пример простых проектов Makefile. Выполнение "make" само по себе - это как сказать "сделать все", вы можете создать команду типа "cd./subdir; make 'в качестве одной из ваших директив .phoney. (Google:" Документация Makefile")

project_drive?=/c/prj
nuget_repo_name?=Local_Nuget_Packages
local_nuget_dir?=$(project_drive)/$(nuget_repo_name)

RELEASE_VERSION:= `grep "<Version>" *.csproj | cut -d '>' -f 2 | cut -d '<' -f 1`

.PHONEY: clean release test doc nuget install debug_nuget debug_install

all: doc MSBuild

test:
  ./test.sh

MSBuild: 
   dotnet build

clean:
   dotnet clean; dotnet restore

release: 
   dotnet build -c Release

doc:
   doxygen ./Doxyfile.config

nuget: release
   dotnet pack -c Release

install: 
   cp ./bin/Release/*.$(RELEASE_VERSION).nupkg $(local_nuget_dir)

debug_nuget: MSBuild
   dotnet pack 

debug_install: 
   cp ./bin/debug/*.$(RELEASE_VERSION).nupkg $(local_nuget_dir)