.net core 使用dotnet cli一步编译多个dotnet核心项目

.net core 使用dotnet cli一步编译多个dotnet核心项目,.net-core,dotnet-cli,.net Core,Dotnet Cli,假定此文件夹结构 SampleApp global.json Src Web project.json Startup.cs ... Model project.json Startup.cs ..

假定此文件夹结构

SampleApp
        global.json
        Src  
            Web             
                project.json
                Startup.cs
                ...
            Model
                project.json
                Startup.cs
                ...
如何使用
dotnet
编译这两个项目?(来自命令行,不在visual studio中)

如果在根文件夹级别运行
dotnet build
,您将获得

找不到文件。。project.json

我可以在CLI repo上看到,但这是从Feb2获得的


任何脚本在盲目调用所有
src
子文件夹上的
dotnet
之前都必须考虑依赖关系

目前还没有这样的工具。甚至,ASP.NET团队使用的工具也会在每个文件夹中盲目地调用
dotnet build/pack


很好的一点是,
dotnet build
现在足够聪明,如果依赖项没有更改,就不会重新编译,所以这不再是问题了。

我也有类似的要求。这是我的解决方法:

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

dotnet build
命令接受glob模式。所以你可以这样做:

dotnet build Src/**/project.json

使用GNU Make。我用它来构建我的项目。您所要做的就是在项目根文件夹中创建一个Makefile。您可以在目录中嵌套Makefile,并拥有运行子目录的顶级Makefile。然后为每个“子项目”文件夹设置Makefiles,并运行任何comandline工具。以dotnet为核心的是dotnet

等等。。。GNU-“GNU不是Unix”这是一个Unix/Linux应用程序。。。我运行windows。好消息是,您可以在windows中执行此操作。我通过git bash安装(git for windows)使用make.exe。你必须去寻找塞格温港。(谷歌:“makeforgitbash”)然后将其安装到cygwin文件夹下的bin目录中。如果你真的想安装cygwin,你也可以安装它

使用Gnu Make的好处在于它是通用的。由于dotnet core与平台无关,因此每个Mac/FreeBSD/Linux环境都很可能已经安装了“make”。将它添加到您的Windows计算机和我的项目中非常有意义。因为现在每个人都可以用同样的方式构建项目

我的一些项目需要用DockerFile或snap包构建docker容器,部署到测试等等。。。Make(请原谅这个双关语)使它变得容易

下面是一个简单项目Makefile的示例。单独运行“make”就像说“make all”,您可以设置一个类似于“cd./subdir”的命令;将“make”作为你的一个虚假指令。(谷歌:“Makefile文档”)

项目驱动?=/c/prj
nuget\u repo\u名称?=本地\u nuget\u包
本地\u nuget\u目录?=$(项目\u驱动器)/$(nuget\u回购\u名称)

RELEASE|VERSION:=`grep”“*.csproj|cut-d'>'-f2|cut-d'缺少的是,如果没有
project.json

dotnet build src/**/project.json
-- or --
dotnet build src/project.sln

dotnet测试也一样

好吧,你的最后一句话让我意识到,如果在上面的例子中说
web
依赖于
model
,那么你不需要先将cd放入model文件夹来构建它-你可以在web文件夹中简单地
dotnet build
,它将编译
model
-dotnet pack不需要支持这一点(对于那些可能最终看到这一点并希望使用相同技术的人来说)已经有一段时间了,新的项目模板中没有project.json。有更新的解决方案吗?
dotnet build src/**/project.json
-- or --
dotnet build src/project.sln