.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