用 dotnet new console -n DemoConsole 创建项目,运行没问题,但文件夹里只有 DemoConsole.csproj 和 Program.cs——没有 .sln,Visual Studio 怎么打开?
先说结论:sln 不是运行必需的,它是 IDE 用的多项目容器。dotnet new console 本来就不生成它。
csproj 是本体,sln 是容器
| 文件 | 角色 | 谁在用 |
|---|---|---|
.csproj |
项目本体:目标框架、依赖、编译配置 | dotnet CLI、VS、MSBuild |
.sln |
容器:把多个 csproj 组织在一起 | Visual Studio、Rider |
dotnet build、dotnet run 只认 csproj,sln 缺席不影响编译运行——所以很多人项目跑了半年才发现自己从来没有 sln。
单项目:直接打开 csproj
VS 2019/2022 支持以项目文件为单位打开:
文件 → 打开 → 项目/解决方案 → 选中 DemoConsole.csproj
F5 调试、NuGet 管理全都可用,单项目阶段可以一直不建 sln。
多项目:该补 sln 了
MySolution/
├── MySolution.sln
├── DemoConsole/ ← 主程序
├── DemoConsole.Tests/ ← 单元测试
└── DemoLibrary/ ← 类库
sln 的价值在项目多起来之后:
- 一次管理所有项目:解决方案资源管理器里树形展示、添加引用都在一个窗口
- 批量生成:
Ctrl+Shift+B编译整个解决方案,改了类库主程序自动跟着编译 - 记住工作现场:没有 sln 时项目结构是"散"的,重启 IDE 后要手动重新打开,启动项目等设置也没地方存
两行命令补上(注意 sln 建在项目外面一层):
cd /d D:\codes\my-project
dotnet new sln -n DemoConsole
dotnet sln add DemoConsole\DemoConsole.csproj
总结
- csproj 管编译,sln 管组织——
dotnet new console只生成前者是设计如此 - 单项目直接用 VS 打开 .csproj;多项目到外层目录
dotnet new sln+dotnet sln add