在解决方案中为dotnet运行设置默认项目

4im*_*ble 19 .net .net-core dotnet-cli

我在它自己的文件夹中创建了一个解决方案和一个webapi项目.然后我将项目添加到解决方案中.

我希望能够在dotnet run不指定项目的情况下运行,方法是设置默认值(就像我在Visual Studio中一样)

CLI可能还是不可行?

Mar*_*ich 15

目前,这是不可能的dotnet run.

dotnet run确实调用msbuild目标进行恢复和构建,但查询实际程序和参数以从新的静态评估运行,这意味着即使您将自定义构建逻辑添加到解决方案(=>正在构建的"项目"),没有机会运行自定义的msbuild逻辑来从其他项目中获取这些属性.(人们仍然可以硬编码构建的可执行文件的相对路径,但这非常麻烦且不够灵活)

这意味着最好的方法是创建dotnet run -p my/project为你调用正确命令的scipts(.bat,.sh),而不需要你做太多的输入.


nil*_*arp 12

如果您在 *nix 系统上,Makefile 可以解决所有重复输入问题。

我通常会创建一个高级别Makefile来缩短常用命令。

build:
    dotnet build
clean:
    dotnet clean
restore:
    dotnet restore
watch:
    dotnet watch --project src/Main/Main.csproj run
start:
    dotnet run --project src/Main/Main.csproj
Run Code Online (Sandbox Code Playgroud)

上述命令与干净的架构设置有关,其中文件结构大致如下树所示。

-- root
|-- src
|    |-- Application
|    |-- Core
|    |-- Infrastructure
|    |-- Main
|-- tests
|    |-- Application.IntegrationTests
|    |-- Core.UnitTests
|    |-- Infrastructure.UnitTests
|-- API.sln
|-- Makefile
Run Code Online (Sandbox Code Playgroud)

通过该设置,我可以运行类似的命令

make start
Run Code Online (Sandbox Code Playgroud)


Sli*_*SFT 7

似乎还没有dotnet配置文件 - 很高兴看到一个.dotnetconfig.json或类似的文件,否则扩展 SLN 文件以支持dotnet命令的默认项目。按照 @MartinUllrich 的思路,假设您安装了 Node.js,只需创建一个package.json并调用npm start. 同样的模式也适用于其他脚本引擎。

包.json

{
  "name": "dotnet-run-default-project",
  "private": true,
  "version": "1.0.0", 
  "scripts": {
    "start": "dotnet run -p .\\src\\MyApplication.Web\\"
  }
}
Run Code Online (Sandbox Code Playgroud)

运行默认项目

npm 启动

  • 这需要安装节点,但对于大多数后端开发人员来说并非如此 (6认同)