Скомпилируйте несколько проектов dotnet core за один шаг с помощью dotnet cli
предполагая, что эта структура папок
SampleApp
global.json
Src
Web
project.json
Startup.cs
...
Model
project.json
Startup.cs
...
как скомпилировать оба проекта с помощью dotnet
? (из командной строки, а не в visual studio)
если вы запустите dotnet build
на уровне корневой папки вы
не удалось найти файл .. проект.в JSON
Я вижу, что есть это выдающееся улучшение на репо CLI, но это из Feb2.
любой скрипт должен будет принимать зависимости в внимание, прежде чем слепо вызов dotnet
на все src
суб-папок.
4 ответов
на dotnet build
команда принимает шаблоны glob. Таким образом, вы можете сделать это:
dotnet build Src/**/project.json
нет такого инструмента пока нет. Даже KoreBuild, инструмент, который ASP.NET команда использует, идет вслепую в каждой папке и вызывает dotnet build/pack
.
хорошая вещь, что dotnet build
теперь достаточно умен, чтобы не перекомпилировать зависимости, если они не изменились, так что это больше не проблема.
У меня было аналогичное требование. Это мой обходной путь:
@echo off
for /D %%d in (*) do (
cd %%d
cd
dotnet restore
dotnet build
cd ..
)
exit /b
используйте GNU Make. Я использую его, чтобы строить свои проекты. все, что вам нужно сделать, это создать Makefile в корневой папке проекта. Вы можете вложить Makefiles в каталоги и иметь Makefile верхнего уровня, который запускает подкаталоги. затем вы настраиваете файлы Makefile для каждой папки "подпроекты" и запускаете любой инструмент comandline. с dotnet ограничителя ядро является dotnet ограничителя .
подождать... GNU - "GNU is not Unix" это приложение Unix/Linux... Я запускаю windows. Что ж, хорошая новость в том, что ты можешь это сделать. в Windows. Я использую make.exe через мою установку git-bash (git для windows). Вам нужно будет найти порт cygwin make. (google: "make for git-bash") затем установите его в свой каталог bin в папке cygwin. Вы также можете просто установить cygwin, если вы действительно хотите.
хорошая вещь в использовании Gnu-Make-это универсальность. Поскольку dotnet core является агностиком платформы, каждая среда Mac/FreeBSD / Linux, скорее всего, уже установлена. Добавление его к ваша машина Windows и проекты для меня имеют большой смысл. Поскольку проект теперь может быть построен всеми одинаково.
некоторые из моих проектов должны создавать контейнеры docker с dockerfiles или snap-пакетами, развертываться для тестирования и т. д... Сделать (простите за каламбур) легко.
вот пример простых проектов Makefile. Запуск "make" сам по себе-это как сказать "make all", вы можете настроить команду типа " cd ./ subdir; make ' как один из ваших .фальшивый директивы. (Google: "Makefile documentation")
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)