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

时间:2017-10-10 20:00:57

标签: .net .net-core dotnet-cli

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

我希望能够运行dotnet run而无需通过设置默认值来指定项目(就像我在Visual Studio中那样)

这是否可以使用CLI?

4 个答案:

答案 0 :(得分:9)

目前,使用dotnet run无法做到这一点。

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

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

答案 1 :(得分:6)

如果您使用的是* 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

以上命令与干净的体系结构设置有关,文件结构大致类似于以下树。

-- root
|-- src
|    |-- Application
|    |-- Core
|    |-- Infrastructure
|    |-- Main
|-- tests
|    |-- Application.IntegrationTests
|    |-- Core.UnitTests
|    |-- Infrastructure.UnitTests
|-- API.sln
|-- Makefile

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

make start

答案 2 :(得分:0)

一种替代方法是将项目文件移动到解决方案目录。然后,在执行dotnet run时,它将检查该目录中是否有要加载的项目。

之后,您无需指定--project :)

答案 3 :(得分:-1)

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

package.json

{
  "name": "dotnet-run-default-project",
  "private": true,
  "version": "1.0.0", 
  "scripts": {
    "start": "dotnet run -p .\\src\\MyApplication.Web\\"
  }
}

正在运行默认项目

  

npm开始