我在自己的文件夹中创建了一个解决方案和一个webapi项目。 然后我将项目添加到解决方案中。
我希望能够运行dotnet run
而无需通过设置默认值来指定项目(就像我在Visual Studio中那样)
这是否可以使用CLI?
答案 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
。同样的模式也可以用于其他脚本引擎。
{
"name": "dotnet-run-default-project",
"private": true,
"version": "1.0.0",
"scripts": {
"start": "dotnet run -p .\\src\\MyApplication.Web\\"
}
}
npm开始