使用dotnet cli

时间:2016-04-12 02:02:11

标签: .net-core dotnet-cli

假设这个文件夹结构

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

如何使用dotnet编译两个项目? (来自命令行,而不是视觉工作室)

如果您在根文件夹级别运行dotnet build,则

  

无法找到文件.. project.json

我可以看到CLI repo上有this outstanding enhancement但是来自Feb2。

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

5 个答案:

答案 0 :(得分:23)

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

dotnet build Src/**/project.json

答案 1 :(得分:3)

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

好消息是dotnet build现在足够智能,如果它们没有改变就不会重新编译依赖项,所以这不再是问题了。

答案 2 :(得分:3)

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

等等...... GNU - “GNU不是Unix”,这是一个Unix / Linux应用程序......我运行windows。好消息是,你可以在Windows中做到这一点。我通过我的git-bash安装使用make.exe(git for windows)。你必须找到make的cygwin端口。 (google:“make for git-bash”)然后将其安装到cygwin文件夹下的bin目录中。如果你真的想要,你也可以安装cygwin。

使用Gnu-Make的好处是它是通用的。由于dotnet核心与平台无关,因此Mac / FreeBSD / Linux的每个环境都很可能已经“安装”。将它添加到您的Windows机器和项目给我很有意义。由于您的项目现在可以由每个人以相同的方式构建。

我的一些项目需要使用dockerfiles构建docker容器,或者使用snap包,部署测试等等... Make(原谅双关语)让它变得简单。

这是一个简单项目Makefile的示例。单独运行'make'就像说'make all'你可以设置一个像'cd ./subdir; make'作为你的.phoney指令之一。 (谷歌:“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)

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

缺少的是,如果您没有 project.sln

,您也可以在 project.json 文件上使用这些命令
dotnet build src/**/project.json
-- or --
dotnet build src/project.sln

同样适用于 dotnet test