关键在于选对模板并确认目标框架:Class Library (.NET)(如.NET 8.0)为现代跨平台首选,.NET Framework版仅限Windows且兼容性差,创建后须核对csproj中TargetFramework、PackageId、Version及LangVersion等配置。

直接创建类库项目,关键不是选“类库”就完事,而是得确认目标框架和项目结构是否匹配后续用途——比如你要打 NuGet 包,.NET Framework 和 .NET Standard 或 .NET(如 .NET 6 及以上)生成的 .dll 兼容性完全不同。
选对模板:不是所有“类库”都叫 Class Library
在 Visual Studio 的“创建新项目”窗口里搜“类库”,会出来多个结果。必须区分清楚:
-
Class Library (.NET Framework):生成面向旧版 Windows 桌面运行时的 DLL,仅限 Windows,不能被 .NET Core/.NET 5+ 项目直接引用(除非加兼容包) -
Class Library (.NET Standard):已逐步淘汰,.NET 5+ 不再推荐,新项目别选 -
Class Library (.NET)(或显示为.NET 6、.NET 8等):现代默认选择,跨平台、可被所有新版 .NET 项目直接引用,NuGet 包发布首选
如果你看到模板名里带“Windows”或“Framework”,大概率是旧版;看到“.NET”且后面跟着具体版本号(如 .NET 8.0),才是当前推荐路径。
配置阶段必须核对 Target Framework
点“下一步”后,在“配置新项目”页填好名称、位置,进入“其他信息”页(或“Additional information”)——这里必须手动确认 Target Framework 值:
Visual Studio 18.8.1 官方固定版本安装引导程序,当前条目使用微软发布历史中的 Professional Web Installer,适合旧项目兼容、环境回退、复现特定构建链和排查版本差异等场景。
- 如果做通用工具库,选
.NET 6.0或更高(如.NET 8.0),兼顾新旧项目兼容性 - 如果明确只供 ASP.NET Core 项目用,可选最新 LTS 版(如
.NET 8.0) - 如果项目要被
.NET Framework 4.7.2应用引用,就得退回到Class Library (.NET Framework)模板,并选对应框架版本
创建完右键项目 → Properties → 看 Target Framework 文本框,不一致就立刻改,别等打包时报错才回头。
生成输出路径和文件名容易被忽略
类库项目默认不生成 EXE,只出 .dll。它放在哪里,取决于你当前的生成配置:
-
Debug配置下,DLL 默认在bin\Debug\net8.0\(或对应框架子目录) -
Release配置下,路径是bin\Release\net8.0\ - 若你后续要用
dotnet pack打 NuGet 包,确保csproj里有<packageid></packageid>和<version></version>,否则dotnet pack会失败并报Missing required property 'PackageId'
不要手动去 bin 目录复制 DLL —— 它只是中间产物;真正要分发的,是 NuGet 包(.nupkg)或经 dotnet publish 输出的自包含目录。
最常被跳过的动作:创建完项目没立刻检查 csproj 文件里有没有 <langversion></langversion> 或隐式引用,尤其当你用到 C# 12 的主构造函数语法时,旧项目模板可能卡在 C# 9;这时候不改语言版本,编译直接挂。

















