ctrl+shift+n可直接打开“创建新项目”对话框,比菜单操作快两步;若无效,需点击编辑区恢复焦点;模板筛选依赖语言、平台、项目类型三下拉项及搜索框;未见模板说明对应工作负载未安装;.sln文件为解决方案元信息容器,不包含代码。

直接创建项目时,Ctrl+Shift+N 比菜单栏更快
启动 Visual Studio 后,不用等起始页加载完,按 Ctrl+Shift+N 就能立刻弹出“创建新项目”对话框。这个快捷键在已打开 IDE 的任何状态下都有效,比点“文件 → 新建 → 项目”少两步操作。
注意:如果快捷键没反应,大概率是当前焦点不在编辑器区域(比如正停在输出窗口或错误列表),随便点一下代码编辑区再试一次即可。
- 模板筛选依赖三个下拉项:
语言(必须设为 C#、C++ 或 Python 等)、平台(如 Windows、Azure)、项目类型(如控制台、类库、WPF) - 搜索框输入关键词(如
console、winforms、functions)比手动翻筛选条件更可靠,尤其当你不确定模板归类时 - 没看到想要的模板?不是软件坏了,而是对应工作负载没装——点“安装更多工具和功能”,勾选
.NET 桌面开发(C# WinForms/WPF)、使用C++的桌面开发(C++ Win32/CLI)或Azure 开发(Functions)
.sln 文件不是可执行文件,但它是整个项目的“指挥中心”
每次创建项目,Visual Studio 都会同时生成一个同名的 .sln(solution)文件。它不包含代码,只记录哪些项目属于这个解决方案、各项目之间的依赖顺序、启动项目设置等元信息。
常见误解:双击 .sln 文件打开的是整个解决方案,不是单个项目;右键 .sln 节点 → “添加 → 新建项目”,才能往里面加第二个项目(比如主程序 + 类库)。
- 项目路径建议全英文、无空格、无中文——虽然 VS 2026 对中文路径兼容性变好了,但某些 C++ 工具链(如 CMake Tools 插件、第三方构建脚本)仍可能报
error MSB8020或找不到头文件 - 勾选“将解决方案与项目置于同一目录”是默认行为,但大型项目建议取消:把
MyApp.sln放在D:\Projects\MyApp\,而项目文件夹设为D:\Projects\MyApp\src\MyAppCore\,方便 Git 管理和后期拆分
新建 C++ 项目后,main.cpp 不一定自动存在
C++ 项目模板差异极大:空项目 模板什么源文件都不加,控制台应用 模板会自动生成 main.cpp,而 CLR 空项目 默认只建 stdafx.cpp 和预编译头——你得自己右键“源文件” → “添加 → 新建项 → C++ 文件(.cpp)”来补上入口。
Visual Studio 18.8.1 官方固定版本安装引导程序,当前条目使用微软发布历史中的 Professional Web Installer,适合旧项目兼容、环境回退、复现特定构建链和排查版本差异等场景。
容易踩的坑:复制别人代码到已有项目时,如果忘了把新 .cpp 文件加入项目(即没在解决方案资源管理器里显示),编译会报 LNK2019: 无法解析的外部符号 _main,因为链接器根本看不到这个文件。
- 确认文件已加入项目:右键该
.cpp文件 → “属性” → 查看“常规 → 项类型”是否为ClCompile(不是“不参与生成”) - 多个
main函数?VS 不会自动报错,但链接阶段必然失败。检查所有.cpp是否都定义了int main()或int wmain() - C++/CLI 项目必须手动设
/clr:右键项目 → 属性 → 配置属性 → 常规 → “公共语言运行时支持”选/clr,否则System::Console::WriteLine这类语法直接编译不过
刚创建的 C# 控制台项目,Program.cs 里没有 class Program 是正常的
.NET 6+ 模板默认启用顶级语句(Top-level statements),所以你看不到传统结构的 class 和 static void Main。整段代码就一行 Console.WriteLine("Hello, World!");,它会被编译器自动包装进隐藏的 Main 方法。
想切回传统写法?删掉现有 Program.cs 内容,手写:
using System;
<p>class Program
{
static void Main()
{
Console.WriteLine("Hello, World!");
}
}</p>
但要注意:改完之后,项目属性里的“启动对象”要同步改成 Program(右键项目 → 属性 → 应用程序 → 启动对象),否则运行时报 找不到适合入口点的方法。
- 目标框架选
.NET 8.0还是.NET Framework 4.8?前者跨平台、新特性多;后者仅限 Windows,但兼容老旧 COM 组件和某些 Win32 API - 新建 Azure Functions 项目时,“函数应用名称”不能含下划线或连字符——它会直接变成 C# 命名空间,
My-Function会导致编译错误CS1001: 应输入标识符
项目创建本身只是起点,真正卡住人的往往是模板背后的隐式配置:比如 WPF 项目默认不引用 PresentationFramework,C++/CLI 项目默认不开启 /clr,空项目连 main 都要自己加。别急着写业务逻辑,先花三十秒确认这些基础项是否就位。










